Zenn
👨‍👩‍👧‍👦

[論文紹介] Neural Demographic Prediction using Search Query

1. はじめに

こんにちは株式会社D2C(以下D2C)でデータサイエンティストをしている井上です。
本記事では、WSDM 2019で発表された論文「Neural Demographic Prediction using Search Query」を紹介します。

1.1 記事の要約

  • 検索クエリからデモグラフィック(性別や年齢)予測を行うためのHURA(Hierarchical User Representation with Attention)モデルを提案した論文
  • HURAモデルはWord Encorder, Query Encoder, User Classificationの3段階から構成される階層型ニューラルネットモデル
  • 性別予測および年齢予測の両タスクにおいて、ベースラインを上回る予測精度を達成

2. 背景

2.1 背景と動機

  • デモグラフィック予測の重要性
    インターネット上での年齢や性別といったユーザ属性は、パーソナライズされた広告(例:女性にドレスの広告、男性に髭剃りの広告)やレコメンデーションシステムなど、さまざまなアプリケーションで重要な役割を果たします。しかし、ユーザのデモグラフィック(以下、デモグラ)データを入手することは非常に困難です。

  • 検索クエリの利用
    多くのユーザは日常的に検索クエリを発行しており、クエリの内容や書き方にはユーザの属性に関連する特徴(例:「cool」など若者が多用する表現、または「presbyopic glasses」といった高齢者向けの用語)が含まれる可能性があります。ただし、検索クエリは短文でありノイズも多い(amazon.comやyoutubeなど)ため、効果的に有用な情報を抽出する手法が求められます。

2.2 HURAの概要

