Coda

論文メモ Character-Aware Neural Language Models

April 4, 2020

概要

文字単位の入力から次に出現する単語を予測するニューラル言語モデルの論文である。 アーキテクチャは入力から近い順にCNN, highway network, LSTMからなる。 実験データにPenn Treebankを、評価指標にPerplexityを採用してモデルを評価したところ、 論文が発表された2016年時点でのSOTAの60%程度のパラメタしかないモデルでありながら、これに匹敵する性能を発揮した。

アーキテクチャ

モデルは、文字列を単位とする入力をうけつける。 モデルのアーキテクチャを図に示す。 入力に近い層から順にCNN, highway network, LSTMの順に説明していく。 img

CNN

\(d\)を文字の分散表現の次元として、長さ\(l\)の単語\(k\)は\({\rm C}^{d\times l}\in \mathbb{R}^{d \times l}\)の分散表現としてモデルに入力される。 入力された分散表現に幅\(w\)のフィルタ\(\boldsymbol{\rm H}\in \mathbb{R}^{d \times w}\)を適用しnarrow conlovutionによって、特徴マップ\(\boldsymbol{\rm f}^k\in \mathbb{R}^{l-w+1}\)を求める。 \(\boldsymbol{\rm C}^k[*, i:i+w-1]\)を単語\(k\)の分散表現\(\boldsymbol{\rm C}^k\)の\(i\)から\(i+w-1\)までの列とすると、\(i\)番目の要素は次の式で計算される。

$$ \boldsymbol{\rm f}^k[i] = \tanh (\text{Tr}(\boldsymbol{\rm C}^k[*, i:i+w-1] \boldsymbol{\rm H}^T) + b) $$

MAXプーリングにより各フィルタからスカラー値\(y^k\)を求める。アーキテクチャ全体ではフィルタを\([100, 1000]\)の範囲の複数のフィルタ\(\boldsymbol{\rm H}_1 ,\dots \boldsymbol{\rm H}_h\)をつかう。 このとき、単語\(k\)に対して\(\boldsymbol{y}^k=[y_1^k , \dots y_h^k]\)がhighway networkにわたされる。

$$ y^k=\max_i \boldsymbol{\rm f}^k[i] $$

Highway Network

CNNの出力をhighway networkに入力し、次の\(\boldsymbol{\rm z}\)を計算する。 $$ \boldsymbol{\rm z}=\boldsymbol{\rm t}\odot g(\boldsymbol{\rm W}_H \boldsymbol{\rm y} + \boldsymbol{\rm b}_H) + (\boldsymbol{1} - \boldsymbol{\rm t}\odot \boldsymbol{\rm y}) $$ ただし、\(\boldsymbol{\rm t}=\sigma (\boldsymbol{\rm W}_T\boldsymbol{\rm y} + \boldsymbol{\rm b}_T)\)であり、これをtransform gateという。 \(\boldsymbol{1}-\boldsymbol{\rm t}\)はcarry gateとよばれ、LSTMのメモリセルと同じく、入力を適応的にそのまま出力するはたらきがある。

LSTM

時刻\(t\)のhighway networkの出力\(\boldsymbol{\rm z}_t\in \mathbb{R}^n\)はLSTMに入力され、LSTMは次の計算により\(\boldsymbol{\rm h}_t\in \mathbb{R}^m\)を出力する。 複数のLSTMを重ねるときは、\(\boldsymbol{\rm h}_t\)を次のLSTMにわたす。

$$ \begin{align} \boldsymbol{\rm i}_t &= \sigma(\boldsymbol{\rm W}^i\boldsymbol{\rm z}_t + \boldsymbol{\rm U}^i\boldsymbol{\rm h}_{t-1}+\boldsymbol{\rm b}^i)\
\boldsymbol{\rm f}_t &= \sigma(\boldsymbol{\rm W}^f\boldsymbol{\rm z}_t + \boldsymbol{\rm U}^f\boldsymbol{\rm h}_{t-1}+\boldsymbol{\rm b}^f)\
\boldsymbol{\rm o}_t &= \sigma(\boldsymbol{\rm W}^o\boldsymbol{\rm z}_t + \boldsymbol{\rm U}^o\boldsymbol{\rm h}_{t-1}+\boldsymbol{\rm b}^o)\
\boldsymbol{\rm g}_t &= \tanh(\boldsymbol{\rm W}^g\boldsymbol{\rm z}_t + \boldsymbol{\rm U}^g\boldsymbol{\rm h}_{t-1}+\boldsymbol{\rm b}^g)\
\boldsymbol{\rm c}_t &= \boldsymbol{\rm f}_t \odot \boldsymbol{\rm c}_{t-1} + \boldsymbol{\rm i}_t \odot \boldsymbol{\rm g}_t \
\boldsymbol{\rm h}_t &= \boldsymbol{\rm o}_t \odot \tanh (\boldsymbol{\rm c}_t) \end{align} $$

出力層

LSTMの出力\(\boldsymbol{\rm h}_t\)を全結合層とソフトマックス関数に入力し、単語列\(w_{1:t}=[w_1, \dots w_t]\)から次の単語\(w_{t+1}\)を予測する。

$$ \text{Pr}(w_{t+1}=j\mid w_{1:t}) = \frac{\exp (\boldsymbol{\rm h}_t \cdot \boldsymbol{\rm p}^j + q^j)}{\sum_{j’\in \mathcal{V}}\exp (\boldsymbol{\rm h}_t \cdot \boldsymbol{\rm p}^{j’}+ q^{j’})} $$

\(\mathcal{V}\)は単語の集合をさす。 単語数\(\mid\mathcal{V}\mid\)が多い場合、階層的ソフトマックスをもちいる。 \(\mathcal{V}\)を\(c=\lceil\sqrt{\mid\mathcal{V}\mid} \rceil\)として\(\mathcal{V}_1,\dots \mathcal{V}_c\)に分割し、次のように予測する。

$$ \begin{align} \text{Pr}(w_{t+1} = j\mid w_{1:t}) &= \frac{\exp (\boldsymbol{\rm h}_t\cdot \boldsymbol{\rm s}^r + t^r)}{\sum^c_{r’=1}\exp (\boldsymbol{\rm h}_t \cdot \boldsymbol{\rm s}^{r’}+ t^{r’})} \
&\times \frac{\exp (\boldsymbol{\rm h}_t\cdot \boldsymbol{\rm p}_r^j + q_r^j)}{\sum_{j’\in\mathcal{V}_r}\exp (\boldsymbol{\rm h}_t \cdot \boldsymbol{\rm p}_r^{j’}+ q_r^{j’})} \end{align} $$

損失関数

損失関数にはnegative log-likelihood(NLL)をもちいる。

$$ NLL = - \sum_{t=1}^T \log \text{Pr}(w_t\mid w_{1:t-1}) $$

備考

提案された言語モデルは、ELMoで応用された。 以前、こちらにELMoの内容をまとめた。

感想

初学者が勉強のために読むにはいい論文だと思った。 LSTM, CNN, 階層的ソフトマックス, Perplexityなどの広く応用されている手法を多く導入しているだけでなく、数式を含めた説明が十分にある。