ChatGPTを深堀りする
どうも開発統括部第二開発事業部のHIROYUKIです。今回は世間で話題のChatGPTについて、前身となるInstructGPTやGPT-3を扱った関連論文や解説記事をもとに深掘りしてみたいと思います。
1. ChatGPTとは
ChatGPT(GPT-3.5)とはどんなものなのか、まずはChatGPTに直接聞いてみました。
Transformerを採用していること、GPTとの関係、どういうタスクに強みがあるのかなど、けっこうしっかりとした回答をしていることが確認できます。
ChatGPTとは、OpenAIが2022年11月30日に発表した対話型の人工知能です。ユーザーから入力された質問(「プロンプト」と呼ばれます)に対して、その場で回答を生成して答えてくれます。自然言語の生成モデルのため、論文や歌詞、ソースコード、小説など、自然言語を使った様々な表現を生み出すことができます。
何を聞いてもそれなりにちゃんとした答えを返してくるため、検索エンジンを展開しているGoogleは自社の存続の危機としてCode Redを宣言しました。一方、2019年からOpenAIへの投資を続けていたMicrosoftは、ChatGPTの利用を早々に発表し、「今後同社が展開するすべてのサービスに人工知能を搭載する」とまで宣言していました。
発表当初、ChatGPTで使われているモデルはGPT-3.5でしたが、3月中旬にはGPT-4が発表され、有料版ではオプションとしてGPT-4が使えるようになっています(2023年4月4日時点)。
2. 人工知能研究におけるChatGPTの位置づけ
ChatGPTはInstructGPTというモデルがベースで、対話に特化したデータを学習に使っている点がInstructGPTとの違いです。逆にいえば学習のプロセスはInstructGPTとほぼ同じと考えて構いません。
InstructGPTはGPT-3から派生したモデルで、人間が使うことを意識して学習データや学習の方法を「調整」(align)している点が特徴です。GPT-3は自然言語処理モデルにおけるTransformerから派生して生まれたものです。それはGPTが「Generative Pre-trained Transformer」の略であることからも知ることができます。
ではTransformerの特徴は何かといえば、Attention機構というしくみにあります。
3. Attention機構の特徴
Attention機構の基本的な発想は、ある問題を解くときに問題とは無関係な要素を無視して、関係のある部分だけを見るように絞って処理するということです。それが人間における「注意」(Attention)と同じ機能をもつことからこの名前が付けられています。
それまでのニューラルネットワーク | Attention機構をもつモデル | |
パラメータの調整 | 静的(Static) 学習中は調整するが、一度学習が完了するとパラメータの値は固定 | 動的(Dynamic) 学習中も調整するが、学習後も入力データに応じて重みなどのパラメータが変化する |
破滅的忘却※のリスク | あり | 小さい パラメータが動的に変わるので忘却が起こりにくい |
Attention機構にも問題はあります。もともとAttention機構というのは系列をもつデータをもとに、次にくるものは何かということを予測する問題を解くために生まれたものでした。たとえば文章で冒頭の400語を読ませて、次に来る語を推測させるような場合、Attention機構は直前の5単語の内容を重視するようなしくみになっています。これは直前の5単語に注意(Attention)を向けているように見えるということです。
しかし、このしくみには問題があります。たとえばミステリーなどでラストで一気に伏線が回収されるような作品がありますが、Attention機構のしくみではラストの展開を予測するのに直前の数ページ分しか重視しないようなことになるわけです。この問題はChatGPTでも残っており、あれこれ質問を続けているとChatGPTが前の質問をどんどん忘れていくような感覚を覚えることがあります。
4. Transformerの革新性
Attention機構をもつモデルはTransformerより前から存在していました。ではTransformerの何が革新的だったのか。それはEncoder-Decoder式の従来のモデルとは異なる構造にあります。
Encoder-Decoderモデルとは、ある入力データを受け取るとそれをEncoder層で一度符号化(Encode)し、情報を圧縮したうえで今度はそれをDecoder層で復号化(Decode)して出力するという構造をもつモデルです。この構造を持たせることによってパフォーマンスが改善されたため、自然言語処理の領域ではTransformerが登場する前から研究・開発が進められていました。Encoder-Decoder構造をもつモデルは一般的に、再帰構造をもつRNN(リカレントニューラルネットワーク)や畳み込み処理を行うCNN(畳み込みニューラルネットワーク)とAttention機構を組み合わせたEncoder-Decoderモデルが中心でした。
Transformerではこうした再帰や畳み込みの処理を使わず、Attention機構だけを使ってEncoder-Decoderモデルを構築しました。その結果、計算量は減少し、学習の精度(BLEUスコア)は改善されました。また、それまでは逐次計算が必要でしたが、Transformerでは並列処理が可能になったため、モデルの訓練時間を短縮することもできるようになりました。
※BLUEスコア:機械翻訳の分野で現在もっともよく利用されている評価基準。翻訳者による翻訳との類似度を計算してスコアを出し、スコアが高い方が精度が高いと判断される。
5. GPT-3の限界
GPTは当初から大規模言語モデル(Large Language Model:LLM)として登場しました。それまでの自然言語処理モデルより精度は高かったものの、いくつか根本的な問題が指摘されてもいました。以下の3つはOuyangらの論文(Ouyang, L et al [2022])で指摘されている問題点で、カッコ内の英語は論文中の表現を引用したものです。
問題点①事実と反する文を生成してしまう("making up facts")
問題点②偏ったテキストや毒性の強いテキストを生成することがある("generating biased or toxic text")
問題点③ユーザーの指示に従わない場合がある("not following user instructions")
こうした問題点を受けて、Ouyangらはこれらの自然言語処理モデルの基本的な問題点を次のように表現しました。
「これらのモデルはユーザー向けに調整されていない」("these models are not aligned with their users")
ここで「調整」(align)という表現が使われていることに注意してください。ChatGPTやInstructGPT関連の論文では、この "align" ないし "alignment" という表現がしばしば登場します。モデルを改善するときの方向性として、「人間向けに表現同士の関係をうまく調整(align)できているか」ということを意識しているわけです。
6. InstructGPTの学習過程
ステップ1. 教師ありファインチューニング(Supervised Fine-Tuning:SFT)
訓練を受けたラベル付け師(Trained Labeler)たちが入力プロンプトと出力したい文のデータを用意して、GPT-3を調整(fine tune)します。頭文字をとって「SFTモデル」と呼ばれています。
ステップ2. 報酬モデル(Reward Model)を作る
人間の代わりに「文の良さ」を評価するモデルで、「文の良さ」として以下の3つの指標を人間が評価し、パラメータ数が60億のGPT-3に学習させます。
- 真実性(Truthfulness):デマやミスリードの情報でないか
- 無害性(Harmlessness):人や環境を物理的・精神的に傷付けていないか
- 有益性(Helpfulness):ユーザーの問題解決に役立つか
ステップ3. 人間からのフィードバックを通じた強化学習(Reinforcement Learning from Human Feedback:RLHF)
ステップ1で用意したSFTモデルを強化学習させます(ステップ2で作った報酬モデルで定義された報酬を最大にするような方策(policy)をSFTモデルに学習させる)。InstructGPTではPPO(Proximal Policy Optimization)という強化学習のアルゴリズムを修正したものを採用しています。PPOはTRPO(Trust Region Policy Optimization)というアルゴリズムの問題を解消するために生まれたものです。
もともとTRPOというのは、強化学習の分野のなかで「方策勾配法」(Policy Gradient)のひとつとして生まれたものでした。方策勾配法は、あるやり方(=方策)が間違っていたら軌道修正してまた試すということを繰り返しながら報酬を最大化しようという考え方ですが、別の方向に進む場合に「どれくらい進むのか」がわからないという問題がありました。もし右へ3歩進めばいいだけなのに、20歩進んでしまったら、せっかく方向が合っていても台無しというわけです。
そこで、方向を変えるときにだいたいこの範囲で進むという制約を課すという工夫をしたのがPPOです。Clipped Surrogate Objectiveといって、更新する範囲を「クリッピング」という処理によって制限しています。
7. InstructGPTの学習における細かい工夫
ステップ3のRLHFにおける工夫を紹介します。
①Kullback-Leibler正則化項を追加
ただ方策(Policy)を学習させるだけでは、「報酬ハッキング」(Reward hacking)が生じるおそれがあります。報酬ハッキングとは、報酬を最大化することを目的にしたモデルが、望ましくない方策を学習してしまうことです。いい点を取るために「ずる」をするようなものです。このケースではせっかくステップ1で人間社会になじむような調整を行ったのに、そのSFTモデルとはかなり違った出力をするような状況を意味します。人間の社会においては、必ずしも目的が手段を正当化するとは言えません。ある程度の範囲内でふるまうことが求められるため、強化学習にもその辺の事情を学んでもらおうということですね。
ではどうするかというと、学習に使う目的関数に正則化項を追加し、出力を調整します。具体的には上述のPPOの式に「Kullback-Leiblerダイバージェンス」を使った正則化項を追加しています。Kullback-Leiblerダイバージェンスとは、二つの確率分布がどれくらい似ているかを表す指標で、2つの確率分布の違いが大きいほど大きな値をとります。ここでは、強化学習で出力された文が得る報酬と、ステップ1で作ったSFTモデルで出力された文が得る報酬を比べます。この2つの報酬の違いが大きいほど、ステップ1で作ったモデルからかけ離れた出力をしてしまっているとみなし、ペナルティとして報酬を減らすようにしているわけです。人間社会の基準から離れるほどKLダイバージェンスによるペナルティが大きくなっていきます。
②対数尤度を追加
InstructGPTではKLダイバージェンスの他にも、言語モデルの対数尤度を表現する項も追加されています。これはPPOを使って学習した方策では汎化性能が落ちてしまうという問題を避けるための工夫です。InstructGPTについて書かれた上述のOuyangの論文[2022]では、人間が使うことを意識して調整(alignment)をしようとすると汎化性能の劣化というコストを払うことになるという意味で、これを「アラインメント税」(alignment tax)と呼んでいます。比喩的に言えば、対数尤度の追加というのは、汎化性能の劣化という税を避けるための租税回避策です。
8. まとめ
ChatGPTについて、TransformerやAttention機構、InstructGPTの学習過程と強化学習部分の工夫についてみてきました。ChatGPTは世界中の様々な業種の人々が利用するようになってきており、日常会話でもChatGPTが話題になることが増えています。もちろんこれが最終解決策ではありませんが、ここまでで書いてきたような仕組みでプログラムを実行することで、人間社会のさまざまなタスクが代替できてしまうかもしれないというのは興味深いものがあります。
ChatGPTについては、それを使う人間の「聞き方」(プロンプト)が重要な側面もあります。同じことを聞いているつもりでも、聞き方が違うだけで答えが変わり、一方では正しい答えを返すが、他方では間違った答えを返してくるということもあります。対話型の人工知能の発達によって、むしろ人間の側が人工知能とうまく対話する能力を問われているというのは不思議なものです。
9. 参考文献
[1] @omiita 「話題爆発中のAI「ChatGPT」の仕組みにせまる!」(Qiita)
[2] かわしましんじ「ChatGPTやInstructGPTはなぜユーザーの意図に沿った返答を生成できるのか?」(@IT)
[3] @ThothChildren 「Attention機構」(2018.12.8)
[4] Amodei, D. et al “Concrete Problems in AI Safety” [2016] ★
[5] Ouyang, L. et al “Training language models to follow instructions with human feedback” [2022] ★
[6] Lambert, N. et al “Illustrating Reinforcement Learning from Human Feedback(RLHF)” [2022]
[7] Vaswani, A. et al “Attention Is All You Need” [2017]
[8] Schulman, J. et al “Proximal Policy Algorithms” [2017] ★
[9] Schulman, J. et al “Trust Region Policy Optimization” [2015] ★
[10] Simon, S. Du. et al “Gradient Descent Provably Optimizes Over-parameterized Neural Networks” [2019]