word2vecとGloVeが、前者が predicting で後者が counting といわれたり、結果として得られる「女王王女性男性」という関係式が直感的でめでたしめでたしとなったりしていると思うんですが、どちらも predict しているのではないのかとか、何が直感的なのかとかわからなかったので、word2vecとGloVeが何を目指しているかのメモをかきました。
モデルの定式化は全面的に参考文献1. に依っていますが、記事の最初の方と最後の方には私の適当な解釈を多分に含みます。私の誤りは私に帰属します。お気付きの点がありましたらご指摘いただけますと幸いです。
ゴールとして、「もしword2vecが単語類似度タスクに強くGloVeがニュース分類タスクに強い(要出典)のだとしたら、後者は共起行列をつくってから学習し前者はそうでないため、前者は特定の文脈にフィットする解を目指しやすいが後者はあくまで全体の平均を目指し、それゆえに前者は単語類似度タスク(特定の文脈での意味)に強く後者がニュース分類タスク(ニュースを構成する単語全体の意味)に強いのではないか」というような考察を適当ではなくきちんとできるようになりたかったのですが、そこまでいきませんでした。また参考文献1. の 2-7 節に、「単語の分散表現の性能差は各モデルの理論的な側面よりも、実装上の細かいトリックや実験設定に左右されるとの指摘がある.」との記述があります。
参考文献
- 岡崎 直観. 言語処理における分散表現学習のフロンティア(<特集>ニューラルネットワーク研究のフロンティア). 人工知能, 31(2), 189-201, 2016. 言語処理における分散表現学習のフロンティア(<特集>ニューラルネットワーク研究のフロンティア)
- 人工知能学会の学会誌の2016年3月号の記事です。
- Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., Dean, J. Distributed Representations of Words and Phrases and their Compositionality, Proc. of NIPS, pp. 3111-3119, 2013. [1310.4546] Distributed Representations of Words and Phrases and their Compositionality
- word2vecの原論文です。
- https://code.google.com/archive/p/word2vec/
- word2vecの実装があり、architecture: skip-gram (slower, better for infrequent words) vs CBOW (fast) などのメモがあります。
- Pennington, J., Socher, R., Manning, C.. Glove: Global vectors for word representation, Proc. of EMNLP, pp. 1532-1543, 2014. GloVe: Global Vectors for Word Representation - ACL Anthology
- GloVeの原論文です。
- https://nbviewer.jupyter.org/github/DSKSD/DeepNLP-models-Pytorch/blob/master/notebooks/03.GloVe.ipynb
- GloVeの実装です。
まとめ(文字の定義は後述)
skip-gram も GloVe も、結局、単語 の周辺(前後 語など、適当に決める)に出現する単語 の分布 を、内積のエクスポネンシャルによるモデル でフィッティングすることを通して単語 のベクトル表現 を得ようとするのは共通している。- のときは に他ならない。 は規格化定数である。
- と の比に興味があるときは があってもよい(比をとると消える)。
- skip-gram は とし、学習コーパス内に出現するすべての「単語 - その周辺の単語 」の組の条件付き確率 の対数の和 を最大化するように(∴ 交差エントロピーの重み付き和 を最小化するように)学習することを目指す。が、規格化の計算が難しいので による2値分類タスクにしてしまう(正例1個につき負例用の周辺単語を 個サンプリングする)。
- CBOW(その名の通り周辺の単語を先に「カバン」に入れて=足してしまう)はこの最適化をさらに簡略化したものとも捉えられる。
- GloVe は であることに着目して、「 を でフィッティングするタスク」を、「 を でフィッティングするタスク」に読み替える。損失は2乗誤差を採用するが、あまり発生しない「単語 - その周辺の単語 」の組に対しては重みを小さくするようにする。
- そのため、予め のテーブルを用意しておくことになる。
word2vecのモデル
- 学習コーパスを単語列 とする。
- 単語 を中心語とした前後 語の文脈窓を とする。
- skip-gramでは を でモデリングする。
つまり、「文脈窓の中心にどんな単語がきそうか」を、文脈窓内の各単語の「この単語がいる文脈窓の中心にどんな単語がきそうか」の積で表現する(先に各単語からの確率を出して積をとって集約する派)。 - CBOWでは を でモデリングする。
つまり、「文脈窓の中心にどんな単語がきそうか」を、文脈窓内の全単語のベクトルの和で表現する(先に全単語のベクトルを和に集約してから確率を出す派)。
skip-gram
skip-gramでは と考える。 はいわば「単語 を与えたときに単語 が単語 のいる文脈窓の中心語である確率」になる。この をモデル でフィッティングする。ただし、 は単語 の文脈語としてのベクトル、 は単語 の中心語としてのベクトルであり、全単語にこれらのベクトルをどう用意すべきかがフィッティング対象となる。損失関数は以下とする(学習コーパス内のすべての中心語-文脈語の組の確率の積を最大化する=対数確率の和を最小化する)。CBOW(continuous bag-of-words)
文脈窓 に対して、文脈窓内の単語の文脈語としてのベクトルの和を とする。CBOWでは と考える。損失関数は以下となる。GloVeのモデル
GloVeでは、2単語のベクトルの差でそれぞれの単語の周辺に出現する単語の確率分布の比をモデリングすることを通して、単語のベクトル表現を獲得する。但し、「周辺に出現する単語のベクトルと内積をとった上でエクスポネンシャルをとる」というモデルにしたため、結局、個々の単語の確率分布をモデリングすることになっている。- 単語 の周辺に単語 が出現した回数を とする。
- 単語 の周辺に任意の単語が出現した回数を とする。
- 単語 の周辺に単語 が出現する確率は となる。
- に依存する項は の差 にのみ依存する。
- をスカラーに変換するにあたり との内積 をとる。
- を確率分布の比に変換するにあたり、和を変換したものが変換したものの積になるように を採用する(同じ単語どうしの確率分布の比は常に1にならなければならない)。
得られたベクトル表現の性質
これらの手法で得られた単語のベクトル表現は、モデルより、別の単語のベクトル表現との内積が意味をもつ(対数確率をオフセットしたものになる)。もし であれば、- が、単語 が単語 の周辺にいそうな度合いになる。
- が、単語 が単語 の周辺にいそうな度合いになる。
- は、それらの差になる。
- 女性男性スカート は、正になりそう(※ 適当な例)。
- 女性男性ズボン は、負になりそう(※ 適当な例)。
- は、単語 が単語 の周辺にいそうな度合いに先の差を足したものになる。
- 王女性男性スカート は、「王」の文脈に「スカート」がいそうな度合いを大きくしたもの。
- 王女性男性ズボン は、「王」の文脈に「ズボン」がいそうな度合いを小さくしたもの。
- 同様に、任意の単語 について、王女性男性 は、「王」の周辺に がいそうな度合いに、「女性」の周辺に がいそうな度合いを足して、「男性」の周辺に がいそうな度合いを引いたもの。