stop-the-world

takuya-a のブログ

Information Retrieval and Web Search まとめ(19): 分散表現

前回は決定木によるテキスト分類について説明した。今回は、情報検索での分散表現の利用について解説する。

この記事は Information Retrieval and Web Search Advent Calendar 2020 の19日目の記事です。

adventar.org

単語の表現

  • ユーザの検索意図をどうやって頑健にマッチするか?
    • クエリを(字面通りではなく)理解 (understand) したい
      • クエリが Dell notebook battery size だったとき、 Dell laptop battery capacity に言及している文書にマッチさせたい
      • クエリが Seattle motel だったとき、 Seattle hotel を含む文書にもマッチさせたい
    • キーワードベースの情報検索システムでは難しい
      • スペル訂正、ステミング、小文字への正規化 (case folding) 役立つときもあるが限定的
  • クエリ拡張 (query expansion)
    • 単語の類似度を使うことができる
      • 手で構築されたシソーラス(類語辞書)
      • 単語類似度の尺度
        • 大規模なコレクションから計算されたもの
        • Web などのクエリログから計算されたもの
  • 文書拡張 (document expansion)
    • Web ページにおけるアンカーテキスト (anchor text) でシノニムを解決できるかもしれない
      • Web ページによっては使えないこともあるし、ハイパーリンクのないコレクションでは不可能

検索ログによるクエリ拡張

  • 文脈のないクエリ拡張は失敗する
    • wet ground ~ wet earth なので、ground --> earth と拡張すると...
    • ground coffee(挽いたコーヒー豆) != earth coffee
  • 同じユーザの context-specific なクエリ書き換えのログから学習することはできる
    • Hinton word vector
    • Hinton word embedding
    • この文脈では vector ~ embedding

シソーラスの自動生成

  • 文書のコレクションを解析することでシソーラスを自動生成することができる
  • シンプルなものだと、タームの共起行列から計算する方法がある

f:id:takuya-a:20201220172432p:plain
自動生成されたシソーラスの例

タームの関係性の表現

  • 標準的な符号化方法だと、各タームはそれぞれ1つの次元に対応する
    • 異なるタームは関係がないものとして扱われる
    • たとえば、 hotel を 3 つ含む文書と、 motel を 1 つ含む文書があったとして、それらの文書ベクトルは直交するので内積をとっても 0 になってしまう
  • Query translation model [Berger and Lafferty (1999)]
    • 基本的な情報検索のスコアリングは  q^{T} d
    • スコアリングを  q^{T} W d と修正して、W のパラメータを学習する
    • しかし、その行列 W が疎であるという問題は解決しない(W の次元は  10^{10} 以上)
  • 解決策:低次元密ベクトル
    • イデア:固定長の低次元密ベクトルに、最も重要な情報を詰め込む
    • 通常、 25 - 1000 次元
    • 高次元の疎なカウントベクトルから、低次元の「単語埋め込み (word embedding)」へと変換する
  • 古典的な方法:潜在意味インデキシング/潜在意味解析 (latent semantic indexing/analysis)
    • 特異値分解 (singular value decomposition; SVD) を使う
    • 1990 年代では一般的だった
    • 情報検索システムでは効率的な実装は難しい(密行列なので)

ニューラル埋め込み

  • 単語を密ベクトルで表現する
    • そのベクトルは、その文脈で登場する他の単語を予測できるようなものが選ばれる
    • 他の単語もベクトルで表現されている
 banking = \left(
  \begin{array}{c}
    0.286 \\
    0.792 \\
    -0.177 \\
    -0.107 \\
    0.109 \\
    -0.542 \\
    0.349 \\
    0.271
  \end{array}
\right)

ニューラルネットワークと単語埋め込み

基本的なアイデア

  • 中央の単語 (center word)  w_t から、周辺の単語 (context word) を予測するモデルを定義する
    •  p(context \mid w_t)
  • この上に損失関数を定義し、大規模なコーパスからモデルを学習する
    • t の位置をずらしながら学習していく
    • この損失関数を最小化するような単語のベクトル表現が学習される

