word2vec
単語の間の関係性を定義できる
IT 用語辞典 | e-Words
単語を意味的な特徴を持つ数値ベクトルとして表現する手法。
大量のテキストデータから単語の意味を学習し、高次元のベクトル空間上の数値として表現する。
単語を固定長ベクトルに変換することで、言葉同士の類似度や関係性を計算することができるようになる。
主な学習モデル2つ。いずれもNN(ニューラルネットワーク)を用いて学習され、大規模コーパスに対して効率的に適用できるように工夫されている。
CBOW(Continuous Bag-of-Words Model)
スキップグラム(Continuous Skip-Gram Model)
✂ word2vecをハッシュにするトンチキなアイデア
Efficient Estimation of Word Representations in Vector Space | arXiv:1301.3781 (cs)
3.1 Continuous Bag-of-Words Model
フィードフォワードNNLMに似ているが、非線形隠れ層が削除され、射影行列だけでなく射影層がすべての単語で共有される。
そのため、すべての単語が同じ位置に射影され、単語ベクトルが平均化される。
履歴における単語の順序が射影に影響を与えないため、このアーキテクチャをBag of Wordsと呼ぶ。
入力に未来の単語4つと過去の単語4つを用いた対数線形分類器を構築することで、最高の性能が得られた。
学習基準は、現在の単語を正しく分類することである。
過去を前、現在を真ん中、未来を後と読み替えても良い。
学習効率は
$ Q=N\times D+D\times\log_2 V
$ N:過去の単語の個数
$ D:入力の次元数
$ V:語彙の大きさ
3.2 Continuous Skip-gram Model
CBOW が文脈に基づいて現在の単語を予測するのに対して、Continuous Skip-gram Model は同じ文中の別の単語に基づいて単語の分類を最大化しようとする。
各現在の単語を連続射影層を持つ対数線形分類器への入力として使用し、現在の単語の前後の一定範囲内の単語を予測する。
範囲を広げると、結果として得られる単語ベクトルの質が向上するが、計算量も増加する。
通常、遠い単語は近い単語よりも現在の単語との関連性が低いため、訓練例において遠い単語のサンプル数を減らすことで、遠い単語の重みを小さくする。
学習効率は
$ Q=C\times(D+D\times\log_2V)
$ C:単語間の距離の最大
$ D:入力の次元数
$ V:語彙の大きさ
作り方
学習時に入力される単語はトークン化されている事が想定されている。
ナイーブな one-hot ベクトル:トークンの連番IDから one-hot ベクトルを作成する。
これを論文中のモデルに入力、学習させることでベクトルを圧縮できる。
この圧縮により得られたベクトルが単語ベクトルである。
多分これであってるはずSummer498.icon
感想Summer498.icon
ニューラルネットワークと呼ぶ際の本質的な部分である非線形性が削除されているため、これはニューラルネットワークの技術として理解するよりも、ベクトル空間の次元圧縮の際に用いる基準を示したものと理解するほうが分かりやすいのではないだろうか。
ニューラルネットワークと呼ぶ際の本質的な部分である非線形性が削除されているため 多分出来上がったものを使う時のことしか考えておらず、学習過程がイメージから抜けてるんだと思うnishio.icon
つまり、次元数$ Dをもつ大きなベクトル$ \bm x_Dが並んだの時系列データが存在する際に、次元数$ \tilde D\ll Dを持つ小さなベクトル$ \bm x_{\tilde D}=\bm f_{\tilde D\leftarrow D}(\bm x_D)を得る圧縮器$ \bm f_{\tilde D\leftarrow D}を得る学習フレームワークが CBOW や Skip-gram であり、それにより得られた圧縮器が word2vec であると考えられる。
圧縮器は変換器でもあるため、word2vec は変換器でもある。
非線形性活性化は別にニューラルネットワークの本質じゃなかったわSummer498.icon
撤回.iconニューラルネットワークと呼ぶ際の本質的な部分である非線形性が削除されているため、