word2vec
本来はプログラムやツール類をさす言葉だが、文脈によってはニューラルネットワークモデル(CBOWモデルとskip-gramモデル)を指す場合もある。
カウントベース
学習するデータ
コーパスの全体の統計データから1回の学習で単語の分散表現を得る
学習速度
現実的には、コーパスで扱う語彙数が巨大になり(例えば、英語だと100万以上)、SVDは$O(n^3)$の計算コストがかかるので、スーパーコンピュータでも太刀打ちない。
更新作業(新しい単語を追加する)
ゼロから計算を行う
性質
単語の類似性がエンコードされる
単語の類似性に関する定量評価
推論ベースと優劣つけがたい
推論ベース
学習するデータ
コーパスの一部を何度も見ながら学習する
学習速度
カウントベースより早い
更新作業(新しい単語を追加する)
これまで学習した重みを初期値として、新しい単語のみ再学習できる
性質
単語の類似性 + 単語間のパターン(king-man + woman = queen)がエンコードされる
単語の類似性に関する定量評価
カウントベースと優劣つけがたい
推論ベースの手法
CBOW - Continuous bag-of-words
周囲の複数ある単語(コンテキスト)から中央の単語(ターゲット)を推測する)。精度は劣っているが、求める損失は常に1つなのでskip-gramより高速。
skip-gram
中央の単語(コンテキスト)から周囲の複数ある単語(ターゲット)を推測する。精度は優れているが、コンテキストの数だけ損失を求める必要があるため、計算コストが高くなる。
比較
手法 | 速度 | 分散表現の精度 |
---|---|---|
CBOW | better | worse |
skip-gram | worse | better |
おまけ
logの性質
\log{xy} = \log{x} + \log{y}
証明
\log_2{xy} = \log_2{x} + \log_2{y} \\
\log_2{x} = a \\
\log_2{y} = b \\
x = 2^a \\
y = 2^b \\
xy = 2^{(a+b)} \\
\log_2{xy} = a + b = \log_2{x} + \log_2{y}