Coda

論文メモ Improving Language Understanding by Generative Pre-Training

August 7, 2020

概要

GPTの略称で知られる教師なしの事前学習である。 評価実験では、12の自然言語処理タスクのうち9つで、当時のSoTAを上まわる性能を発揮した。 ネットワークはTransformerであり、事前学習では言語モデルを学習する。 手法の独自性は、ファインチューニングでの入力データの作り方にある。 入力形式を工夫し、事前学習時のネットワーク構成を維持することで、効率的な転移学習を実現する。

事前学習

事前学習では、次の目的関数でトークン列\(\mathcal{U}=\{u_1,\dots , u_n\}\)で言語モデルをつくる。 $$ L_1(\mathcal{U})=\sum_i\log P(u_i\mid u_{i-k},\dots , u_{i-1};\Theta) $$ \(k\)はウィンドウサイズを示す。 モデルに使われるmulti-layer Trasformer decoderは、条件付き確率\(P\)にあてはまるようにパラメタ\(\Theta\)を学習する。

\(n\)層のTransformer decoderは、トークンの埋込み行列\(W_e\)とトークンの位置の埋込み行列\(W_p\)を受け取り、次の式になる。 $$ \begin{align} h_0&=UW_e+W_p\\
h_l&=\texttt{transformer_block}(h_{l-1})\forall i \in[1,n]\\
P(u)&=\texttt{softmax}(h_nW^{T}_{e}) \end{align} $$

ファインチューニング

transfomerの最終層の出力をうけとる1層の全結合層をアーキテクチャにつなげ、主タスクの学習データ\(\mathcal{C}\)で学習する。 学習時のアーキテクチャは次の図のようになる。 gpt

教師データの事例のトークン列を\(x^1,\dots , x^m\)、最終層の出力を\(h_l^m\), 全結合層のパラメタを\(W_y\)とおくと、学習時には次の\(L_3(\mathcal{C})\)を最大化する。 $$ \begin{align} P(y\mid x^1 , \dots , x^m) &= \texttt{softmax}(h^m_lW_y) \\
L_2(\mathcal{C})&=\sum_{(x,y)}\log P(y\mid x^1\dots , x^m)\\
L_3(\mathcal{C})&=L(\mathcal{C})+\lambda * L_1(\mathcal{C}) \end{align} $$

事前学習時のアーキクチャを変えないようにするために、タスクに合わせて入力形式を工夫する。 上の図の右部は、分類、含意関係認識、類似度、Q&Aのタスクにおける入力を示す。 分類以外は全て、事例の要素をデリメタを挟んで隣接させ、モデルにあたえている。