1. RNNLM (再帰型ニューラル言語モデル)の概要
再帰型ニューラル言語モデル (Recurrent Neural Language Model, RNLM) (もしくは RNN言語モデル(RNNLM)とも呼ぶ) [Mikolov et al., 2010] は,再帰型ニューラルネットワーク(RNN)に学習した予測モデルから,直前の数個の単語を入力として,次の1単語を予測する「RNNを用いた言語モデル」である.
この記事では,RNNLMについて,簡潔に要点だけを紹介する(3節).また,その前に準備として,前身であるニューラル言語モデル [Bengio et al. 2003] についての基礎知識を紹介する(2節).
再帰型ニューラル言語モデルは,RNNの再帰構造のおかげで,可変長のテキストをモデリングできるようになったのが旧来の言語モデルとの大きな違いである.可変長に対応できるので,旧来の言語モデルよりも文章全体のモデリングとそれによる単語予測が行いやすくなり,LSTM・GRUを用いることで長い文章のモデリングと生成を行いやすい.
また,RNNLMの系列変換への拡張である「機械翻訳向けのseq2seq [Sutskever et al., 2014] 」の登場を皮切りに,画像キャプション生成や音声認識などの「マルチモーダルEncoder-Decoder」にも,RNNLMは応用されるようになる.この意味で,RNNLMは,seq2seqの前身の言語モデルであると言える.
1.1 記事の構成
2節以降,以下の構成でRNLMについて紹介する.2節で前準備をおこなったのち,3節で本題の再帰型ニューラル言語モデルについて述べる.
- 2節 言語モデルの基本 (テキスト全体のモデル化/ ニューラル言語モデル)
- 3節 再帰型ニューラル言語モデル (RNNLM)
2. 言語モデルの基本
言語モデル(language model)とは,自然言語文の次のトークン(単語)の予測を,そのトークン以前の単語群から予測するタスクである.すなわち言語モデルは,次の単語の生成確率を,機械学習モデルを用いて予測モデル化するもの全般のことを指す.
2節では,3節で再帰型ニューラル言語モデルを紹介する前準備として,言語モデルに関する基本事項を先に紹介する.
2.1 言語モデル
まず,直前の単語までのテキストの単語特徴ベクトル系列が,${\bm{x}^{(1)}, \bm{x}^{(2)}, \ldots , \bm{x}^{(t)}}$ で構成されているとする.
このとき言語モデルとは,以下の(2.1)のように,1つの文中の「最初の単語 $\bm{x}^{(1)}$ から直前の $t$ 番目単語 $\bm{x}^{(t)}$ までのコンテキストに対する,その次の $t+1$ 番目の単語 $\bm{x}^{(t+1)}$の条件付き確率分布」のことである:
\[
P(\bm{x}^{(t+1)} \mid \bm{x}^{(t)},\ldots, \bm{x}^{(1)})\tag{2.1}
\]
ここで,予測単語 $\bm{x}^{(t+1)}$ は,語彙 $V = { \bm{w}_1, \ldots , \bm{w}_{|V|}}$ の中のどれか1つの単語に相当する.
ニューラルネット登場以前は,言語モデルにn-gramモデルを用いるのが主流であった(通常n=3のtri-gramを用いる).自然言語処理だけでなく,音声認識システムの言語モデルにおいてもn-gramが用いられていた.
それが2.2のBengioの提案以降,ニューラルネットを使用したニューラル言語モデルが主流となっていく(特に再帰型ニューラルネットワーク(3節)や,seq2seq,Transformerなどのニューラルネット系列モデル).
2.2 テキスト全体のモデル化
また,言語モデルを$T$単語分用意すると,式(2.1)の積として「テキスト全体の生起確率(各単語が全て同時に起こる確率)」についても,以下のようにモデル化して,推定することができる:
\begin{align}
P(\bm{x}^{(1)},\ldots, \bm{x}^{(T)}) &= P(\bm{x}^{(1)})P(\bm{x}^{(2)} \mid \bm{x}^{(1)}) \ldots P(\bm{x}^{(T)}) \mid \bm{x}^{(T-1)},\ldots,\bm{x}^{(1)}) \\
&= \prod\limits_{t=1}^{T} P(\bm{x}^{(t)} \mid \bm{x}^{(t-1)},\ldots, \bm{x}^{(1)}) \tag{2.2}
\end{align}
この式(2.2)の「各単語$\bm{x}^{(t)}$の言語モデル」のマルコフ連鎖が,NLP分野で用いられてきた「言語モデルを用いたテキスト全体のモデル化」の標準形である.
2.3 ニューラル言語モデル

