Matter Mind Meaning

思ったことを忘れてしまわないように書き留める

ニューラル言語モデルを高速化する2つの方法

ニューラル言語モデルニューラルネットワークによりn-gram確率を予測するモデル)は、2つの工夫をすることで、テスト時(学習が終わって、モデルを実際に使う段階)に高速化が可能である。

 

(1)出力層の正規化

ニューラル言語モデルは出力層にsoftmax関数を使用する。このとき確率を正しく計算するためには正規化係数を計算しなければならないが、計算量は語彙数に比例し、この部分が計算時間の主なボトルネックとなる。

 

もしもsoftmax関数への入力がはじめから正規化されているならば、任意の単語の出現確率を他の単語に関して考慮すること無しに求めることが出来る。このためには訓練時に正規化係数 Z(x_i) が1になることを奨励するように目的関数 L を定義すればよい。

 

                             L = ∑_i [ log(P(x_i)) - α log^2(Z(x_i)) ]

 

(2)中間層のメモリ・ルックアップ

さらに、ニューラルネットワークの中間層の値を入力n-gramのそれぞれに対して事前に計算してメモリに保存しておけば、使いたいときには単にメモリを参照すれば良いだけになり、計算時間を大幅に短縮できる。このテクニックはフィードフォワードニューラルネットワークにのみ使える。

 

参考文献

J. Devlin, R. Zbib, Z. Huang, T. Lamar, R. Schwartz, and J. Makhoul. Fast and robust neural network joint models for statistical machine translation. In ACL, 2014.