※本記事は、Stanford CS224N: NLP with Deep Learning | Spring 2024 | Lecture 10 - Post-training by Archit Sharmaの講義内容を基に作成されています。この講義は、1. Zero-Shot (ZS)とFew-Shot (FS) In-Context Learning、2. Instruction fine-tuning、3. 人間の好みに基づく最適化(DPO/RLHF)、4. 今後の展望について扱っています。講義の詳細情報はStanfordのオンラインAIプログラム(https://stanford.io/ai )でご覧いただけます。本記事では、講義内容を要約・整理しております。なお、本記事の内容は原講義の内容を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの講義動画(https://www.youtube.com/watch?v=35X6zlhoCy4 )をご覧いただくことをお勧めいたします。
講師のArchit Sharma氏はStanfordの博士課程学生であり、この講義はChristopher Manning教授(Thomas M. Siebel機械学習教授、言語学・コンピュータサイエンス教授、Stanford人工知能研究所(SAIL)所長)が指導する「CS224N: NLP with Deep Learning」コースの一部です。Stanfordオンラインは、スタンフォード大学全体の学校や部門が提供する学術的・専門的教育のためのポータルであり、Stanford工学部のグローバル・オンライン教育センター(CGOE)によって運営・管理されています。
1. イントロダクション
1.1. 大規模言語モデルのスケーリングトレンド
私たちの分野で非常に基本的なことの一つが、このスケーリング則とモデルが増々大きくなり、より多くの計算リソースを使用するようになっているという事実です。これは1950年代から現在までのモデルのグラフで、約10^24フロップス(浮動小数点演算)まで示しています。ただし、このグラフはすでに古くなっており、現在は10^26フロップスをはるかに超えています。しかし、このグラフから明らかなトレンドと傾向が見て取れます。
より多くの計算能力にはより多くのデータが必要です。なぜなら、意味のあるものに対して訓練する必要があるからです。これが、言語モデルの事前学習に使用される言語トークンの量のおおよそのトレンドです。このプロットも古くなっていますが、2022年には約1.4兆トークンまたは単語が言語モデルの事前学習に使用されていました。2024年の現在、私たちはどこにいるでしょうか?
良い推測ですね。私たちは約15兆トークンに近づいています。最近のLlama 3モデルは約15兆トークンで訓練されました。一秒だけ考えてみてください。これは膨大な数の単語です。私たちの誰も生涯にわたって何兆ものトークンを聞くことはないでしょう。これが現在の私たちの立ち位置です。
1.2. 計算能力と学習データの増加傾向
事前学習のために使われる計算能力とデータ量は急速に増加し続けています。これらの計算とトークンを処理するには膨大なコストがかかります。現在、これらの実行に数億ドルが費やされています。なぜこれほど多くの資金が投入されているのでしょうか?
2022年の時点では、言語モデルの事前学習には約1.4兆のトークンが使用されていました。驚くべきことに、2024年現在では約15兆トークンにまで増加しています。最近のLlama 3モデルはこのような規模で訓練されています。これは人間が一生涯で接するよりもはるかに多い言語データ量です。
このデータ量と計算能力の増加は、モデルの性能向上に直接的に寄与しています。事前学習段階でのスケールアップは、後の応用段階でも継続的な恩恵をもたらすことが示されています。この傾向は今後も続くと予想され、より多くのデータと計算リソースを使用することで、モデルの能力はさらに進化し続けるでしょう。
1.3. 事前学習で獲得される能力
事前学習では実際に何を学習しているのでしょうか?なぜ人々はこれほど多くの資金や計算リソースを費やしているのでしょうか?これらの計算とトークンは膨大なコストがかかり、こうした実行には数億ドルが投じられています。
基本的には、テキストトークンや言語トークンを予測することを学習していますが、その過程で何を獲得しているのでしょうか。これまで学んできたことを思い出すと、私たちは「スタンフォード大学はカリフォルニア州サンタクララにある」といった知識を学習しています。また、文の構文や意味も学習しています。広く言えば、データ分布によって様々な言語についても学習しています。
しかし、私たちが日常的に対話するモデルは非常に知的です。それはどこから来ているのでしょうか?単に事実的なことや単純な損失関数を最適化することから、どのように知性が生まれるのでしょうか?
興味深いことに、次トークン予測の損失を最適化すると、単に構文や知識だけでなく、エージェントの信念や行動のモデルも形成し始めることが最近の研究で示されています。これは推測的な証拠ですが、データに適合させるだけでなく、より意味のあるものを学習し始めていることを理解するのに役立ちます。
例えば、「パットがボーリングボールと葉っぱを同時に落とすデモンストレーションを見ている」という文があります。「パットは物理学者であり、ボーリングボールと葉っぱが同じ速度で落ちると予測する」という続きがあれば、私たちは重力の仕組みを知っています。しかし、最後の文を「パットはこのデモンストレーションを見たことがなく、ボーリングボールが先に地面に落ちると予測する」に変えると、このような実験を見たことがない人は直感的にそう考えるかもしれません。言語モデルがこれを予測するためには、人間がどのように機能するかについての理解が必要です。
同様に、言語モデルは数学、コードの記述、医療など多くの分野で能力を獲得します。私は毎日のようにコードを書くのに助けを借りていますが、数行のコマンドや関数テンプレートを書くだけで、自動的にコードを補完してくれます。完璧ではありませんが、あなたの意図についてより深い理解がなければ、そのような能力は生まれないでしょう。
このように、言語モデルは汎用的な多機能アシスタントとして出現しています。テキストトークン予測から始まり、多くの異なるタスクを実行できる段階に達しています。これは非常に興味深い進化です。
2. ゼロショットとフューショット学習
2.1. GPTモデルの進化
ゼロショットとフューショット学習の概念を説明するために、GPT(Generative Pre-trained Transformer)モデルのシリーズを例として取り上げます。このモデルシリーズは2018年頃に始まり、2020年頃までにGPT、GPT-2、GPT-3が開発されました。
まず初期のGPTモデルから始めましょう。これはデコーダーのみのモデルで、約4.6GBのテキストで訓練され、12層のトランスフォーマー層を持ち、次トークン予測の損失で訓練されました。最初のモデルは非常に優れたものではありませんでしたが、事前学習技術が汎用タスクに非常に効果的であることを示し始めました。
その後、同じレシピを取り、モデルサイズを増加させました。GPT-1の1億1700万パラメータから、GPT-2は約15億パラメータに拡大しました。同時にデータ量も4GBから約40GBに拡大しました。例えば、Redditのデータを使用する際には、投票数によってデータをフィルタリングするなど、様々な工夫が事前学習には含まれています。
GPT-2ではゼロショット学習という現象が顕著になりました。従来の分野では、モデルを事前学習した後、少数の例を用いて更新し、特定のタスクに適応させるという考え方がありました。しかし、より多くのデータとより多くのタスクで事前学習すると、モデルは例を示さなくても(ゼロショット)タスクを実行できるようになるという現象が見られるようになりました。
GPT-2からGPT-3へと進化する過程では、パラメータ数は15億から1750億へ、データ量も40GBから600GB以上へと大幅に増加しました。このようなスケーリングによって、モデルの能力は飛躍的に向上し、より複雑なタスクにも対応できるようになりました。
2.2. ゼロショット学習の基本概念と例
ゼロショット学習とは何でしょうか?これは事前学習されたモデルがタスク固有のファインチューニングなしで、例を一つも示さずにタスクを実行できる能力を指します。GPT-2でこの現象が顕著に現れ始めました。
ゼロショットでのタスク特化学習を実現するには、創造的なアプローチが必要です。これらのモデルはテキスト予測モデルであり、テキストを入力するとそれに続く内容を補完します。そこで、モデルに私たちが関心を持つタスク(質問応答など)を完了させるよう誘導できれば、タスクを解決させることができます。
例えば、トム・ブレイディについて質問したい場合、トム・ブレイディに関する情報を設定し、答えてほしい質問を入力すると、モデルは自動的に補完します。これは初期の視点では、これらのモデルは非常に高度な自動補完モデルと見なすことができます。
同様に、文中の参照対象を特定したい場合、例えば「猫は大きすぎてハットに入れませんでした。なぜならそれは大きすぎたからです」という文で「それ」が何を指しているかを調べるには、「それ」を「猫」または「ハット」に置き換えて、どちらの確率が高いかをモデルに測定させることができます。これにより参照対象を推測できます。
これらはトレーニングデータには存在しないタスクですが、単にテキストを予測する能力を活用することで、他のタスクにも応用できるようになります。GPT-2では、タスク固有のファインチューニングや特別なトレーニングなしに、単にモデルのパラメータとデータ量を拡大することで、多くの異なるタスクで最先端の性能を確立しました。
例えば、ニュース記事の要約を行いたい場合、ゼロショットモデルにどう対応させるか?この答えは、文書を文脈に入れて、その後に「TL;DR」と入力するだけです。インターネット上のデータでは「TL;DR」(too long; didn't read)の後には通常要約が続くため、モデルは自然と要約を生成します。このように特別な訓練なしでも、単に事前学習データの特性を活用することで、効果的な要約性能を得ることができます。
2.3. フューショット学習の特徴と効果
GPT-2でゼロショット学習が出現したのを見てきましたが、GPT-3で興味深く現れた現象がフューショット学習です。フューショット学習はやや簡単に思えるかもしれませんが、文脈に数例を入れるだけで最先端のモデルを上回り始めたことが非常に興味深い点です。
フューショット学習とは何を意味するのでしょうか?一般的な考え方は、解決したいタスク(例えば翻訳)の例をいくつか文脈に入れ、それだけで完了させるというものです。勾配の更新や従来の意味での学習は一切行われません。いくつかの例を入力するだけで、タスクを解決する方法を理解するのです。これは驚くべきことではないでしょうか?
例えば、翻訳タスクで英語からフランス語への翻訳例をいくつか入力すると、モデルはパターンを認識し、新しい文を翻訳できるようになります。これは従来の方法のように大量のデータで特化モデルを訓練する必要がないことを意味します。
グラフを見ると、ゼロショット性能から始めて、英語からフランス語への翻訳例を1つ入れると性能が向上し、数例入れるだけで最先端のモデルに近づきます。このグラフでは「Bird+」というモデルが示されていますが、これは大量の翻訳データのみで訓練されたモデルで、それよりもやや性能が低いものの、フューショット学習だけでも競争力のある結果が得られます。
この「文脈内学習」の能力はスケールによって出現します。パラメータ数と計算リソースを増やすことで、数例だけからでも強力な性能を発揮する能力が現れます。最近の研究ではこれがそれほど「創発的」ではないかもしれないという主張もありますが、一般的な考え方としては、モデルのパラメータ数と計算量を増やすと、少数の例から学習する能力が向上することが示されています。
この方法は従来のファインチューニングのアプローチとは大きく異なります。従来は例を繰り返し処理して勾配更新を行うのではなく、単に数例を示すだけで(フューショットプロンプティング)システムを得ることができます。モデルは提示された例からタスクを推測できるようになるのです。
2.4. スケールによる能力の創発
フューショットプロンプティングがより大きなモデルで特に効果的である理由の一つは、スケールによる能力の創発と呼ばれる現象です。計算能力とデータ量が増加するにつれて、モデルは新たな能力を獲得し始めます。
グラフで見ると、モデルサイズが大きくなるほど、少数の例からタスクを学習する能力が劇的に向上します。この現象について、一部の研究者は「創発的」という表現に異議を唱え、軸を正しく描画すれば創発感が薄れるという主張もあります。しかし一般的な考え方としては、パラメータ数と計算量を増やすにつれて、少数の例から強力な性能を発揮する能力が向上します。
この創発的な性質は、ゼロショットとフューショットの両方の学習で観察されます。例えば、小さなモデルでは特定のタスクをゼロショットで解決できないかもしれませんが、モデルサイズが特定の閾値を超えると、突然そのタスクを実行できるようになります。
しかし、ゼロショットプロンプティングとフューショットプロンプティングにも限界があります。特に、複数のステップによる推論を必要とするタスクはこれらの手法だけでは難しい場合があります。例えば、桁数の多い加算などのタスクは、人間も同様に苦手とすることが多いです。
モデルのサイズとスケールが増加するにつれて、私たちが観察している「創発的」な能力は、単にモデルが事前学習中に接した膨大なデータからパターンを抽出する能力が向上しているためと考えられます。しかし、このスケーリングが永続的に続くわけではなく、特定のタスクにはプロンプティング以上の技術が必要になることもあります。
この創発的な振る舞いは現在も活発な研究分野であり、なぜ特定の能力が特定のスケールで現れるのか、どのようなタスクが特に恩恵を受けるのかを理解するために多くの研究が行われています。
3. Chain of Thoughtプロンプティング
3.1. 推論を必要とするタスクへの対応
ゼロショットプロンプティングとフューショットプロンプティングを見てきましたが、これらの手法にはまだ限界があります。特に、より豊かな多段階の推論を必要とするタスクは非常に難しい課題となります。実際、こうしたタスクは人間も苦手とすることが多いです。
例えば、数字が増えるにつれて加算のような基本的な計算タスクも複雑になります。これらの課題に対処するためには、プロンプティングの方法をさらに工夫する必要があります。つまり、モデルがタスクを実行するよう誘導するためには、より創造的なアプローチが必要なのです。
ここで登場するのがChain of Thought(思考の連鎖)プロンプティングという技術です。これまでは、モデルにタスクの種類を示し、ゼロショットでタスクを学習させることを試みてきました。しかし、タスクを示すだけでなく、タスクについて推論するプロセスも示すという新しいアプローチが考えられるようになりました。
例えば、単純な数学問題を解く場合、直接的に答えだけを示す代わりに、その問題をどのように考え、ステップバイステップで解いていくかを示します。これにより、モデルは単に答えを出力するのではなく、タスクについて推論するようになります。
この手法が特に効果的なのは、複雑な数学的問題や論理的思考を必要とするタスクです。通常のプロンプティングでは解けない問題も、推論のプロセスを示すことで正確に解けるようになります。また、Chain of Thoughtは、モデルのスケールに比例して効果が高まることも示されています。
ますます複雑なタスクに対応するためには、単に「何をすべきか」だけでなく「どのように考えるべきか」をモデルに教えることが重要になっているのです。これは人間の学習に似ており、単に答えを教えるのではなく、問題の解き方を教えることに焦点を当てています。
3.2. Chain of Thoughtの実装方法
Chain of Thought(思考の連鎖)プロンプティングの実装方法は比較的シンプルですが、非常に効果的です。この手法は、モデルにタスクの例だけでなく、そのタスクについて推論するプロセスも示すことで機能します。
具体的には、単に問題と答えのペアを示すのではなく、問題から答えに至るまでの思考過程を詳細に記述します。例えば、数学の問題を解く場合、「この問題の答えは42です」と直接示すのではなく、「まず、この部分を計算して20を得ます。次に、この値を2倍して40を得ます。最後に2を加えて、答えは42になります」というように、解答に至るまでの論理的なステップを全て含めます。
この方法を実装すると、モデルは単に答えを出力するだけでなく、問題について推論し始めます。実験結果によると、この手法は特にスケールの大きなモデルで効果的であり、監視付きの最高モデルよりも優れた性能を示すことがあります。例えば、540億パラメータを持つPaLMモデルは、Chain of Thoughtプロンプティングを用いることで、特定のタスク向けに訓練された最先端モデルを上回る性能を達成しました。
重要なのは、推論チェーンを示すことで、モデルは複雑な問題を小さなステップに分解し、各ステップを論理的に解決する方法を学ぶことができるという点です。これは特に複数のステップや概念の統合が必要な問題で効果を発揮します。
この手法は、従来のフューショットプロンプティングを拡張したものと考えることができます。タスクの例を示すだけでなく、タスクの解決方法に関する詳細な推論過程も提供することで、モデルの理解と性能が大幅に向上するのです。
3.3. "Let's think step by step"の効果
Chain of Thoughtの推論能力をさらに発展させた興味深い発見があります。モデルに推論の例を示さなくても、単に「Let's think step by step(一歩ずつ考えてみましょう)」という短いフレーズを回答の冒頭に置くだけで、モデルに推論行動を誘発できるというものです。
この手法は「Zero-shot Chain of Thought」と呼ばれ、例を一つも示すことなく、モデルに推論させる方法です。単に「Let's think step by step」という言葉を使うだけで、モデルは自動的に答えを出すのではなく、問題について推論し始めます。
実際の性能を見ると、通常のゼロショットでは17.7%だった正解率が、この「Let's think step by step」を付け加えるだけで78.7%に大幅に向上します。これは複数の推論例を示すフューショットChain of Thoughtの性能には及ばないものの、非常に簡単な方法で劇的な改善が得られます。
この発見から学べる重要な教訓は、これらのモデルとの対話方法です。最初からモデルが望ましい振る舞いをしないかもしれませんが、しばしばモデルは望む振る舞いを行う能力を持っており、その振る舞いを引き出す方法を考える必要があります。
正しいアプローチは、「インターネット上のデータにあるどのような内容が、私が望む振る舞いに似たものを誘発するだろうか」と考えることです。例えば、ステップバイステップの推論は、解説的なコンテンツや教育的なコンテンツでよく見られるため、「Let's think step by step」という表現がそのような推論モードをモデルに誘発するのです。
この単純だが効果的な手法は、モデルの能力を最大限に引き出すためのプロンプト設計の重要性を示しています。適切な言葉を選ぶことで、モデルの潜在的な推論能力を活性化させることができるのです。
3.4. プロンプト設計の重要性
プロンプトをどのように設計するかは、モデルから得られる結果に大きな影響を与えます。これまで見てきたように、単に「Let's think step by step」というフレーズを追加するだけで、性能が17.7%から78.7%へと劇的に向上することがあります。これは、適切なプロンプト設計がモデルの潜在能力を引き出す鍵となることを示しています。
プロンプト設計において重要な考え方は、モデルが事前学習で接したデータの特性を理解し、それを活用することです。例えば、教育的なコンテンツや解説的な記事では、ステップバイステップの説明がよく使われます。そのため、「Let's think step by step」というフレーズは、モデルにそのような文脈を思い出させ、同様の形式で回答するよう促します。
また、我々が手動でプロンプトを設計するだけでなく、LLM自体にプロンプトを設計させることもできます。これは「recursive self-improvement(再帰的自己改善)」と呼ばれる考え方で、モデル自体にプロンプトを最適化させることで、さらに性能を向上させることができます。
しかし、プロンプティングによるアプローチには制限もあります。コンテキストウィンドウには限りがあるため、入れられる例の数は制限されます(最近のモデルではコンテキストが拡大していますが、依然として制限は存在します)。また、モデルを「だます」ようにして特定のタスクを実行させるのではなく、直接そのタスクを実行するようモデルを調整する方が理想的です。
この問題を解決するために、次のセクションで説明する「instruction fine-tuning(命令調整)」が登場します。これにより、プロンプトでモデルをだますのではなく、直接ユーザーの意図に応じた応答をするようモデルを調整できるようになります。
プロンプト設計は依然として重要な技術ですが、モデルの使用目的や求める性能によっては、さらに進んだ調整技術が必要になることもあります。
4. 命令調整(Instruction Fine-tuning)
4.1. 事前学習モデルの制限
これまで、ゼロショットやフューショット学習、Chain of Thoughtプロンプティングを通じてモデルがタスクを実行する方法を見てきました。しかし、これらの手法にはまだ不満が残ります。モデルに「だまし」を使ってタスクを実行させるのではなく、単純にユーザーが望むタスクを直接実行してくれる方が理想的です。
事前学習はユーザー支援のためのものではなく、次のトークンを予測するためのものです。ユーザー支援や指示に従うようにモデルを誘導することはできますが、一般的にそれは事前学習の目的ではありません。この問題を示す例として、GPT-3(非常に強力なモデル)に「月面着陸について6歳児に数文で説明してください」と頼むと、6歳児が何を知りたいかについてさらに質問を続けます。これはユーザーが望んだ応答ではありません。
この現象は、モデルが「ユーザーの意図に沿っていない」と表現されます。次のセクションでは、ユーザーの意図に沿うようにモデルを調整する方法を説明します。プロンプトでモデルをだますのではなく、ユーザーの望む応答を直接提供できるようにします。
事前学習済みモデルからユーザーの意図に応答できるモデルへの移行方法を考えてみましょう。一般的な事前学習とファインチューニングの考え方は、多様な言語タスクで事前学習した後、特定のタスクでファインチューニングするというものです。従来は同じデコーダーのみのモデルを使用し、少量のデータで特定のタスクにファインチューニングしていました。
命令調整で異なるのは、少量のデータでファインチューニングするのではなく、多くの異なるタスクでファインチューニングし、それらを単一の使いやすいユーザーエクスペリエンスに統合するという点です。これが命令調整(instruction fine-tuning)の登場する場面です。
4.2. 命令調整の基本的アプローチ
命令調整のレシピはそれほど複雑ではありません。基本的なアプローチは、命令と出力のペアを多数収集することです。これらの命令は質問応答、要約、翻訳、コード作成、推論など、様々なタスクと形式にわたります。
具体的な手順としては、これらの多様なタスクに関連する多くの例を収集し、命令と出力のペアを正確に使って訓練します。その後、未見のタスクでも評価を行います。これが命令調整の一般的なパラダイムです。
ここでも事前学習と同じように、データとスケールが非常に重要です。最近では、単一のタスクから始まり、数千のタスクへと拡張し、300万以上の例を持つデータセットが使用されています。命令調整用データセットで見られる一般的なタスクの範囲は非常に広く、なぜこれをファインチューニングと呼ぶのかと疑問に思うかもしれません。事前学習に近いように見えるからです。しかし、これらは単なる用語の違いであり、自分が快適だと感じる表現を選べばよいでしょう。
命令調整に使用されるデータセットの例としては、質問応答(一般、事実ベース、推論)、要約(記事、書籍、議論)、分類(感情、トピック、有害性)、情報抽出、翻訳、コード生成、創造的ライティング、数学的推論など多岐にわたります。
この大規模な命令データセットを収集し、モデルをファインチューニングしたら、次の疑問は「これらのデータセットをどのように評価するか」です。言語モデルの評価は非常に難しいトピックであり、考慮すべきバイアスが多くあります。最近の進歩として、MLU(Massive Language Understanding)のような大規模ベンチマークが作成され、モデルは多様な知識領域で広範囲にテストされています。
このようなベンチマークでは、天文学や生物学といった様々な分野に関する多肢選択式の質問が含まれます。例えば、「タイプ1a超新星について何が正しいか」や生物学に関する質問などです。命令調整済みのモデルであれば、単に質問に答えることができますが、Chain of Thoughtプロンプティングやフューショットプロンプティングを使用することもできます。
4.3. データ収集と評価方法
命令調整のためのデータ収集は、事前学習とは大きく異なります。事前学習データの収集はウェブからのスクレイピングで済みますが、命令調整では特定の形式の高品質なデータが必要です。命令と出力のペアは、人間が作成または評価する必要があるため、多大なリソースが必要となります。
このデータセットには、数千のタスクにわたる300万以上の例が含まれており、その規模は従来のファインチューニングデータセットを遥かに超えています。これらのデータは、質問応答、要約、翻訳、コード生成、創造的ライティング、数学的推論など、非常に広範囲なタスクをカバーしています。
データ収集の際は、各タスクの多様性を確保することが重要です。例えば、質問応答では一般的な質問、事実に基づく質問、推論を必要とする質問など、異なるタイプの質問を含める必要があります。同様に、要約では記事、書籍、議論の要約など、異なる文脈での要約スキルが求められます。
評価方法については、言語モデルの評価は非常に複雑なトピックです。MLU(Massive Language Understanding)のような大規模ベンチマークが開発され、モデルは天文学、生物学、歴史、法律、医学など多様な知識領域でテストされます。
MLUの例としては、「タイプ1a超新星について何が正しいか」「生物学的概念Xについて説明せよ」といった多肢選択式の質問があります。これらの質問は、モデルが幅広い領域での知識をどれだけ獲得しているかを測定するのに役立ちます。
評価では、単に正解率だけでなく、モデルの応答の質や適切さも重要です。MLUベンチマークでは90%が人間レベルの知識や理解の目安とされ、最近ではGeminiモデルがこの数値を超えたと報告されています。
しかし、評価ベンチマークにはそれぞれ限界があり、特定のベンチマークでの改善が実際のモデル性能の向上を正確に反映しているかは常に疑問が残ります。モデルがベンチマークの問題に間違えた場合でも、質問自体が曖昧だったり不明確だったりすることもあります。最終的には、ベンチマークは特定の限られた効用しか持たないことを認識する必要があります。
4.4. MLUベンチマークと評価の課題
言語モデルの評価、特に命令調整されたモデルの評価は非常に複雑な課題です。MLU(Massive Language Understanding)のような大規模ベンチマークは、モデルの多様な知識領域にわたる能力を測定するために作成されています。
MLUベンチマークにおける進歩は、GPT-2から始まり、現在では約90%の性能に達しており、これは人間レベルの知識や理解の目安とされています。最近ではGeminiモデルがこの数値を超えたと報告されています。この90%というベンチマークは、モデルが人間に匹敵する知識レベルに達したことを示す重要な指標と考えられています。
しかし、こうしたベンチマークには重要な限界があります。第一に、トレーニングデータとテストデータの間に漏洩(リーク)が発生する可能性があります。これは、モデルが実際にはテストデータの内容を事前に学習している可能性があることを意味し、純粋な一般化能力の評価を難しくします。
さらに、モデルが質問に誤答した場合でも、実際には質問自体が曖昧だったり不明確だったりする場合があります。このような場合、ベンチマークスコアの向上がモデルの実際の能力向上を正確に反映しているかは疑問です。
評価の別の側面として、T5モデルのような命令調整モデルでは、モデルのサイズが大きくなるほど命令調整の効果も大きくなることが観察されています。例えば、T5スモールからT5 XXL(110億パラメータ)へと規模が大きくなるにつれて、事前訓練モデルから命令モデルへの改善幅が6.1%から26.6%へと拡大しています。これは、より大きなモデルほど命令に従う能力が向上することを示しています。
最終的に、評価ベンチマークは特定の限られた効用しか持たず、モデルの実際の有用性を完全に捉えることはできません。あるポイントでは、モデルが実世界で役立つタスクを効果的に実行できるかどうかが、ベンチマークスコアよりも重要になります。モデルがユーザーにとって価値のあるタスクをすべて上手く実行できれば、特定のベンチマークでの性能はそれほど重要ではなくなります。
評価の課題は継続する研究テーマであり、より良いモデル評価方法の開発は、言語モデル研究の重要な側面となっています。
5. 命令調整の限界
5.1. 人間によるラベル付けのコスト
命令調整は非常に効果的ですが、重要な限界があります。その第一は、データ収集のコストです。命令調整は人間が作成したラベル付きデータに依存していますが、これは非常に高コストです。特に質問がより複雑になるにつれて、データ収集のコストは急激に増加します。
特に物理学博士レベルの質問や専門的な内容に対する回答を収集しようとすると、そのコストは極めて高くなります。命令調整の品質はデータの品質に直接依存するため、高品質のデータを収集することは不可欠ですが、同時に非常に費用がかかります。
この問題は直感的に明らかかもしれません。事前学習ではウェブからデータをスクレイピングするだけで済みますが、命令調整では指示に対する回答を作成するために特定の人材を確保する必要があります。数百万の例に対してこれを行うとなると、コストは急速に積み上がります。
また、ユーザーが関心を持つ質問の範囲は非常に広く、すべてを網羅することは実質的に不可能です。特にニッチな専門分野や最新の内容に関する質問では、適切な回答を持つ訓練データを収集することが特に困難になります。
このコスト問題は、命令調整を大規模に実施する際の主要な障壁であり、より効率的なデータ収集方法や、少量の高品質データで効果的に学習できるモデルアーキテクチャの開発が継続的な研究課題となっています。
最終的に、命令調整データの収集コストが高いことは、よりコスト効率の良い代替手法を探求する動機となっており、後のセクションで説明する人間の好みに基づく最適化(RLHF)などの手法が注目されるようになっています。
5.2. オープンエンドな創造的タスクの難しさ
命令調整のもう一つの重要な限界は、創造的なタスクのような特定のオープンエンドなタスクに対処する際の困難さです。創造的な作業、物語の執筆、詩の創作、脚本の作成などのタスクでは、「正解」と呼べるものが本質的に存在しません。
このような創造的タスクでは、「正しい答え」を生成するためのデータを収集することが非常に難しくなります。例えば、「恐竜についての物語を書いてください」という指示に対して、無数の素晴らしい回答が存在しえます。どの回答が「最適」であるかを客観的に判断することはほぼ不可能です。
創造的タスクは主観的な評価に大きく依存しており、何が「良い」物語や詩であるかに関する意見は人によって大きく異なります。あるユーザーが好む文体や内容が、別のユーザーには合わないかもしれません。このような主観性は、訓練データの作成を特に難しくします。
さらに、創造的タスクではしばしば一貫性、独創性、感情的な影響力など、単純な正確さ以外の側面が重要になります。これらの側面を客観的に評価し、訓練データに組み込むことは非常に困難です。
また、創造的タスクはしばしば長い出力を必要とし、これはより多くのトークンを生成する必要があることを意味します。このため、エラーが蓄積するリスクが高まり、長いテキスト全体の品質を保証することがより難しくなります。
命令調整は標準的な事実ベースの質問応答や明確に定義されたタスクでは効果的ですが、オープンエンドの創造的タスクでは、訓練データの作成と評価の両方において固有の課題があります。これが、後のセクションで説明する人間の好みに基づく最適化など、代替アプローチの探求を促す理由の一つです。
5.3. 言語モデリングの均等な誤り評価
言語モデリングにおける重要な制限の一つは、すべてのトークンレベルの誤りが等しく扱われる点です。命令調整を含む教師あり学習でも同様の問題が発生します。しかし現実には、すべての誤りが同じ重大さを持つわけではありません。
例えば、「アバターはファンタジーTVショーです」という文があるとします。モデルがこれを「アバターはアドベンチャーTVショーです」と予測した場合と、「アバターはミュージカルです」と予測した場合を考えてみましょう。直感的に、アドベンチャーという分類はファンタジーに近く、それほど重大な誤りではないかもしれません。一方、ミュージカルとするのははるかに大きな誤りです。しかし、標準的な言語モデリングでは、これらの誤りは同等に扱われ、同じペナルティが課されます。
このトークンレベルの損失は、単語の選択や構文的な間違いに対して均一なペナルティを適用します。これは事前学習時には効果的かもしれませんが、人間が実際にどのように回答を評価するかとは一致しません。人間は通常、文脈や意味、実用性などに基づいて誤りを評価します。
例えば、医療アドバイスのような重要な情報を提供する場合、小さな事実の誤りが深刻な結果を招く可能性があります。一方、カジュアルな会話では、細かい不正確さは大きな問題にならないかもしれません。しかし、現在の損失関数はこうした誤りの影響の違いを区別しません。
この均一なペナルティの問題は、より複雑なタスクや重要度の異なる情報を含むタスクで特に顕著になります。これは命令調整だけでは解決できない根本的な課題であり、人間の好みや評価をより直接的にモデルに取り入れる方法が必要とされる理由の一つです。
5.4. 人間の好みとの不一致
命令調整の最も根本的な問題の一つは、訓練データの作成に使用される人間が必ずしも最高品質の回答を生成できるとは限らないという点です。モデルが進化するにつれて、これは特に重要な課題となります。
モデルは現在、非常に競争力のある回答を生成できるようになっており、場合によっては人間の専門家が提供する回答よりも優れた回答を生成することがあります。私の経験では、モデルは日々より良い回答を生成するようになっています。そのため、人間に回答を書いてもらうことに依存し続けるべきか、それともそれを超える方法を模索すべきかという疑問が生じます。
さらに重要な問題として、命令調整を行っている場合でも、最終目標と学習方法の間にはまだ大きなミスマッチがあります。最終目標は人間の好みを満たす出力を生成することですが、依然としてより洗練されたデータセットでトークン予測タスクを行っているだけです。
これは重要なポイントであり、次のセクションを理解するために不可欠です。現在の命令調整では、エンドゴールと学習手法の間にはまだずれがあります。エンドゴールは人間の好みに合った出力を生成することですが、我々はまだ予測タスクを行っているだけであり、それも特定のキュレートされたデータセットに対してです。これは依然としてミスマッチが存在することを意味します。
このような制限により、人間の好みを直接最適化する方法が必要となっています。次のセクションでは、人間の好みに基づいて直接モデルを最適化する手法について説明します。これにより、命令調整の限界を克服し、ユーザーの意図により適した出力を生成できるようになります。
6. 人間の好みに合わせた最適化
6.1. RLHF(Reinforcement Learning from Human Feedback)の基本概念
これまでの議論から、デモンストレーションの収集が高コストであること、そしてLM(言語モデル)の目標と人間の好みの間にはまだミスマッチがあることを見てきました。そこで次に、人間の好みを直接最適化する方法について検討します。
人間の好みを最適化するとはどういう意味でしょうか?具体的な例として要約タスクを考えてみましょう。私たちは要約においてモデルをより良くしたいと考えており、人間の好みを満たしたいと思っています。ここで、人間が特定の要約に対して報酬を割り当てることができると想定しましょう。つまり、ある報酬関数があり、「これは+1」「これは-1」といった評価ができるとします。
例えば、サンフランシスコでの地震に関するニュース記事を要約したいとします。モデルが生成した要約1には8.0の報酬が与えられ、要約2には1.2の報酬が与えられたとします。一般的に、私たちが設定したい目標は次のような形式になります:入力Xが与えられたとき、モデルPθが生成する出力Yの報酬r(X,Y)を最大化することです。
この最適化方法は、これまで見てきたものとは根本的に異なります。これまでは、事前学習であれ教師あり微調整であれ、データは別のソースからサンプリングされていました。しかし今回は、モデル自体からサンプリングした出力に対して最適化を行います。つまり、モデルPθから生成されたYを使用して、潜在的には微分不可能な目標を最適化するのです。
大まかに言えば、RLHFのパイプラインは以下のようになります:
- まず命令調整を行い、事前学習モデルを様々なタスクに対応できるようにします
- 次に報酬モデルを推定します - これは指示に対して人間がどの回答を好むか/嫌うかを予測するモデルです
- 最後に、この報酬モデルを用いてモデルを最適化します
第2ステップと第3ステップの詳細については、これから説明していきます。
6.2. 報酬モデルの構築
報酬モデルを構築する際に対処すべき2つの問題があります。まず、人間をループに入れるのは高コストです。モデルに回答を生成させ、人間にスコアを付けてもらうというプロセスを何百万もの回答に対して行うのは、非常にスケールしづらいでしょう。機械学習の授業を受けている皆さんなら簡単な解決策を思いつくはずです。人間が好むもの/好まないものを予測する何かを訓練すればよいのです。
これは本質的には機械学習の問題で、報酬スコアを取り、入力と出力が与えられたときに報酬スコアを予測する報酬モデルを訓練します。シンプルな機械学習の回帰問題です。
しかし、より大きな問題があります。人間の判断は非常にノイズが多いのです。私たちは要約に対してスコアを割り当てたいと言いましたが、これは非常に難しい作業です。例えば、10点満点でこの要約にどのようなスコアを付けますか?私が異なる日に聞かれれば、異なる答えを出すでしょう。さらに、人間間でもこの数値は意味のある方法で調整されていません。あるユーザーは4.1を、別のユーザーは6.6を付けるかもしれません。
これに対処する方法はあります。人間を調整したり、特定のルーブリックを与えたり、彼らと話し合ったりできますが、それは非常に複雑なプロセスです。判断の余地が多く残るため、このようなモデルの訓練には適していません。ラベルが大きく変動する場合、予測は困難になります。
この問題に対処するため、直接報酬ラベルを予測しようとするのではなく、問題を少し異なる方法で設定します。人間にとってより簡単なのは、2つまたは複数の回答を与えられ、どちらが良いかを尋ねられることです。
例えば、ニュース記事全体を与えられ、どの要約が最も良いかを尋ねられれば、「2番目の要約が最悪で、1番目は良く、3番目はその中間くらい」というランキングを提供できるでしょう。これにより、要約に対する選好が得られます。
この方法の重要なポイントは、一貫した効用関数があっても、何かに任意の数値を割り当てるよりも、2つのものを比較してどちらが良いかを知る方がはるかに簡単だということです。そのため、このような方法からの信号の方が信頼性が高くなります。
しかし、このような選好データを得たとして、どのように報酬スコアに変換するのでしょうか?入力と要約を入力して、スコアを得たいのですが、このデータをどのようにそのようなスコアに変換するかは明らかではありません。
ここで、ブラッドリー・テリーモデルが登場します。経済学や心理学では、人間がどのように決定を下すかをモデル化する研究があります。ブラッドリー・テリーモデルは本質的に、人間が回答y1をy2よりも選ぶ確率は、人間が内部的に割り当てる報酬の差に基づいており、それにシグモイド関数を適用すると主張しています。
つまり、勝った回答と負けた回答の間の報酬の差がシグモイド関数を通じて、その勝った回答が選ばれる確率になります。このようにして、選好データから報酬モデルを構築できるのです。
6.3. 人間の好みデータの収集と課題
人間の好みデータを収集する過程には様々な課題があります。まず、人間の判断は本質的にノイズが多いという問題があります。私たちは要約に対してスコアを割り当てようとしていますが、これは極めて非自明なタスクです。
例えば、もし私がある要約を見せて10点満点で評価してくださいと尋ねた場合、どのようなスコアを割り当てますか?私自身が異なる日に尋ねられれば、異なる答えを出すでしょう。さらに、人間によってもこの数値は意味のある方法で調整されていません。ある人は4.1を、別の人は6.6を割り当てるかもしれません。
このような人間の判断のばらつきに対処するためのいくつかの方法があります。評価者に特定の評価基準(ルーブリック)を提供したり、適切なトレーニングを施したり、詳細な指示を提供したりすることができます。しかし、これらはすべて非常に複雑なプロセスであり、判断の余地が多く残るため、モデル訓練には理想的ではありません。ラベルが大きく変動する場合、信頼性の高い予測を行うことは困難です。
この問題に対処するために、絶対評価(特定のスコアを割り当てる)よりも相対評価(どちらが良いかを比較する)の方がはるかに効果的です。人間に同じ入力に対する複数の回答を提示し、どれが最も良いかをランク付けしてもらう方が、各回答に絶対的なスコアを割り当てるよりも一貫性のある結果が得られます。
例えば、ニュース記事の全文を提示し、3つの異なる要約を示して、どれが最も良いかを尋ねる方が、各要約に個別にスコアを付けるよりも信頼性が高いデータが得られます。人間は「2番目の要約が最悪で、1番目は良く、3番目はその中間」というような明確なランキングを提供できます。
このアプローチの重要なポイントは、一貫した効用関数があっても、スケール上に任意の数値を割り当てるよりも、2つのものを比較してどちらが優れているかを判断する方がはるかに簡単だということです。そのため、比較データから得られる信号の方が、絶対評価よりも信頼性が高くなります。
しかし、このようなランキングデータを収集する際にも課題があります。評価者が長いテキストを完全に読まない場合や、個人の好みによってランキングが左右される可能性があります。また、評価基準が明確でない場合、評価者は長さや見た目の良さなど、必ずしも品質と関係のない特性に基づいて判断する可能性もあります。
6.4. Bradley-Terryモデルによる比較データの活用
人間の選好データを収集した後、次の課題はこれをモデルが使える形式の報酬スコアに変換することです。ここで、経済学や心理学の研究から導かれたBradley-Terryモデルが役立ちます。
Bradley-Terryモデルは本質的に、人間が回答y1をy2よりも選ぶ確率は、人間が内部的に割り当てる報酬の差に基づいており、それにシグモイド関数を適用すると主張しています。具体的には、以下の式で表されます:
P(人間がy1をy2よりも選ぶ) = σ(r(y1) - r(y2))
ここでσはシグモイド関数で、r(y)は回答yに対する報酬です。これは二値分類問題と似ています。報酬の差がシグモイド関数を通じて、その回答が選ばれる確率になります。
実際のデータセットでは、勝った回答y_wと負けた回答y_lがあり、勝った回答は負けた回答よりも高いスコアを持つはずです。これを元に、以下のような目標を設定できます:
J = E[log(σ(r(y_w) - r(y_l)))]
ここでEは期待値を表します。つまり、良い報酬モデルは、勝った回答に高い報酬を、負けた回答に低い報酬を割り当てるべきです。この目標を最大化することで、人間の選好を正確に反映する報酬モデルを構築できます。
このアプローチの利点は、絶対的なスコアではなく相対的な選好に基づいているため、人間の評価の一貫性の問題を部分的に緩和できることです。人間が「これは7.5点、これは6.2点」と言うのではなく、「これはあれより良い」という比較判断に基づいています。
報酬モデルが訓練されると、入力xと回答yが与えられたとき、その回答に人間がどのような評価を与えるかを予測できるようになります。このモデルは、次のステップである強化学習の最適化プロセスで重要な役割を果たします。
シグモイド関数は、2つの報酬の差(ロジット)を確率に変換し、その対数を取り、データセット全体の期待値を計算することで、報酬モデルがどれだけ人間の選好を正確に捉えているかを示す最終的な数値が得られます。良い報酬モデルは、一般的に勝った回答には高い報酬を、負けた回答には低い報酬を割り当てるでしょう。
7. 強化学習による最適化
7.1. RLHF実装の複雑さ
RLHFの実装は非常に複雑です。この講義では強化学習の前提知識を想定していないため、高レベルの直感的な説明に留めますが、実際の実装は非常に複雑な過程を含みます。
強化学習は言語モデルだけでなく、ゲームプレイ、ロボティクス、チップ設計など、さまざまな領域で応用されています。RLと言語モデルの組み合わせは2016年頃から存在しましたが、近年のRLHFの成功により、特に注目されるようになりました。
基本的な考え方は以下の通りです:
- 最適化中のモデルを使用して、ある指示に対していくつかの回答を生成する
- 学習した報酬モデルの下でそれらの回答の報酬を計算する
- 高い報酬を持つ回答の確率を増加させるようにモデルを更新する
つまり、モデルからサンプリングすると、様々な品質の回答(タスクに対する良い要約と悪い要約など)が得られます。そして、高い報酬領域に移動するよう対数確率を更新します。
この説明図は理解を助けるためのものではなく、むしろRLHFの複雑さを示すためのものです。価値関数の適合、多数のモデルサンプリング、多くのハイパーパラメータへの感度など、多くの要素が絡み合います。
RLHFパイプラインを実装しようとすると、非常に難しく、多くの技術的な課題に直面します。これが、RLHFが非常に高い計算リソースと専門知識を持つ限られた組織でのみ実施されてきた理由です。一般のコミュニティにはあまりアクセスできませんでした。
この複雑さは、後に説明する直接選好最適化(DPO)のような、より単純な代替手法が開発された主な動機となっています。DPOはRLHFの複雑さを大幅に軽減しながら、同様の結果を達成することを目指しています。
7.2. KLダイバージェンスによる制約付き最適化
RLHFに向けて、まず事前学習モデルまたは命令調整モデルを複製し、そのパラメータを最適化します。最適化したい目標は、モデルPθからサンプリングした完了の予測報酬を最大化することです。この際、真の報酬モデルの代わりに、学習した報酬モデルを使用します。
しかし、この方法には重大な問題があります。学習された指標を最適化する場合、非常に注意が必要です。通常、損失関数は明確に定義されていますが、報酬モデル自体が学習されたものである場合、エラーが含まれることになります。報酬モデルは特定の分布で訓練され、ある程度一般化もしますが、エラーを持ちます。
最適化の過程で学習されたモデルを活用すると、報酬モデルを「ハック」する傾向があります。つまり、言語モデルが報酬モデルの弱点を学習し、報酬モデルが誤って非常に高いスコアを非常に悪い完了に割り当てる場合、それを悪用して意味のない出力を生成するようになるでしょう。
一般的な機械学習のヒントとして、学習された指標を最適化する場合は、その指標が実際に信頼できるものであることを確認する必要があります。この目標をそのまま最適化すると、非常に迅速に無意味な言語モデルに収束してしまいます。
この問題に対処するため、一般的に行われるのは、初期化からあまり遠くに移動しないよう何らかのペナルティを追加することです。なぜこれが必要かというと、モデルが初期化から遠く離れないようにすれば、初期モデルがある程度良好な言語モデルであることと、報酬モデルが初期分布からサンプリングされた完了で訓練されたことを知っているからです。そのため、その分布内では報酬モデルはある程度信頼できるはずです。
具体的には、次のような目標を最大化します: E[RMφ(x,y) - β log(Pθ(y|x)/P_PT(y|x))]
ここでRMφは学習された報酬モデル、βはハイパーパラメータで、Pθは最適化しているモデル、P_PTは初期モデルです。このlog ratioは、事前訓練モデルと比較して特定の完了に非常に高い確率を割り当てると、ますます大きなペナルティが課されることを意味します。
機械学習を学んだことがある方なら、この期待値はP_θとP_PTの間のKLダイバージェンス(Kullback-Leibler情報量)に他ならないことがわかるでしょう。つまり、二つの分布間の距離に対してペナルティを課しているのです。
7.3. 報酬ハッキングの問題と対策
RLHFで直面する重要な課題の一つは「報酬ハッキング」と呼ばれる問題です。これは学習した報酬モデルを最適化する際に発生する可能性があります。
基本的に、学習された指標を最適化する場合は、その指標が実際に信頼できるものであることを確認する必要があります。なぜなら、言語モデルは報酬モデルの弱点を発見して悪用する傾向があるからです。例えば、報酬モデルが誤って意味のない出力や不適切な応答に高いスコアを割り当てた場合、言語モデルはその弱点を学習し、そのような無意味な出力を意図的に生成するようになります。
報酬ハッキングの例として、学習された報酬モデルが予測するスコアでは非常に良いパフォーマンスを示すのに、実際の人間の評価では完全に無意味な結果になるケースがあります。これは、モデルが報酬関数を最適化する方法を見つけたものの、その過程で本来の目標(人間にとって有用な回答を生成すること)を見失ってしまったことを意味します。
この問題に対処するための主要な戦略が、先ほど説明したKLダイバージェンスによる制約です。初期モデルから遠く離れないようにペナルティを課すことで、報酬モデルが訓練されたデータ分布内に留まらせます。この制約により、報酬モデルが信頼できる領域内でのみ最適化が行われるようになります。
βパラメータ(KL制約の強さを制御するハイパーパラメータ)は、報酬最大化と初期分布からの逸脱のバランスを調整する上で重要です。βが小さすぎると、モデルは報酬ハッキングに走る可能性が高まります。逆にβが大きすぎると、モデルはほとんど変化せず、RLHFの利点が得られません。
報酬ハッキングの問題は、強化学習が非常に強力な最適化アルゴリズムであるという事実から生じています。AlphaGoやAlphaZeroなどの超人的なパフォーマンスを実現したのも強化学習ですが、その強力な最適化能力が適切に制約されないと、望ましくない行動パターンを学習する可能性があります。
したがって、RLHFの実装では、報酬モデルの信頼性を確保し、適切な制約を設けることが成功の鍵となります。これにより、モデルは人間の好みに沿った応答を生成しながらも、報酬ハッキングを回避することができます。
7.4. RLHFの効果と例
RLHFは非常に成功した技術であり、その効果は多くのタスクで明らかになっています。特に要約タスクの例を見てみましょう。
この結果グラフは非常に重要なポイントを示しています。モデルサイズを大きくすることで確かに性能は向上します。これは多くの例で見てきた現象です。しかし注目すべきは、RLHFを適用することで、ごく小さなモデルでさえも人間が作成した要約を上回ることができるという点です。
参照要約(人間が生成したもの)と比較して、RLHFで訓練されたモデルが生成した要約の方を人間が好むことがよくあります。これはRLHFでのみ観察される現象であり、小規模なモデルでも効果があります。そして同じスケーリング現象がここでも当てはまります。より大きなモデルはより応答性が高くなりますが、RLHFそのものも非常に効果的です。
一例として、命令調整されたモデルは人間が生成した要約よりも良いパフォーマンスを示さない場合でも、RLHFを適用すると、たとえモデルが小さくても人間の要約を上回る場合があります。これはRLHFの強力な効果を示しています。
しかし、RLHFの問題点は非常に複雑なことです。これまで高レベルの概要を提供しましたが、実際の実装には価値関数の適合、多数のモデルサンプリング、様々なハイパーパラメータの調整など、多くの要素が含まれます。RLHFパイプラインを実装しようとすると、非常に難しく、多くのハイパーパラメータに敏感に反応します。
これがRLHFが計算資源が豊富な環境に限定されていた理由です。一般のコミュニティにはアクセスが難しく、実装が複雑であるため使用が制限されていました。この複雑さが、次のセクションで説明する直接選好最適化(DPO)のような、より単純な代替手法の開発を促しました。
8. 直接選好最適化(DPO: Direct Preference Optimization)
8.1. DPOの理論的基盤
RLHFは非常に複雑であることを見てきました。この複雑さに対処するため、より単純な代替手法として直接選好最適化(Direct Preference Optimization、DPO)が開発されました。DPOの主要な考え方は非常にシンプルですが、数学的に堅固な基盤に基づいています。
DPOの鍵となる洞察は、報酬モデルを言語モデル自体の観点から記述できないかという発想です。直感的に考えると、言語モデルは次に最も尤もな完了に確率を割り当てていますが、その尤もな完了は必ずしも我々が意図したものではないかもしれません。しかし、人間が好む可能性のある完了に確率を制限できれば、モデルの対数確率は人間が好むものを表す可能性があります。
つまり、言語モデルが割り当てる対数確率と、人間がその回答をどれだけ好むかの間には直接的な対応関係がある可能性があります。これは単なる直感ではなく、数学的に導出できる関係です。
DPOの一般的な考え方は次のようになります:報酬モデルを言語モデルの観点から記述し、報酬モデルを持っている場合、我々が持つ選好データに直接報酬モデルを適合させることができます。そうすれば、RLのステップを全く必要とせずに、言語モデルのパラメータを直接最適化できます。
なぜこのようなことが可能なのでしょうか?この全プロセスにおいて、外部から追加される唯一の情報は、選好データに対する人間のラベルです。学習された報酬モデルを最適化する場合、そこに新しい情報は追加されていません。つまり、人間の選好データから直接言語モデルを最適化できる可能性があるのです。
これは何年もの間、明らかではありませんでしたが、次のセクションで見るように、これらの結果は実に理にかなっています。DPOは、強化学習の複雑さを回避しながら、同様の効果を達成するための理論的に健全な方法を提供します。
8.2. 言語モデルと報酬モデルの関係
DPOの理論的な基盤において最も重要な洞察は、言語モデルと報酬モデルの間の関係です。RLHFでは、期待報酬を最大化する問題を解こうとしていますが、初期分布からあまり逸脱しないよう制約を設けています。
具体的には、次のような問題を解きたいのです: E[RMφ(x,y)] - β log(Pθ(y|x)/P_PT(y|x))
これは、報酬モデルの期待値から、初期分布からどれだけ逸脱するかを示すKLダイバージェンスに比例するペナルティを引いたものです。
興味深いことに、この特定の問題には実際に閉形式の解が存在します。反復的な手順を行う代わりに、最適な方針がどのようなものかを表す式を書くことができます。この閉形式の解はボルツマン分布の形をしており、以下のように表されます:
Pθ*(y|x) = (1/Z_x) * P_PT(y|x) * exp(RMφ(x,y)/β)
ここでP_PT(y|x)は事前訓練分布で、報酬の期待値で重み付けされています。つまり、完了の報酬が高ければ、その確率質量は高くなり、報酬が低ければ、確率質量は低くなります。βはハイパーパラメータで、報酬モデルと制約の間のトレードオフを決定します。βが低くなるほど、報酬モデルにより多くの注意を払うようになります。
ただし、この式には厄介な項Z_xがあります。これは正規化定数で、単独では分子は確率分布ではないため、実際の確率分布を構築するために必要です。Z_xは、与えられた指示xに対するすべての可能な完了yの合計です。
これは非常に厄介な問題です。なぜなら、この和は計算不可能だからです。指示を取り、可能なすべての完了(構文的に正しいものだけでなく)を合計しようとすると、空間は完全に扱いきれません。5万個以上のトークンがあり、完了は任意の長さになる可能性があるからです。
しかし、少し代数を行うと、報酬モデルを言語モデル自体の観点から表現できます:
RMφ(x,y) = β log(Pθ*(y|x)/P_PT(y|x)) + log Z_x
これは直感的にも理にかなっています。完了y^が高い報酬を持つのは、最適な方針が初期モデルに対して相対的に高い確率をそれに割り当てる場合です。これはβで拡大縮小されます。分配関数はとりあえず無視しましょう。
ここで重要なのは、βログ比が報酬モデルの主要な部分であるということです。すべての方針は何らかの報酬に対して最適であるため、現在の方針と初期化されたモデルを取れば、それから何らかの報酬モデルを導出できます。
8.3. 分配関数の消去
明らかに部屋の中の象と言えるのが分配関数です。この問題は魔法のように消えるわけではありません。確かに、βログ比だけであれば非常に扱いやすいのですが、log Z_xというこの厄介な項がまだ残っています。
この分配関数は計算不可能です。与えられた指示xに対するすべての可能な完了yの合計を取る必要があり、これは現実的には不可能です。5万以上のトークンがあり、完了は任意の長さになり得るため、この空間は扱いきれません。
しかし、ここで非常に興味深いことが起こります。報酬モデルの目的が何だったかを思い出してください。私たちが実際に最適化しようとしていたのは、Bradley-Terryモデルでした。このモデルは、勝った完了と負けた完了の間の報酬の差を最大化することを目的としています。
重要なのは、報酬自体の絶対値ではなく、勝った完了と負けた完了の間の報酬の差なのです。これが非常に重要です。なぜなら、RM_θの定義をこの報酬差に代入すると、驚くべきことに分配関数が相殺されるからです。
なぜ相殺されるのでしょうか?それは入力xが両方の項で完全に同じだからです。報酬差は以下のようになります:
RMφ(x,y_w) - RMφ(x,y_l) = β log(Pθ*(y_w|x)/P_PT(y_w|x)) - β log(Pθ*(y_l|x)/P_PT(y_l|x))
ここでlog Z_xはy_wとy_lの両方の項に現れますが、引き算によって相殺されます。つまり、勝った完了と負けた完了の間の報酬差は、単に勝った完了と負けた完了のβログ比の差になります。
これは非常に強力な結果です。計算不可能だと思われていた分配関数が、実際には報酬の差を考える際に完全に消去されるのです。これにより、DPOはRLHFの複雑さを大幅に簡略化しながらも、同様の効果を達成できる理論的根拠を得ることができます。
項を整理すると、上記の式は以下のように簡略化できます:
RMφ(x,y_w) - RMφ(x,y_l) = β log((Pθ(y_w|x)P_PT(y_l|x))/(P_PT(y_w|x)*Pθ*(y_l|x)))
これは言語モデルのパラメータに直接関係する式であり、分配関数の問題を完全に回避することができます。
8.4. 二項分類問題としての最適化
DPOの鍵となる発見は、報酬モデルを言語モデルの観点から表現でき、分配関数の問題が実際には選好の差を考慮することで完全に消去されるということです。これにより、複雑なRLHF手順を使わずに、二項分類問題として最適化を直接行うことができます。
具体的には、言語モデルのパラメータθに直接関係する損失関数を次のように表現できます:
L(θ) = -E[log(σ(β log(Pθ(y_w|x)/P_PT(y_w|x)) - β log(Pθ(y_l|x)/P_PT(y_l|x))))]
これは本質的に、勝った回答と負けた回答の間のパラメータ化された報酬差をシグモイド関数に通した対数を取り、その期待値の負を最小化するという単純な二項分類問題です。つまり、良い回答か悪い回答かを分類しているだけです。
これはRLHF手順のように、報酬モデルを最初に学習し、次にその報酬モデルでRL最適化を行うという2ステップのプロセスから、単一ステップの直接最適化へと簡略化されています。我々はデータセットを直接取得し、言語モデルのパラメータを最適化するための分類損失を適用するだけです。
この方法の効果を実証するのが、要約タスクにDPOを適用した結果です。グラフでは、PO(標準的なRLHFパイプライン)とDPOの比較を示しています。要約タスクで評価し、人間の要約と比較した結果、DPOとPO(RLHF)は同様のパフォーマンスを示しました。重要なのは、RLHFの全プロセスを実行する代わりに、単なる分類損失としてDPOを使用しても、ほとんど性能を失わないということです。
これはDPOが非常に魅力的である主な理由です。計算コストが大きい場合はRLHFや類似の手法を選ぶかもしれませんが、コストパフォーマンスを重視するならDPOを選ぶことで、すぐに良い結果が得られる可能性が高いです。
DPOは依然として活発な研究分野であり、これらのアルゴリズムを最も効果的に使用する方法についての理解はまだ発展途上です。しかし、DPOもRLHFも非常に効果的なアルゴリズムであり、DPOの方がはるかに実装が簡単だという利点があります。
DPOは、複雑なRLプロセスを経ずに人間の選好に基づいて直接最適化できるため、より多くの研究者や開発者がアクセスできる強力なツールとなっています。
9. 実際のモデルと応用例
9.1. InstructGPTの開発
これまで説明してきた命令調整、RLHF、DPOといった技術が実際のモデル開発にどのように応用されているかを見ていきましょう。その最初の重要な例がInstructGPTです。
InstructGPTは、先ほど説明したパイプラインを最初に定義し、実装したモデルです。以前は単一のタスクに取り組んでいましたが、InstructGPTでは3万種類ものタスクにスケールアップしました。各タスクには多数の例があり、これは大きな飛躍と言えます。
InstructGPTは以下のパイプラインに従っています:
- まず事前学習モデルを用意する
- 次に大規模な命令調整を行う
- そして報酬モデル学習とRLHFを適用する
具体的には、特定のRLHFパイプラインを使用しており、報酬モデルを明示的に適合させてから、その上で何らかの強化学習ルーティンを実行します。
ラベラーから収集されたタスク例は多岐にわたり、様々な質問応答、コード生成、創造的ライティング、要約など広範囲にわたります。InstructGPTの前後での違いを明確に示すために、GPT-3の完了とInstructGPTの完了を比較することができます。
例えば「6歳児に月面着陸について数文で説明してください」という指示に対して、元のGPT-3は質問に直接答えるのではなく、6歳児が何を知りたいかについて更なる質問をします。これはユーザーが望んだ応答ではありません。一方、InstructGPTは指示から何をユーザーが望んでいるかを推測し、6歳児向けに簡潔で分かりやすい月面着陸の説明を提供します。
このように、InstructGPTは単にテキスト予測を行うのではなく、ユーザーの意図を理解し、それに応じた回答を生成できるようになりました。これは、命令調整とRLHFの組み合わせによる成果であり、現代の対話型AIシステムの基盤となる重要なブレークスルーでした。
9.2. ChatGPTへの進化
InstructGPTからChatGPTへの進化は、本質的に同じ技術パイプラインに基づいていますが、重要な違いがあります。ChatGPTは対話により最適化されており、ユーザーとの相互作用に特化しています。
ChatGPTは基本的に同じパイプラインを踏襲しています。命令調整を行い、その後RLHFを適用していますが、データの種類と最適化の焦点が異なります。ChatGPTはユーザーとの対話を重視し、会話の流れや文脈理解、一貫した応答など、対話特有の側面に最適化されています。
アルゴリズム的な技術は同じですが、トレーニングするデータの種類が重要な違いを生み出します。ChatGPTは会話の流れを維持し、以前の交換を覚えておき、自然な対話を実現するように訓練されています。これは、単一の指示に従うことに重点を置いていたInstructGPTとは異なります。
皆さんの多くはChatGPTを使ったことがあると思いますが、その特徴的な対話能力は、このような訓練の結果です。例えば「Gen Zっぽいソーシャルメディア投稿を作成して」という指示に対して、ChatGPTは適切なスラングや表現を用いて、若者世代の話し方をシミュレートすることができます。
このような指示は数例で示すことが非常に難しく、おそらく訓練データにも含まれていませんが、ChatGPTは意図を推測し、非常にうまく一般化することができます。これは個人的に非常に驚くべきことだと思います。
ChatGPTの成功により、対話型AIアシスタントの分野は大きく前進しました。ユーザーは自然な会話形式でAIとやり取りできるようになり、より直感的で利用しやすいインターフェイスが実現しました。この進化は、今日私たちが日常的に使用している多くのAIツールの基盤となっています。
9.3. オープンソースコミュニティでのDPOの採用
DPOがより単純で効率的な手法であることから、オープンソースコミュニティでも広く採用されるようになりました。現在、Hugging Faceが維持しているリーダーボードを見ると、上位10モデルのうち9つがDPOを使用していることがわかります。これは、DPOがオープンソースコミュニティがモデルを命令調整するための重要なツールとなっていることを示しています。
DPOの採用は非常に広がっており、生産モデルでも使用されるようになっています。例えば、MistralはDPOを使用しており、Llama 3もDPOを採用しています。これらはGPT-4に近いレベルの非常に強力なモデルですが、RLHFの複雑さを避けてDPOを選択しています。
この広範な採用の背景には、DPOの実装の単純さがあります。RLHFのような複雑な強化学習パイプラインを構築する代わりに、直接的な分類問題として最適化できるため、計算資源が限られている組織やオープンソースプロジェクトでも実装可能になります。
また、DPOは特に小規模なモデルでも効果的であることが示されており、限られた計算資源でもモデルの品質を大幅に向上させることができます。これにより、大手企業だけでなく、小規模な研究グループや個人の開発者も高品質なモデルを作成できるようになりました。
オープンソースコミュニティでのDPOの採用は、AIの民主化という観点からも重要な進展です。以前はリソースの豊富な組織だけが高品質なモデルを作成できましたが、DPOによりその障壁が大幅に低くなりました。これにより、より多様な視点や応用がAI開発に取り入れられるようになり、分野全体の進歩が加速しています。
9.4. モデル出力の質的変化
これまで多くの最適化技術や数学について見てきましたが、モデルの振る舞いに根本的に何が変化するのかという疑問があります。これは非常に良い例です。命令調整されたモデル(SFT、Supervised Fine-Tuning)に命令を出した場合と、RLHF処理されたモデルに出した場合の違いを比較しましょう。
命令調整だけを行ったモデルからは、比較的シンプルで直接的な回答が得られますが、RLHFを適用したモデルでは回答に多くの詳細が含まれ、構成もより整理されています。これは人間が好むであろう特性であり、そのためRLHFを適用したモデルで現れる特性です。
人間は通常、より詳細で包括的な回答を好む傾向があります。また、情報が論理的に整理され、理解しやすい構造になっていることも重視します。RLHFはこうした人間の好みに基づいてモデルを最適化するため、より詳細で構造化された回答を生成するようになります。
例えば、ある質問に対して命令調整だけのモデルが数文で簡潔に答えるのに対し、RLHFモデルは同じ質問に対してより多くの背景情報を提供し、ポイントを整理し、場合によっては例を含めるかもしれません。
この質的な変化は、RLHFが単に「正しい」応答を生成するだけでなく、人間が本当に価値を見出す応答の特性を捉えているという証拠です。これには情報の豊富さ、明確さ、構成、そして場合によっては共感や対話の調子なども含まれます。
しかし、このような改善には潜在的な問題もあります。例えば、モデルが過度に冗長になる傾向も見られます。人間の評価者が長い回答を好む傾向があることから、RLHFプロセスがこの好みを過度に反映してしまう場合があります。これは多くのモデル開発者が取り組んでいる課題の一つであり、ChatGPTを含む多くのモデルで冗長性を減らす努力がなされています。
10. 課題と今後の展望
10.1. 報酬ハッキングの問題
これまでRLHFのルーティン全体について説明してきました。直接人間の好みをモデル化し、ラベル付きデータを超えて一般化する方法を見てきました。また、RLを正しく実装するのが非常に難しい場合があることや、DPOがこれらの問題の一部を回避する方法についても触れました。
報酬モデルと報酬ハッキングの概念について簡単に説明しました。学習された報酬モデルを最適化する際には、モデルが報酬モデルの弱点を悪用する可能性があります。これが報酬ハッキングです。
報酬ハッキングの典型的な例として、ボードゲームで繰り返しボードにぶつかってより多くのポイントを獲得するといった振る舞いがあります。これはゲームの目的ではありませんでした。このような例は報酬ハッキングでよく示されます。報酬を適切に指定しないと、モデルは望ましくない意図しない振る舞いを学習する可能性があります。
この問題が懸念される理由の一つは、強化学習が非常に強力な最適化アルゴリズムだからです。AlphaGoやAlphaZeroなどの超人的なモデルを生み出したのも強化学習です。そのため、指定方法には注意が必要です。
また、人間の好みを最適化することですら、必ずしも正しいとは限りません。人間は常に自分の最善の利益になることを好むわけではないからです。例えば、権威的で役立つ回答を好む傾向がありますが、必ずしも真実の回答を好むとは限りません。
一つの特性として、人間は正確さよりも権威を重視する傾向があります。これは望ましいことではないかもしれません。モデルが非常に自信を持って間違った情報を提供し、それが人間の評価者によって好まれるという状況が生じる可能性があります。
10.2. 人間の好みの矛盾
人間の好みを最適化することにも課題があります。なぜなら、人間は必ずしも自分の最善の利益になることを好むとは限らないからです。これは重要な問題点です。
例えば、人間は権威的で役立つ回答を好む傾向があります。しかし、必ずしも真実の回答を好むとは限りません。これにより、モデルが非常に自信を持って情報を提供するけれども、その情報が実際には間違っているという状況が生まれることがあります。人間の評価者はしばしば正確さよりも権威を重視する傾向があるため、このような応答が高く評価されてしまうことがあります。
このように、人間の好みには本質的な矛盾が含まれていることがあります。モデルが学習する「報酬」は、必ずしも私たちが求める理想的な行動を反映しているわけではありません。人間評価者の個人的なバイアスや、特定の表現スタイルへの好みが、モデルの訓練に影響を与えます。
例えば、「これは正確ではないかもしれませんが...」と始まる謙虚な回答よりも、「明らかに...」と始まる自信に満ちた回答の方が評価者に好まれる傾向があります。このようなバイアスにより、モデルは不確実性を適切に伝えることよりも、自信を持って回答することを学習してしまいます。
また、人間の好みは一貫していないことがあります。例えば、ある評価者は簡潔さを重視し、別の評価者は網羅性を重視するかもしれません。このような矛盾する好みをモデルに同時に学習させようとすると、一貫性のない振る舞いが生じる可能性があります。
さらに、人間の評価者が回答の内容を完全に理解できない場合もあります。特に専門的なトピックでは、評価者は内容の正確さよりも、回答がどれだけ専門的に見えるかで判断してしまうことがあります。
このような人間の好みの矛盾や限界は、RLHFやDPOといった手法の有効性に対する根本的な課題となります。これらの課題に対処するためには、より洗練された評価方法や、異なる視点からの多様な評価を組み合わせるなどのアプローチが必要です。
10.3. 冗長性の問題
RLHFの適用によって生じる一つの顕著な問題が、モデル出力の冗長性です。このような冗長性が発生する主な原因は、データ収集の方法にあります。大規模に好みデータを収集する際、評価者は必ずしも回答を完全に読んでいない場合があります。彼らは単に長い回答を選ぶ傾向があり、この特性がモデルに組み込まれてしまいます。
ChatGPTを含む多くのモデルは、この冗長性の問題に積極的に対処しようとしています。時には、単純な質問に対して5つの詳細な段落で回答するモデルに遭遇すると、それは望んでいた応答ではないと感じることがあります。この問題はユーザー体験に大きく影響します。
興味深いことに、モデルが広く使用されるようになるにつれて、人間の好みや報酬関数も変化する可能性があります。初期の評価者は詳細な回答を好んだかもしれませんが、実際のユーザーはより簡潔な応答を求めているかもしれません。このようなフィードバックのループにより、モデルの応答スタイルは時間とともに進化していくでしょう。
冗長性の問題は、ターカー(クラウドソーシングの作業者)が回答を完全に読まずに評価することから生じる場合が多いです。彼らはタスクをできるだけ早く完了させたいという動機から、単に長い応答を選択するという近道を取ることがあります。これにより、モデルは「長い=良い」という誤った関連付けを学習してしまいます。
また、評価者が作業に対して適切に報酬を受けていない場合や、評価基準が明確でない場合にも、このような問題が発生しやすくなります。質の高い人間のフィードバックを収集することは、技術的な課題だけでなく、適切なインセンティブ設計や評価プロセスの設計にも関係する問題です。
モデルの冗長性を減らすためには、評価方法の改善、より詳細な評価ガイドラインの提供、多様な評価基準の導入などが検討されています。将来的には、ユーザーのリアルタイムフィードバックを取り入れることで、個々のユーザーの好みに合わせた応答スタイルを提供できる可能性もあります。
10.4. 幻覚の継続的課題
幻覚(hallucination)の問題はRLHFによっても完全には解決されません。私たちが事前学習モデルからインストラクトGPTやChatGPTへと進化させてきた過程で、多くの改善が見られましたが、幻覚は依然として課題として残っています。
幻覚とは、モデルが事実に基づかない情報や誤った情報を自信を持って生成してしまう現象です。例えば、存在しない学術論文を引用したり、実際には発生していない出来事について詳細に説明したりすることがあります。この問題はRLHFによって部分的に軽減されますが、完全には解決されません。
幻覚が発生する理由はいくつかあります。まず、人間の評価者が常に回答の事実確認をしているわけではないため、不正確な情報が含まれた回答でも高く評価される場合があります。特に、自信を持って提示された不正確な情報は、謙虚に提示された正確な情報よりも評価が高くなる傾向があります。
また、RLHFは事前学習モデルの知識を基礎としています。事前学習段階でモデルが誤った関連付けを学習していた場合、RLHFだけではその問題を完全に修正することができません。RLHFは既存の知識を再配置するだけで、新しい知識を追加するわけではないからです。
さらに、複雑な推論を必要とする問題では、モデルは正しい手順を踏んでいるように見えても、途中で誤った推論をすることがあります。人間の評価者がその分野の専門家でない限り、このような誤りを検出することは難しいでしょう。
幻覚の問題に対処するためには、より厳格な事実確認メカニズム、外部知識源への参照機能、モデルの不確実性をより適切に表現する方法などの開発が必要です。また、モデルが「わからない」と答えることを適切に報酬として与えることも重要です。
幻覚は大規模言語モデルの継続的な課題であり、この分野の発展とともに新しい解決策が模索されています。しかし現時点では、RLHFやDPOといった技術によってモデルの有用性は大幅に向上していますが、幻覚を完全に排除するという目標はまだ達成されていません。