[Bengio et al. 2003] は,言語モデルの予測モデルにニューラルネットワークを用いた,ニューラル言語モデル(neural language model, NLM)を提案した(図1).
ニューラル言語モデルでは,固定窓内の直前$C$個の単語から,次の単語$\bm{x}^{(t)}$を予測する3層MLP(Multi Layer Perceptron)を大量の語彙から学習し,その3層MLPを用いて次の単語を予測する.語彙$V$の中で,単語が何であるかを示す,$|V|$次元 one-hotベクトル$\bm{x}^{(1)} $を$N$個入力層に入れ,各単語を分散表現である単語特徴ベクトル$\bm{e}^{(i)}$に変換する(図1).そして,$\bm{e}^{(i)}$を1つに結合したのち,隠れ層を経て,$\text{softmax}$により予測単語分布$\bm{y}^{(t)} \in \mathbb{R}^{|V|}$を生成する.これを整理すると以下のような手順になる[Bengio et al., 2003]:
\begin{align}
\bm{e}^{(i)} &= \bm{E}\bm{x}^{(t)} (\text{埋め込み重みで単語特徴ベクトルへ射影})\\
\bm{e} &= [ \bm{e}^{(t-C)} ; \ldots ; \bm{e}^{(t-1)}] (C\text{個の単語埋め込みを結合})\\
\bm{h} &= \text{tanh}(\bm{W}\bm{e} + \bm{b}_1)(\text{隠れ層における変換})\\
\hat{\bm{y}} &= \text{softmax}(\bm{U}\bm{h}^{(t)} + \bm{b}_2)(\text{確率ベクトルを出力})\tag{2.3}
\end{align}
word2vecやGloveを分散表現として用いるようになった頃と異なり,ニューラル言語モデル[Bengio et al. 2003] の分散表現では,埋め込み行列$\bm{E}$も同時に学習していた点に注意.また,word2vec以降のように,未来の単語はコンテキストには含まれておらず,直前の$C$個だけコンテキストとして取り入れてくる.
2.3.1 ニューラル言語モデルの利点と問題点
ニューラル言語モデルは,n-gramの弱点「sparsity」の問題を解決できた.また,固定窓のモデルなので,n-gramのように,全てのn-gramを保存しておく必要もなくなった.これにより,Brown CorpusとAP newsデータセット(共に語彙数 $|V|$は1万6千~1万8千語程度)からそれぞれNLMを学習して次単語の予測実験をおこない,n-gramよりNLMのほうが大幅にパープレキシティが下がることが実証された.
しかし,この普通の順伝搬3層MLPで実現されているニューラル言語モデルにも,以下のような問題点があり,改善の余地があった:
- きちんと学習するには固定窓が狭い範囲である必要があり( $C=4$ がデフォルト),tri-gramと同様「長いコンテキスト」はモデリングできていない.
- 窓長を長くすると $\bm{W}$ も巨大化するのでスケールしづらく,十分に大きな窓長には設定できない.
- 各$e^{(t)}$ が $\bm{W}$ 中の別の重みを使って変換されるので,特徴ベクトルの変換に統一性がない.
これらの課題を解決するために,任意の系列長に対応できるRNNが導入されることになる(3節)
3. 再帰型ニューラル言語モデル (RNNLM)

