content合理と非合理のあいだ人工知能・哲学・スタートアップについて綴ります。2016年3月25日この記事では、近年注目を集めるニューラルネットワークの拡張型RNNを用いて、ある文が与えられたらその次に来る単語の確率を与える言語モデルを作る過程を紹介する。この記事は、言語モデルに関わらずRNNの一般的な構造を取り扱うので、言語モデル以外にも応用することができる。(間違いなどがあればコメントでお知らせください)言語モデルとは言語モデルとは、ある文章が(学習元となったデータにおいて)生起する確率を与えるモデルで、例えば、以下の様な関係を知ることができる。知ることができるので、機械翻訳や音声認識など応用範囲は様々だ。これは一般にはと表せる。(条件を付さなければ上のように、純粋に文章が生起する確率が得られる。Network)とは、通常のフィードフォワード型のニューラルネットワークの拡張で、時系列データ(各時間でのスナップショットのシーケンス)や文(単語のシーケンス)のようなシーケンスを扱うことができるようにした物。隠れ層を受け取る(両者の和をとる)。基本的な構造は以下のようになる。番目の単語のone-hotベクトル(次元数=全単語数で、そのベクトルの表現する単語の成分だけ1,他が0になっているベクトル)になる。して吐き出させるのがRNNで言語モデルを作る場合の主な手口だ。予測するという構造になっている。学習するのは通常のNNと同じように重み行列となるが、通常と違うのは3種類の異なる重みを学ぶという点だ。現れているが、これはすべて同じ行列を表している(ある単語の次にどの単語が来るかは、単語の絶対的な位置に依存しないので、重み行列は同じであって当然である)。Propagationは次のようになる。まで順繰りに計算してやればよい。番目の単語の次にくる予測単語の確率を表している。次元数が全単語数のベクトルで、softmax関数を使っているので全要素の和が1になる。番目の要素が1,他が0の単語ベクトル)各重みマトリックスは次の次元をとる。自由に決められるハイパーパラメータの一つだ。(BPTT)というアルゴリズムが用いられる。遡った誤差を加味してよい。大きくすれば計算量は増える。決めなければいけない(これもまたハイパーパラメータである)。