低次元の単語ベクトルの学習

  • 逆伝搬誤差 (back-propagating error) によってベクトル表現を学習 [Rumelhart et al., 1986]
    • 古い方法
  • ニューラル確率言語モデル [Bengio et al., 2003]
  • NLP from Scratch [Collobert & Weston, 2008]
  • Word2vec(よりシンプルで速いモデル) [Mikolov et al. 2013]
    • バイリニア (bilinear) で速い
  • GloVe(matrix factorization と接続) [Pennington, Socher, and Manning 2014]
    • バイリニア (bilinear) で速い
  • ELMo、ULMfit、BERTトークンごとのベクトル表現、Deep contextual word representation)
    • 現在の stage of the art

Word2vec

  • Word2vec は、ある単語 (center word) とその周辺の単語 (context words) を予測するモデル
  • 2つのアルゴリズムがある
    • Skip-gram (SG)
      • (ポジションに対して独立な)ターゲットの単語から周辺の単語を予測する
    • Continuous Bag of Words (CBOW)
      • bag-of-words の文脈から、ターゲットの単語を予測する
  • 訓練方法
    • 階層的ソフトマックス (hierarchical softmax)
    • ネガティブサンプリング
    • ナイーブソフトマックス (naive softmax)

Skip-gram

  • Skip-gram で  P(w_{t+j} \mid w_t) を計算する例
    • banking が center word  w_t
    • ウィンドウサイズは 2

f:id:takuya-a:20201220164632p:plain
Skip-gram の例

  • 2つのパラメータ行列
    •  W_{in} は center word の埋め込みとなる(行が単語を表す)
    •  W_{out} は context word の埋め込みとなる(列が単語を表す)

f:id:takuya-a:20201220164713p:plain
Word2vec が学習する2つのパラメータ行列

Word2vec の線形性

  • Word2vec による単語のベクトル表現は、類似度と類似度の次元を、とてもうまくエンコードする

構文的な関係性

 x_{apple} - x_{apples} \approx x_{car} - x_{cars} \approx x_{family} - x_{families}

意味的な関係性 [Semeval 2012 task 2]

 x_{shirt} - x_{clothing} \approx x_{chair} - x_{furniture}
 x_{king} - x_{man} \approx x_{queen} - x_{woman}

情報検索への応用

ニューラルネットによるリランキング

Dual Embedding Space Model (DESM)

f:id:takuya-a:20201220164836p:plain
([Mitra et al. 2016] Figure 2) 1つの context word を考慮した Word2vec (CBOW) モデルのアーキテクチャ。W_IN と W_OUT は訓練によって学習される重み行列で、それぞれ IN と OUT の単語埋め込み空間に対応する

f:id:takuya-a:20201220164953p:plain
([Nalisnick et al. 2016] Figure 1) "Albuquerque"(アメリカの都市)を含む文書。緑の単語は "Albuquerque" との IN-OUT 類似度スコアが閾値より高かったもの。(a) は Albuquerque に関する文書で、 (b) はその都市についてただ言及しただけの記事

f:id:takuya-a:20201220165040p:plain
([Nalisnick et al. 2016] Table 1) "yale", "seahawks", "eminem" に対する、コサイン類似度で最近傍の単語

BERT

  • BERT: Devlin, Chang, Lee, Toutanova (2018)
  • Transformer ベースの DNN
  • トークンごとの表現を(コンテキストありで)出力する
  • クエリや文書の表現も同様に作れる
    • もしくはクエリと文書を同時に埋め込み、適合スコアを求める
  • 非常に効果的

f:id:takuya-a:20201220165115p:plain
([Devlin et al. 2018] Figure 3 (left)) BERT の事前学習モデルのアーキテクチャ

講義資料

参考資料