再帰型ニューラル言語モデル (Recurrent Neural Language Model, RNNLM) (図2)が,RNNを用いてのニューラル言語モデルの改善版として提案された [Mikolov et al., 2010].再帰型ニューラル言語モデルでは,RNNを用いて可変長 $C$ 単語から構成される文から,単語埋め込みベクトルを毎フレーム入力として取り込み,次の単語を予測するモデルである.
具体的には,各フレーム $t$ において,以下のようにRNNによる手続きで単語予測を行う:
\begin{align}
\bm{e}^{(i)} &= \bm{E}\bm{x}^{(t)} (\text{埋め込みベクトルへ射影})\\
\bm{h}^{(t)} &= \text{tanh}(\bm{W}[\bm{e}^{(t)} ; \bm{h}_{t-1}]^{\top} + \bm{b}_1)(\text{隠れ層における変換})\\
\hat{\bm{y}}^{(t)} &= \text{softmax}(\bm{U}\bm{h}^{(t)} + \bm{b}_2)(\text{確率ベクトルを出力})\tag{3.1}
\end{align}
3.1 最適化
RNNLMの学習は,通常のRNNの学習と同じく,毎フレームの損失を用いてBPTT(Back propagation Through Time)を行う.
ここで,言語モデルの出力$\bm{y}^{(t)}$ はsoftmax確率である.従って,ラベルの$\bm{w}^{(t)}$ (one-hotベクトル)と,予測確率 $\bm{y}^{(t)}$の間で,負の対数尤度(クロスエントロピー)を取り,そのクロスエントロピー損失を用いてBPTTによりSGD最小化を行う.
3.2 テキストの生成:ビームサーチによるデコード
3.2.1 RNNLM を用いたテキスト生成
予測した前フレームの単語を,次のフレームの入力単語にしてRNNで1単語ずつ予測していくことで,RNNLMではテキストを生成する [Sutskever et al., 2011] .<BOS> = (Beginning of Sequence)を入力として,テキスト生成を始めると,順番に1単語ずつ予測が行われ,最終的に予測単語が <EOS> = (End of Sequence)になった際に,文の生成が(勝手に)終了される.
seq2seq / 系列対系列変換での例
このRNNLMを用いたテキスト生成むけの,コーディングの代表的な応用例として,seq2seqによる機械翻訳 [Sutskever et al., 2014] が挙げられる.前半にLSTM・GRUでデコーディングした隠れ層ベクトルを,後半のLSTM・GRUに受け渡すことで,RNNLMにより意味が同じである別言語の文章を生成する(つまり,翻訳をする).この際も,ビームサーチによる,効率的な最適化を行うことが多い(3.2.2節).
機械翻訳と似たような系列対系列変換問題である『音声認識』やその逆問題である『TTS(text-to-speech)』などにおいても,seq2seqの言語モデル側に,RNNLMがよく用いられる.また,画像キャプション生成のデコーダでも,機械翻訳と同様にデコーダ (LSTM・GRU)による生成時にビームサーチを行うことが多い.
3.2.2 ビームサーチによるデコードの最適化
テキスト生成をn-gramやRNNLMなどの言語モデルで行う際に,RNNの入力は可変長なので,全部の候補テキスト系列をサンプリングしてモデル最適化しようとすると,学習データ数爆発が起きてしまう.また,テスト時も,式(2.2)の各単語予測で,たくさんの候補単語を各ステップ$(t)$ で考慮に入れると,同じく組み合わせ爆発が起きてしまい最適化コストが高い.
そこで,RNNLMのテキスト生成(デコード)では,毎フレームにおいて,最良の系列(単語列)を,RNN予測が予測したnベスト単語群で形成する分岐ツリー内から探す,探索(search)アルゴリズムをよく使用する.しかし,この時全探索を行う貪欲法探索(Greedy Search)で,全組み合わせの生成確率を辿ると,最適解探索の効率が悪く,メモリも沢山必要になってしまう.
そこでRNNLMでは,ビームサーチ(beam search)を用いた探索によるデコードをよく用いる.ビームサーチでは,幅mまでに制限した「最適部分系列」をn-ベスト個探索し,その部分探索を,制限最大長(=RNNLMでは文の長さ)に達するまで繰り返すアルゴリズムである.これにより,m長のサブ探索問題の繰り返しによって,効率的に最適系列出力を探索できる.
機械翻訳 [Freitag et al., 2017]や,画像キャプション生成 [Karpathy and Fei-Fei, 2015] などの,系列対系列変換モデルの文章デコーダ側では,ビームサーチによる系列生成が行われることが多い.
※ 文生成モデルでのビーム幅 bには,通常 b=3,5,7程度の長さを用いる.
4. RNNLM のまとめ
この記事では,RNNLM(再帰型ニューラル言語モデル)について紹介した.
その準備として,言語モデル一般や,RNNを用いない前進のモデル「3層MLPを用いたニューラル言語モデル」も紹介した.
参考書籍
- 生成 Deep Learning ―絵を描き、物語や音楽を作り、ゲームをプレイする.David Foster (著) 松田 晃一 ,小沼 千絵(訳)
- 「6章 書く」 (※ ここがRNNLMの章)
- 深層学習による自然言語処理(機械学習プロフェッショナルシリーズ) 坪井祐太, 海野裕也, and 鈴木潤, 講談社, 2017.
- Deep learning for NLP and speech recognition, Kamath, Uday, John Liu, and James Whitaker. Springer, 2019.
- IT Text 自然言語処理の基礎 岡﨑直観, 荒瀬由紀, 鈴木潤, 鶴岡慶雅, 宮尾祐介 .オーム社,2022.
- 5章 言語モデル・系列変換モデル
- 5. 言語モデルの具体例2:ニューラル言語モデル(p119)
- 5章 言語モデル・系列変換モデル
References
- [Bengio et al. 2003] Bengio, Y., Ducharme, R., Vincent, P., & Janvin, C. (2003). A neural probabilistic language model. The journal of machine learning research, 3, 1137-1155.
- [Freitag et al., 2017] Freitag, M., & Al-Onaizan, Y. (2017). Beam search strategies for neural machine translation. arXiv preprint arXiv:1702.01806.
- [Karpathy and Fei-Fei, 2015] Andrej Karpathy and Li Fei-Fei. 2015. Deep visual-semantic alignments for generating image descriptions. In CVPR 2015.
- [Mikolov et al., 2010] T. Mikolov, M. Karafiat, L. Burget, J. Cernocky and S. Khudanpur. Recurrent neural network based language model. In INTERSPEECH, 2010.
- [Sutskever et al., 2011] Sutskever I, Martens J, Hinton GE. Generating text with recurrent neural networks. In ICML, 2011.
- [Sutskever et al., 2014] Sutskever, I., Vinyals, O., and Le, Q. V. Sequence to sequence learning with neural networks. In NIPS, 2014.
- 増村亮. “深層学習に基づく言語モデルと音声言語理解.” 日本音響学会誌 73.1 (2017): 39-46.