GPTはなぜ文脈内学習ができるのか?
最近読んだGPT関連の論文で面白いものがあったので紹介します。
Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers
この論文のタイトルを日本語にすると、「GPTはなぜ文脈内学習ができるのか? 言語モデルはメタ最適化器として秘密裏に勾配降下法を行っている」となります。
以前、GPT-3の解説でも触れましたが、GPT-3は大量の文章を読んで学習した後、少数の例を見せるだけで、その例からのパターンに合わせて文章を生成できるというすごい能力を持っています。これを文脈内学習(In-Context Learning)と呼びます。つまり、与えられた例文の文脈から学んだ上で新しい文章を生成することができます。
文脈内学習ではニューラルネットワークのパラメータの更新は行われません。それなのになぜ文脈から学習することが可能なのか、GPT-3が発表された当初はよくわかっていませんでした。その後、文脈内学習を研究した論文がいくつか出ています。この論文もその中の一つで、GPTという人工知能がどのようにしてパラメータ変更なしに新しいことを学ぶかを仮説を立てて実験し説明しています。
この記事では、論文の内容を以下の3つのポイントにしぼって解説します。
GPTのおさらい
通常の訓練における勾配降下法(Gradient Descent)
文脈内学習におけるメタ最適化器(Meta-Optimizer)
それでは、さっそく見ていきましょう。
GPTのおさらい
GPTとは、Generative Pre-trained Transformerの略で、文章を生成する人工知能です。OpenAIが開発しましたが、大元はGoogleが2017年に発表したトランスフォーマー(Transformer)にあるデコーダです。
GPTは、さまざまな文章を部分的に与えられてその続きを予測するように訓練されます。これを繰り返すことで文章のパターンやつながりを学習します。この学習の過程を事前学習(Pre-training)と呼びます。事前学習はある特定のタスクを目的としておらず言語そのものを学ぶ段階となっています。
事前学習を終えたGPTは、与えられた文章に続く文章を生成できるようになります。例えば、GPTに「今日は」と入力すると、「今日はいい天気ですね」とか「今日は何をしようかな」とか、その続きを生成してくれます。
さらに特定のタスクに合わせてニューラルネットワークのパラメータを微調整したい場合には教師あり学習を使ったファインチューニングを行います。それによって文章生成、質問応答、サマリー生成など多様なタスクに対応できます。
GPTからGPT-2、GPT-3とバージョンを重ねるごとにニューラルネットワークのパラメータ数がどんどん増えていきました。GPT-3では1750億で、これはGPT-2の15億個と比べて100倍以上に増えています。
GPT-2でも文脈内学習は可能でしたが精度はそれほどよくありませんでした。なのでタスクごとにファインチューニングを行い精度を高める必要がありました。ところがGPT-3では文脈内学習の機能が向上してファインチューニングなしでも文章で直接質問することでさまざまなタスクに対応できるようになりました。
その後、GPT系のモデルはInstructGPTへと進化し強化学習を取り入れることでより人間の意図に即した応答ができるようになりました。InstructGPTがさらに進化し、2022年11月に発表されたChatGPTが一世を風靡したのは記憶に新しいところです。
通常の訓練における勾配降下法
さて、GPTを事前学習したりファインチューニングする時には勾配降下法(Gradient Descent)が使われます。勾配降下法はニューラルネットワークの予測精度が向上するようにパラメータの値を徐々に調整していく手法です。
直感的な例え話をすると、料理を作る時に味見をしながら塩や胡椒を足したり、醤油を入れたり、やっぱりジャガイモ足したりと味見を続けた、あちこち調味料や材料を調整しながら最適な味に仕上げるイメージです。
Bingのチャット機能に聞いたらケーキ作りの例えをしてきたのでここに紹介します。
ニューラルネットワークの訓練を行う場合は、予測と正解の誤差を評価します。それを損失値と呼びますが、損失値が小さくなるようにパラメータの値を調節していきます。そうすることで予測の精度が上がっていくわけです。
GPT-3では1750億のパラメータがあり損失値を減らすために調整する必要があります。その際、パラメータの数値を変更すると損失値がどのくらい増減するのかを計算するのですが、これを勾配と呼びます。この勾配を使って損失値が降下するようにパラメータを調節するので勾配降下法と呼びます。
勾配降下法のポイントはさまざまな文章での訓練を通してニューラルネットワークのパラメータを変更することです。なので事前学習が終わると一旦パラメータの値は固定化されます。さらに、ある特定のタスクに対してファインチューニングを行う場合は、パラメータの微調整を行いますが、ここでは事前学習で得た言語能力を失わないように注意して大きな変更を行わないようにする必要があります。
文脈内学習におけるメタ最適化器
さて、ここまでで、GPTと勾配降下法の仕組みを説明しました。では、GPTはどのようにして文脈学習を行っているのでしょうか?
論文によるとGPTは文脈内学習を行う際に、ニューラルネットワークのパラメータを変更することなく勾配降下法を行なっており、それをメタ最適化と呼んでいます。
GPT自体は事前学習で最適化されており、それを与えられた文脈に合わせてさらに最適化するので、最適化器を最適化することになります。よってメタ最適化と呼ぶわけです。論文によるとメタ最適化でも勾配降下法が行われていることになります。
では、パラメータの値を変更せずにどのようにして勾配降下法を使うのでしょうか。論文では通常の線形層とトランスフォーマーのアテンション機構を比較して説明しています。
線形層のパラメータを行列$${W}$$として、それを更新する値を行列にしたものを$${\Delta W}$$とします。つまり、元のモデルのパラメータは$${W}$$で更新されたモデルのパラメータは$${W + \Delta W}$$となります。すると、更新されたモデルに入力値$${\boldsymbol{x}}$$を与えた時の出力は以下のように表現できます。
$$
\mathcal{F}(\boldsymbol{x}) = (W + \Delta W) \boldsymbol{x}
$$
どのようなモデルにおける訓練やファインチューニングでも線形層のパラメータの更新は同様に表現できます。
これをアテンション機構と比較します。ただし、アテンション機構ではSoftmaxなどが絡んでくるので非線形になっています。そこでこの論文では線形化したアテンション機構で比較します。これによって文脈内学習がメタ最適化を行なっていることを説明しています。
論文と同様にセンチメント分析を行う場合で解説します。
アテンション機構を数式で表すと以下になります。
$$
\text{Attention}(V, K, \boldsymbol{q}) = V \, \text{softmax}\left( \dfrac{K^T \boldsymbol{q}} {\sqrt{d_k}} \right)
$$
これを線形化します。
$$
\text{Attention}(V, K, \boldsymbol{q}) \approx VK^T \boldsymbol{q}
$$
これを$${\mathcal{F}_\text{ICL}}$$と呼ぶことにして更新された線形層$${\mathcal{F}}$$と比較します。
$$
\mathcal{F}_\text{ICL}(\boldsymbol{q}) = VK^T \boldsymbol{q}
$$
なお、$${ \boldsymbol{q}}$$はセンチメント分析を行う際に使われるトークンとクエリ行列$${W_Q}$$との積で計算したクエリのベクトルです。
$$
\boldsymbol{q} = W_Q \, \boldsymbol{x}
$$
また、VとKはバリューとキーと呼ばれる値ですが、入力文章$${X}$$と特定の行列$${W_V}$$と$${W_K}$$との積を取ったものです。つまり、$${V = W_V X}$$と$${K = W_K V}$$となります。
よって、次のように書き直せます。
$$
\begin{align*}
\mathcal{F}_\text{ICL}(\boldsymbol{q}) &= VK^T \boldsymbol{q} \\
&= W_V X (W_K X)^T \boldsymbol{q}
\end{align*}
$$
さらに、入力文章を例文$${X'}$$と質問文$${X}$$に分けて考えると、$${X = [X'; X]}$$として例文と質問文をつなげたものと表現できるので上式を以下のように書き換えれます。
$$
\mathcal{F}_\text{ICL}(\boldsymbol{q}) = W_V [X'; X] (W_K [X'; X])^T \boldsymbol{q}
$$
これを$${X}$$と$${X'}$$の項で別々にまとめます。
$$
\begin{align*}
\mathcal{F}_\text{ICL}(\boldsymbol{q}) &= W_V [X'; X] (W_K [X'; X])^T \boldsymbol{q} \\
&= (W_V X (W_K X)^T + W_V X' (W_K X')^T) \boldsymbol{q}
\end{align*}
$$
ここで$${W = W_V X (W_K X)^T}$$は質問文から計算されたパラメータとし、$${\Delta W = W_V X' (W_K X')^T}$$を例文から計算されたパラメータの更新値として捉えると、以下のように書き直せます。
$$
\mathcal{F}_\text{ICL}(\boldsymbol{q}) = (W + \Delta W) \boldsymbol{q}
$$
つまり、ここでの$${W}$$は質問文から計算された新しいモデルのパラメータと考えることができます。また、$${\Delta W}$$は新しいモデルのパラメータを更新するために、例文から計算されたパラメータを更新値と捉えることができるので、線形アテンション$${\mathcal{F}_\text{ICL}}$$と線形層$${\mathcal{F}}$$はパラメータの更新に関して同じ形になっています。
このようにして、GPTは自分の重み($${W_V, W_K}$$)を文脈内学習に適応させることができます。つまり、最適化されたモデルのパラメータを利用して質問文の文脈情報から新しいモデルを作り、さらに例文の文脈情報から新しいモデルの更新値を計算しています。よって、最適化器の最適化を行うメタ最適化を行なっていることになります。しかも、もともとものモデルのパラメータの変更をしていません。なぜならば、ダイナミックに生成されたモデルのパラメータを変更しているからです。
まとめ
以上、論文「Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers」の内容を説明しました。
線形化するという単純化による説明が行われてはいますが、メタ最適化が起きていることには変わりはないと言えるでしょう。実際、論文ではさまざまな実験を通してメタ最適化と通常の最適化とが似たような結果を出すことを示しています。
また、文脈内学習では数が少ない文章例からの情報で期待される文章を生成できるのに対し、通常のファインチューニングでは数が少ない文章による訓練だとあまり成績がよくなく、文章内学習の方が性能が優れていることもわかっています。
この記事が気に入ったらチップで応援してみませんか?