Summary:
数学的には,\[P(\mathbf{Y}|\mathbf{X}) = \prod_{t=1}^{T'} P(y_t|y_1, \ldots, y_{t-1}, \mathbf{X})\]として分解され,各時刻における条件付き確率の積として表現される.
Seq2Seqモデルの起源は2014年に遡る.GoogleのSutskever, Vinyals, Leらによる「Sequence to Sequence Learning with Neural Networks」にて初めて提案され,同年にBahdanauらが注意機構[attention mechanism]を導入した改良版を発表した.これらの手法は機械翻訳において従来の統計的手法を凌駕する性能を示し,ニューラル機械翻訳の時代を切り開いた.
基本的なSeq2SeqモデルはEncoderとDecoderから構成される.Encoderは入力系列を逐次処理して隠れ状態の系列$\mathbf{H} = (h_1, h_2, \ldots, h_T)$を生成し,各隠れ状態$h_t$は次のように計算される.\[h_t = f(x_t, h_{t-1})\]ここで $f$ は通常,非線形変換を含むRNN,LSTM,またはGRUなどである.初期のモデルでは、最後の隠れ状態$h_T$を文脈ベクトル$\mathbf{c}$としてDecoderに渡していた。Decoderの各時刻$t$における隠れ状態$s_t$は以下で更新される.\[s_t = g(y_{t-1}, s_{t-1}, \mathbf{c})\]出力 $y_t$ は,\[P(y_t|y_1, \ldots, y_{t-1}, \mathbf{X}) = \text{softmax}(\mathbf{W}_o s_t + \mathbf{b}_o)\]から得られる.
RNNセルとしてLSTMを用いた場合,各時刻 $t$ における状態更新は以下の通りである.
忘却ゲート[Forget gate)]:LSTM[Long Short-Term Memory]セル内部の構成要素の一つであり,過去のセル状態のどの部分を保持し,どの部分を捨てるかを制御する役割を持つ.\[f_t = \sigma(\mathbf{W}_f x_t + \mathbf{U}_f h_{t-1} + \mathbf{b}_f)\]ここで, $\mathbf{U}$ は前時刻の隠れ状態 $h_t−1$ に対してかける重み行列である.
入力ゲート:\[i_t = \sigma(\mathbf{W}_i x_t + \mathbf{U}_i h_{t-1} + \mathbf{b}_i)\]
セル状態の候補:\[\tilde{C}_t = \tanh(\mathbf{W}_c x_t + \mathbf{U}_c h_{t-1} + \mathbf{b}_c)\]
セル状態の更新:\[C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t\]
出力ゲート:\[o_t = \sigma(\mathbf{W}_o x_t + \mathbf{U}_o h_{t-1} + \mathbf{b}_o)\]
隠れ状態の出力:\[h_t = o_t \odot \tanh(C_t)\]ここで$\sigma$はシグモイド関数,$\odot$は要素ごとの積である.LSTMは長期依存関係の学習に優れ,系列が長くても安定して学習できる.
デコーダー[Decoder]が固定長のベクトル $\mathbf{c}$ に依存するという構造には,情報のボトルネックという問題があった.これを克服するため,Bahdanauらは注意機構[attention mechanism]を導入した.
デコーダー[Decoder]の各時刻$t'$における文脈ベクトル$\mathbf{c}_{t'}$は,\[\mathbf{c}_{t'} = \sum_{i=1}^{T} \alpha_{t',i} h_i\]と定義される.ここで注意重み$\alpha_{t',i}$はアライメントスコア$e_{t',i}$に基づくsoftmax正規化によって与えられる.\[\begin{align}e_{t',i} &= a(s_{t'-1}, h_i) \\ \alpha_{t',i} &= \frac{\exp(e_{t',i})}{\sum_{j=1}^{T} \exp(e_{t',j})}\end{align}\]関数$a$はアライメントモデルであり,加法的注意(additive attention)では以下のように表現される.\[a(s_{t'-1}, h_i) = \mathbf{v}^\top \tanh(\mathbf{W}_{a_s} s_{t'-1} + \mathbf{W}_{a_h} h_i)\]ここで$\mathbf{v}$, $\mathbf{W}_{a_s}$, $\mathbf{W}_{a_h}$は学習可能なパラメータである.
2017年には,VaswaniらによりTransformerが提案され,Seq2Seqの構造は根本的に変化した.Transformerは再帰構造を排除し,Self-Attentionにより系列全体を同時に処理する.
Self-Attentionの計算では,入力$\mathbf{X}$から以下のベクトルを生成する.\[\begin{align}\mathbf{Q} &= \mathbf{X}\mathbf{W}^Q \\ \mathbf{K} &= \mathbf{X}\mathbf{W}^K \\ \mathbf{V} &= \mathbf{X}\mathbf{W}^V\end{align}\]注意出力は次で与えられる.\[\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^\top}{\sqrt{d_k}}\right)\mathbf{V}\]さらに,TransformerではMulti-Head Attentionが導入されており,$h$個の異なるヘッドを用いる.\[\begin{align}\text{head}_i &= \text{Attention}(\mathbf{Q}\mathbf{W}_i^Q, \mathbf{K}\mathbf{W}_i^K, \mathbf{V}\mathbf{W}_i^V) \\ \text{MultiHead}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) &= \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\mathbf{W}^O\end{align}\]Self-Attentionでは系列の順序情報が失われるため,位置エンコーディングを加える.\[\begin{align}PE(pos, 2i) &= \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \\ PE(pos, 2i+1) &= \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)\end{align}\]なお,10000という定数は「系列中の位置情報を多様な周波数で表現するためのスケール因子」である.指数的な分母の形($10000^{2i / d_{\text{model}}}$)により,周波数が指数関数的に変化するサイン・コサイン波を生成している.つまり,低次元[小さい $i$ ]はゆっくり変化する波長[低周波数],高次元[大きい $i$ ]は速く変化する波長[高周波数]を表現する.この定数を大きくすると周波数分布が狭くなりすぎ,ほとんどの次元が長周期に偏る.すなわち,高周波成分が減り,近接位置の識別精度が下がる可能性がある.逆に,この定数を小さ柵すると,周波数分布が急になり,ほとんどの次元が高周波に偏り,遠距離の位置関係を識別しにくくなる.「10000」は経験的に、Transformer の文脈で広い距離範囲の位置をエンコードするのにちょうどよい周波数分布を与える定数として選ばれている.この位置エンコーディングにより,系列内の位置情報が保持される.
Transformerにはさらに,残差接続や層正規化が導入されており,学習の安定性と性能を高めている.学習時の目的関数は負の対数尤度の最小化であり,\[L = -\sum_{n=1}^N \sum_{t=1}^{T_n} \log P(y_{n,t}|y_{n,1}, \ldots, y_{n,t-1}, \mathbf{X}_n)\]と表される.
推論時にはビーム探索がよく用いられ,スコアは以下のように正規化される.\[\text{score}(\mathbf{Y}) = \frac{\log P(\mathbf{Y}|\mathbf{X})}{|\mathbf{Y}|^\alpha}\]ここで$\alpha$は長さ正規化パラメータである.
現在のSeq2Seqモデルは,大規模事前学習モデルへと発展している.BERTでは双方向的なマスク言語モデルに基づき,\[L_{\text{MLM}} = -\sum_{i \in M} \log P(x_i|\mathbf{x}_{\setminus M})\]が学習され,GPTのような自己回帰モデルでは,\[L_{\text{AR}} = -\sum_{t=1}^T \log P(x_t|x_1, \ldots, x_{t-1})\]が用いられる.
Mathematics is the language with which God has written the universe.