- 実装した多層パーセプトロンでCBOWもどきやってみたけど, 遅すぎる.
- word2vecの実装読めば, 速くするヒントが見えてくるかもしれない.
- word2vec
- コード
- Efficient Estimation of Word Representations in Vector Space
- CBOW, skip-gramについての論文
- Distributed Representations of Words and Phrases and their Compositionality
- コード内で実装されている, Hierarchical Softmaxや Negative Samplingについての論文.
- qitta
- word2vec読んだ人のqitta
-
実装がC.
-
multi threadで実行可能.
- thread毎に, トレーニングデータの読み込み開始位置を変え, 学習する単語数を制限している.
- その後全部終わるのを待って, 保存.
-
exponentialの計算を事前にやっておいて, Train中は参照だけ.
-
学習係数かをどんどん下げるように変更している.
- 単純にstart時のalphaに, 1 - 進捗率をかけている. 学習が進むにつれて, alphaが小さくなるように.
- alpha下限は, start * 0.0001
-
Hierarchical Softmax
- softmax関数の分母の計算を簡略化?.
- 直接単語を特定するベクトルを学習するのではなく, 単語をハフマン符号化したものを学習対象としている.
- 辞書の最大数3001万語, 符号化の最長が40に設定されてるから, 最大で3000万ノードを40ノードに減らすことができるということだろう.
- なるほど. あたまいい.
- huffman符号化するだけが, Hierarchical Softmaxではなかった. 更新式にも影響する.
-
hidden layerの励起関数ないな...
-
出力層の重み更新式が通常のバックプロパゲーションと異なる.
- hidden layerの励起関数ない影響か?, それとも, 階層型softmaxの影響か?
- 出力層: 勾配に学習係数, 隠れ層の入力をかけたものを足す.
- 隠れ層: 勾配に学習係数, 隠れ層の重みをかけたものを足す(多分入力は1だからだろう).
- 計算しているexptableが, softmaxでなく, シグモイド関数.
- この理由は, Hierarchical Softmaxを使っているため. 論文に書いてある.
-
すべてのトレーニングデータを1回学習したら終了している.
- 誤差を確認して, 収束するまで繰り返すということをしていない.
- 励起関数がないこと, 更新式が通常と異なることとかと関係あるのか?
-
言語モデルは, CBOW/skip-gram
- cbow: 1つの単語をその周辺の単語で表現する. NNLMとは違い, 1つの入力ベクトルで表現している. それが, Book of Wordのいみ.
- skip-gram: 1つの単語から予測される周辺の単語を学習. 実装の法はまだ読んでない.
-
negative sampling
- 入力-隠れ層間の重みを更新する前に, 逆伝播させたときの隠れ層のnet値を修正する.
- 仮想のロジスティック回帰を考える.
- 隠れ層のnet値を入力とする.
- 今の単語はlabel=!, それ以外はlabel=0 として, 隠れ層のnet値とロジスティック回帰の重みを更新する.
- なぜこれで, 結果が良くなるかは, Noise Contrastive Estimation(NCE)を理解した方が良いかな.
-
subsampling of the frequent words
-
出現頻度が多い単語では(閾値以上), ランダムで読み込まない.
-
demoでは, トレーニングデータに含まれる単語の、0.001% 以上を閉めていたら, その対象としている.
-
Hierarchical Softmax
-
softmaxの近似手法
-
単純に, 辞書=>huffman符号化したものを学習という感じではない.
-
出力層の重み更新式が通常のバックプロパゲーションと異なる理由はこれ.
-
hierarchical softmaxにおいて、事後確率は(3)式のように定義される.
-
なぜ, (3)式がでてくるかは, 分からなかった.
-
Negative Sampling
-
Noise Contrastive Estimation(NCE) をシンプルにしたもの.
-
良いモデルは, データとノイズを区別できる. ロジスティック回帰を使って. ってどういうこと?
-
トレーニングデータが小さいときは, k=5-20, 大きいときは, k=2-5が良いと.
-
(4)式わからん.
-
subsampling of the frequent words
-
いっぱい出てくるtheとかaとかは, 他の少ない単語より情報量が少ない.
-
「100万サンプルくらい学習したら, もう変えなくてもいいんじゃない?」
-
学習の速さと, レアな単語ベクトルの精度がよくなった.
-
represent meaning of sentences by composing the word vectors