HURAは、ユーザ単位の複数の検索クエリから、階層的にデモグラを学習するモデルです。
HURAモデルのアーキテクチャ(出典:https://www.atailab.cn/ir2019fall/pdf/zengqin.pdf

  • 第一段階(Word Encoder):各検索クエリを単語ごとに分解し、単語間の関連性を捉えます
  • 第二段階(Query Encoder):複数のクエリ表現から、クエリ同士の関連性を捉えます
  • 最終段階(User Classification):得られたユーザ表現を基に、Softmax層で年齢や性別などのカテゴリに分類します

3. モデルの詳細構成

3.1 Word Encoder(単語エンコーダ)

検索クエリは一般的に複数のキーワード(例:peppa pig website)で構成されるため、各クエリの中で局所的な文脈や重要なキーワードを抽出することが非常に重要です。例えば、「pig」という単語は「peppa pig」という文脈では子ども向けキャラクターを指し、年齢予測に役立ちますが、「domestic pig」という文脈では家畜を指し、デモグラ予測にはほとんど役立たないです。Word Encoderは以下の3層から構成されます。

3.1.1 単語埋め込み(Word Embedding)

まず、検索クエリは単語の列として表されます。ある検索クエリ qq を次のように表します:

q=[w1,w2,...,wM] q = [w_1, w_2, ..., w_M]

ここで、

  • wiw_i はクエリ内の ii 番目の単語
  • MM はクエリ内の単語数

各単語 wiw_i は、事前学習された単語埋め込み行列 EE を用いてベクトル wiw_i に変換されます。

wi=E[wi] w_i = E[w_i]

ここで、

  • ERV×DE \in \mathbb{R}^{V \times D} は語彙サイズ VV と埋め込み次元数 DD を持つ行列
  • wiRDw_i \in \mathbb{R}^{D} は単語 wiw_i の埋め込みベクトル

この処理によって、元々の単語 wiw_i を意味的な情報を持つ低次元のベクトル wiw_i に変換します。なお、これらの埋め込みは、学習データ(検索クエリ)に対して事前学習済みのWord2Vecを使用しています。

3.1.2 単語レベルCNN(Convolutional Neural Network)

上述のように検索クエリの単語列は単なる単語の羅列ではなく、語順やフレーズの構造が意味を持ちます。例えば、

  • peppa pig website」 → 「peppa pig (キャラクター)」+「website (ウェブサイト)」
  • domestic pig」 → 「domestic (家畜)」+「pig (ブタ)」

このように、単語の隣接関係を考慮することで、より適切な表現を学習できます。そのため、Convolutional Neural Network(CNN) を用いて局所的なコンテキスト情報を捉えます。

各単語 wiw_i に対して、CNN を適用してその周辺の情報を考慮した特徴量 cic_i を計算します。

ci=ReLU(fwTwiKw12:i+Kw12+bw) c_i = \text{ReLU} ( f_w^T \cdot w_{\lfloor i - \frac{K_w - 1}{2} \rfloor : \lfloor i + \frac{K_w - 1}{2} \rfloor} + b_w )
  • ciRFwc_i \in \mathbb{R}^{F_w} : 単語 wiw_i の局所コンテキストを考慮した特徴ベクトル
  • fwf_w : CNN のフィルター
  • KwK_w : 畳み込みのウィンドウサイズ(例: 3単語分を1つのフィルターで処理する場合 Kw=3K_w=3
  • wiKw12:i+Kw12w_{\lfloor i - \frac{K_w - 1}{2} \rfloor : \lfloor i + \frac{K_w - 1}{2} \rfloor} : ii 番目の単語を中心とする KwK_w 個の単語のベクトル
  • bwb_w : バイアス項

3.1.3 単語レベルAttention

検索クエリ内のすべての単語が同じ重要度を持つわけではありません。例えば、

  • birthday gift for wife」 の場合、wife は性別推定に有効
  • the elder scrolls online」 の場合、elder は年齢推定には有効でない

そのため、各単語の重要度を考慮して重みをつける Attention機構 を導入します。

Attention weightの計算

まず、単語ベクトル cic_i を非線形変換します。

viw=tanh(VwTci+bw) v_i^w = \tanh(V_w^T \cdot c_i + b_w)

ここで、

  • vwRTwv_w \in \mathbb{R}^{T_w} は変換後の特徴ベクトル
  • VwRFw×TwV_w \in \mathbb{R}^{F_w \times T_w} は重み行列
  • bwRTwb_w \in \mathbb{R}^{T_w} はバイアス項

次に、単語ごとのAttention weigh αwi\alpha_{wi} を計算します。

αiw=exp(vwTviw)j=1Mexp(vwTvjw) \alpha_i^w = \frac{\exp(v_w^T \cdot v_i^w)}{\sum_{j=1}^{M} \exp(v_w^T \cdot v_j^w)}

この式によって、重要な単語には高い重み αwi\alpha_{wi} が与えられ、重要でない単語は低い重みになります。

クエリの最終表現

最後に、各単語ベクトルをAttention weighで加重平均し、クエリの最終特徴ベクトル qq を得ます。

q=i=1Mαiwci q = \sum_{i=1}^{M} \alpha_i^w \cdot c_i

この qq は、単語の局所コンテキストとAttention機構によって、情報量の多い単語に重点を置いた表現になっています。


3.2 Query Encoder(クエリエンコーダ)

Word Encoderで得られた各検索クエリの表現 qq をさらにユーザの全体的な行動パターンを反映した表現に統合します。ここでは、隣接するクエリ間の局所的な関連性や、全クエリの中で有用なものの重み付けが行われます。

クエリレベルのCNN

検索クエリ q1,q2,...,qNq_1, q_2, ..., q_N は時間順に並んだ短いテキストです。これらは隣接するクエリと関連していることが多いため、局所的なコンテキストを捉えるために CNN を適用 します。

qi=ReLU(fqTqiKq12:i+Kq12+bq) q'_i = \text{ReLU} \left( f_q^T \cdot q_{\lfloor i - \frac{K_q - 1}{2} \rfloor : \lfloor i + \frac{K_q - 1}{2} \rfloor} + b_q \right)
  • qiRFqq'_i \in \mathbb{R}^{F_q} :クエリ qiq_i の局所的コンテキストを考慮した特徴ベクトル
  • fqf_q :CNNのフィルター数
  • KqK_q :畳み込みのウィンドウサイズ(例: Kq=3K_q = 3 なら、前後1つずつのクエリと共に処理)
  • qiKq12:i+Kq12q_{\lfloor i - \frac{K_q - 1}{2} \rfloor : \lfloor i + \frac{K_q - 1}{2} \rfloor} :対象クエリの前後 KqK_q 個を含むコンテキストウィンドウ
  • bqb_q :バイアス項

この畳み込み層を複数のフィルターで適用し、それらの出力を統合することで、クエリの局所的な関係を捉えた特徴ベクトル qiq'_i を得ます。


クエリレベルのAtention (Query-Level Attention Network)

異なる検索クエリは、人口統計予測に対して異なる影響を与えます。多くの検索クエリは、このタスクにとって無関係またはノイズとなる可能性があり、すべての検索クエリが同じ重要度を持つわけではありません。例えば:

  • birthday gift for grandson」 → 年齢推定に有効
  • google maps」 → 情報が少なく、分類に役立たない

そのため、各クエリの重要度を学習し、適切な重みを与えるためのAttention機構 (Attention Mechanism) を導入します。

viq=tanh(VqTqi+bq) v_i^q = \tanh(V_q^T \cdot q'_i + b_q)
αiq=exp(vqTviq)j=1Nexp(vqTvjq) \alpha_i^q = \frac{\exp(v_q^T \cdot v_i^q)}{\sum_{j=1}^{N} \exp(v_q^T \cdot v_j^q)}
  • vqRTqv_q \in \mathbb{R}^{T_q} :クエリ qiq_i の変換後の特徴ベクトル
  • VqRFq×TqV_q \in \mathbb{R}^{F_q \times T_q} :Attentionネットワークの重み行列
  • bqRTqb_q \in \mathbb{R}^{T_q} :バイアス項

この式によって、重要なクエリには高い重み αqi\alpha_{qi} が与えられ、重要でないクエリは低い重みになります。

ユーザの最終特徴表現

最後に、Attention weighを考慮したクエリの加重和を計算し、ユーザの特徴ベクトル uu を得ます。

u=i=1Nαiqqi u = \sum_{i=1}^{N} \alpha_i^q \cdot q'_i

ここで、uu はすべての検索クエリの情報を統合したユーザの特徴ベクトルであり、次の分類器(Softmax層)へ入力されます。


3.3 User Classification(ユーザ分類層)

ユーザ分類層は、ユーザの検索クエリから学習された隠れた表現に基づいて、ユーザを年齢予測における年齢グループや、性別予測における性別カテゴリに分類するために使用されます。この層では、Softmax層を使用して、ユーザuuが異なるデモグラカテゴリに属する確率を計算します。

pu=softmax(WTu+bu) \begin{aligned} p_u = \text{softmax}\Bigl(W^T \cdot \mathbf{u} + b_u\Bigr) \end{aligned}
  • WRd×CW \in \mathbb{R}^{d \times C}ddはユーザ表現の次元、CC はクラス数
  • buRCb_u \in \mathbb{R}^{C} : バイアス項

モデルの訓練段階では、損失関数としてクロスエントロピーを使用し、全体の目的関数は次のように定式化されます。

L=u=1Uc=1Cyu,clogPu,c \mathcal{L} = - \sum_{u=1}^{U}\sum_{c=1}^{C}y_{u,c} \log P_u,c
  • yu,cy_u,c : ユーザuuのカテゴリccにおける正解ラベルあり、ccが正しい場合は1、そうでない場合は0になる
  • UU : 訓練に使用するユーザ数

予測段階では、pup_uの中で最もスコアが大きいラベルが、ユーザの予測されるデモグラカテゴリとして選択されます。


4. 実験設定と評価

4.1 データセット

ランダムサンプリングしてきた25,000人のユーザから、6か月間の検索クエリと年齢カテゴリが取得されています。なお、ユーザ1人あたり平均約171.6クエリ、各クエリの平均単語数は約3.42語。

  • Age Dataset
    以下のように年齢カテゴリは6段階(例: 18歳未満、18-24歳など)としています。

  • Gender Dataset
    25,000人のユーザのうち、男性が13,349人、女性が11,651人となっています。

4.2 実験設定

その他、細かな実験設定等は以下のようになります。
データ分割
• 訓練用データ: 20,000人(80%)
• テスト用データ: 5,000人(20%)
• 訓練データの10%を検証用に使用

精度指標

  • Accuracy
  • Macro-averaged Fscore

Word Embedding

  • 各単語は事前学習済みの word2vecを使用
  • 埋め込み次元:200

両タスクのCNN

  • ウィンドウサイズ:3
  • フィルター数:300

学習設定

  • オプティマイザ:RMSProp
  • バッチサイズ:100
  • ドロップアウト:0.2
  • Early Stopping:検証データの損失が 3エポック 連続で減少しない場合に学習を停止

ベースライン手法

  • SVM, LR, LinReg, FastText, CNN, LSTM, HAN(文章分類のためのHierarchical
    Attention Networks、本実験では、各ユーザをdocumentとし、検索クエリをsentenceとみ
    なす)
  • 各実験は独立して10回繰り返し、平均結果を示す

5. 結果

表:Ageデータセットでの実験結果(出典:https://www.atailab.cn/ir2019fall/pdf/zengqin.pdf

表:Genderデータセットでの実験結果(出典:https://www.atailab.cn/ir2019fall/pdf/zengqin.pdf

提案手法であるHURAモデルが両タスクにおいてベースラインより精度が上回ることがわかります。

従来の機械学習手法に基づいたデモグラ予測方法との比較
SVM、LR、およびLinRegなどの従来の機械学習手法に基づいたデモグラ予測方法よりも優れた性能を発揮できます。これは、これらの手法で使用されるユーザを表現するための特徴が手作業で作成されており、検索クエリの複雑な意味や文脈を捉えることができないためです。

ニューラルネットワークベースモデルとの比較
FastText、CNN、およびLSTM など、ニューラルネットワークに基づく多くの既存の人口統計予測方法にも優れています。これらの手法では、同じユーザのすべての検索クエリが長いテキストとして連結され、ユーザ表現が構築されます。したがって、各個別の検索クエリの意味情報を効果的に捉えることができず、これらの手法では有益な検索クエリとあまり有益でない検索クエリを区別することができません。多くの検索クエリはデモグラ予測にとって有益でなくノイズとなるため、これらの手法は検索クエリに基づく年齢および性別予測には最適でない可能性があります。

HURAモデルでは、ユーザ表現のために階層的なニューラルモデルを使用しています。このモデルは、まずword encoderを使用して各検索クエリの単語から表現ベクトルを学習し、その後、query encoderを使用して検索クエリに基づいて各ユーザの表現ベクトルを学習します。HURAモデルは、予測タスクへの寄与度合いに基づいて異なる単語とクエリに異なる重みを与えるため、単語レベルおよびクエリレベルのAttention Networkを組み込んでいます。異なる単語や検索クエリはデモグラ予測に対して異なる有益性を持っているため、HURAモデルはこれらの既存のNNベースのデモグラ予測手法よりも検索クエリからユーザの年齢と性別を予測するのに適していることが言えるようです。

HANとの比較
HAN法ではLSTMネットワークを使用して、単語から文の表現を学習し、文から文書の表現を学習するためです。この手法は文書分類に適しており、単語と文の順序情報を捉えることができます。しかし、検索クエリはキーワードの組み合わせであるため、文とは大きく異なります。さらに、文書内の文が通常お互いに強い関連性を持っている(例えば、同じトピックに従っている)のに対し、同じユーザからの検索クエリにはより多くの多様性があります。例えば、ユーザは異なる検索セッションでさまざまな種類の情報を検索することがあります。隣接する時間帯の検索クエリは互いに関連性があるかもしれませんが、長期間にわたる検索クエリ間の関連性は通常非常に弱いです。したがって、CNNを使用して単語や検索クエリの局所的文脈を捉えることは、クエリ表現とユーザ表現においてより適切であると筆者は述べています。

図:ageデータセットの混同行列(出典:https://www.atailab.cn/ir2019fall/pdf/zengqin.pdf

最も多くの誤分類は、隣接する年齢カテゴリにユーザを分類することによって生じていることがわかります。例えば、年齢カテゴリ4の多くのユーザが年齢カテゴリ5に誤分類されています。この結果は直感に一致しており、隣接する年齢カテゴリのユーザ間で検索内容や書き方に多くの重なりがあるためのようです。


6. 補足

6.1 CNNとAttentionの役割

  • CNN層

    • 単語レベルでは、近傍単語間の依存関係(例:「peppa」と「pig」の関係)を捉えることで、意味的なつながりを抽出します。
    • クエリレベルでは、時間的に近いクエリ間の関連性(同じ意図の異なる表現など)を補完的に取り込みます。
  • Attention機構

    • 各単語や各クエリの重要度を動的に算出することで、ノイズの多いクエリや共通語(例:"login", "amazon.com")の影響を抑え、予測に有用な部分に重みを集中させます。

7. 感想

本記事では、WSDM 2019で発表された論文「Neural Demographic Prediction using Search Query」の紹介を行いました。
個人的に、検索クエリのみでデモグラ予測できるため大変興味深いと感じた一方で、検索クエリと性別等のデモグラをセットとしたデータセットを手に入らないのが一番の難点であると感じました。機会があれば、日本語の検索クエリで試してみたいと思いました。


D2C m-tech

Discussion

ログインするとコメントできます