ChatGPTによる出力テキストが多くの人の期待を超え、驚愕しています。 その背景には人の評価を模倣する報酬モデルを利用した強化学習の発展があります。 この論文は人の好みに合うテキストを生成するための各種アプローチに対する評価を行なっており、なぜこのようなアプローチが取られているのか?という疑問の一つの答えになるのではないかと思います。

目次

参考にした情報

本記事を執筆するにあたり、以下の論文に目を通しました。

[1] A General Language Assistant as a Laboratory for Alignment

この論文では人の好みに合うテキストを生成するための汎用的なAIシステムを事前学習済み言語モデルを使って構築することを考えます。 「人の好みに合うという」ことを有用であり (Helpfulness) 、嘘をつかず (Honest)、害がない (Harmless) の3つの観点 (HHH) から構成しています。 人の好みに合うテキストを生成できるようにするために、人とHHHを満たしたアシスタントの対話例からなるプロンプトを利用します。 この論文ではdecoder-only Transformerをモデルであることを前提として話を進めます。 なお、この論文はChatGPTそのものと直接関係しているわけではないのでご注意ください。

蒸留によるプロンプトの削除

decoder-only Transformerは文脈に基づいて次に出現する単語を予測する言語モデルです。 対話システムへ応用する場合、次の発話を生成するための情報として、今までの対話履歴を表すトークン列をプロンプトとして与えます。 しかしながらモデルが受け付けられる入力のトークン数には限りがあります。 つまり対話が長くなるほど、プロンプトとなるトークン列は長くなり、場合によっては一部の対話履歴を削って次の発話を生成することになります。 そうなってしまうと、今までの対話との一貫性がない発話を生成してしまう恐れが高くなります。 またメモリ消費の増大や計算速度の低下にも繋がります。

ここで使われるプロンプトは人とアシスタントの対話を14事例1からなります。 アシスタントの発話は有用 (Helpfulness) で、嘘をつかず (Honesty) 、無害である (Harmless) ことからHHHプロンプトと呼んでいます。 さらに発話者の情報を表す Human: Assistant: が各発話の先頭に付与されます。 このプロンプト$C$を使わなくても、プロンプトを使ったモデル$p_0(X|C)$と似たようなテキストを生成できるようにするために以下の目的関数で$p_\theta(X)$を学習します。

$$ \begin{eqnarray} L(\theta) = D_{KL}(p_0(X|C)||p_\theta(X)) \end{eqnarray} $$

これをcontext distillationと呼びます。

プロンプト、蒸留の効果

[1]より引用 [1]より引用
HHHを評価するために、Helpfulness、Honesty、Harmless、Otherの4つのカテゴリについて50のテキストペアを作成し、 どちらがよりそのカテゴリにおいて優れているかをアノテーションすることでデータを作成し、各モデルを評価しています。

上記表から、いずれのモデルもパラメータサイズが大きくなるほど高い精度となっています。 またプロンプトを用意することによって、目的とする人の好みに合うテキストの出力がプロンプトを使わない場合よりも高い精度でできている事がわかります。 蒸留についてはプロンプトを使ったモデルと同等の精度が得られたものの、人手評価で若干の劣化が見られ、まだ改善の余地があるようです。

人手による一対評価

[1]より引用 [1]より引用

パラメータサイズやプロンプトの有無などでいくつかのモデルをクラウドソーシングを使って一対評価しています。 人が作成したクエリに対して、2つのモデルの出力を提示し、どちらが良いかを選んでもらって評価します。 選ばれた数が多いモデルほど勝率 (Elo score) が高くなります。 上記グラフは他のすべてのモデルに対する勝率を表しています。 パラメータサイズが大きくなるほど、勝率が高くなることがわかります。 ただし、13Bと52Bではあまり差がついておらず、これはワーカが早くタスクを終えることで報酬を得ようとする傾向があるようです。

またHHHプロンプトを利用することは、もっと短いプロンプトを使うよりも勝率が高くなることがわかります。 context distillationを適用したモデルはHHHプロンプトを使ったモデルよりも勝率が低く、やはり改善の余地があるようです。

報酬モデルの改善

人がより好ましいと思うテキストを生成できるようにモデルを学習するのがこの論文が目指したいところです2。 ある対話履歴に対してモデルが出力したテキストを人が評価し、その結果をもとにより人が好ましいテキストを生成するようにすればいいわけですが、学習事例はある程度の量が必要で、さらにいかにもありそうな嘘が含まれている可能性があるためしっかりとテキストを読まないことからモデルのテキストを評価する人を用意するのは大変なコストがかかります。

そこで、人の評価を模倣するような報酬モデルを作成し、人の代わりにモデルの出力テキストを評価してもらい、学習に用います。 このような学習によって、この対話履歴ではこういうテキストを出力すると人に好まれやすい、というパターンを獲得しています。 ここで大事なのが報酬モデルの予測精度がモデルの出力するテキストの精度に大きく影響するということです。たとえば報酬モデルの予測結果が人の好みと大きくずれていれば、モデルの出力も人が好ましいと思えないテキストになってしまいます。 ちなみに、報酬モデルもdecoder-only Transformerを用いています。

選好モデルとしての報酬モデル

[1]より引用 [1]より引用

報酬モデルが、テキストがどれくらい人の好みに適合するかを表すスコアを出力するための学習方法はいくつか考えられます。

  • Imitation Learning: 報酬モデルもdecoder-only Transformerなので、言語モデルとして人が好ましいとしたテキストを生成できるようにモデルを学習します。そのため、学習には人が好ましいと思うテキストのみを利用します。テキストに対してスコアを計算する際は、単語の対数尤度の負の値の平均とします。
  • Binary Discrimination: テキストに対して人にとって好ましい、好ましくないというラベルが付いたデータがあるとして、分類モデルとしてテキストが人にとって好ましいかそうでないかを分類するモデルを学習します。3
  • Ranked Preference Modeling (選好モデル): 質に基づいて順序付けされたテキストがあるとして、それらの順序を出力できるように質を表す値を予測するようモデルを学習します。具体的には順序付きの2つの事例からなるペアに対して、より好ましい方のテキストにより高い値を予測できるように学習します。

Binary DiscriminationとRanked Preference Modelingは与えられたテキストの最後の単語4の埋め込みからスコアを予測します。

以下の図では、プログラムの正しさを予測するためのデータや、自然言語で書かれたテキストの快さを予測するためのデータにおいて、Imitation Learingと比較してBinary DiscriminationとRanked Preference Modelingがどれくらい精度の改善につながっているかを示しています。 青色のグラフ (Mean Over Ranked Evals) から報酬モデルのパラメータサイズによらず、Ranked Preference ModelはImitation Learningよりも精度が高いことがわかります。さらに、パラメータサイズを大きくすることで精度の差が大きくなっていることもわかります。 一方でオレンジ色のグラフ (Mean Over Binary Evals) からBinary DiscriminationはImitation Learningと比較してほとんど差が見られません。

この結果から、順序付きのデータを作成し、好ましいテキストのスコアが好ましくないテキストのスコアよりも高くなるように学習するRanked Preference Modelingが報酬モデルとして有効であると言えます。 Imitation Learningは好ましいテキストのみしか学習に利用できないこと、Bianry Discriminationは2つのテキストの比較をせずに、1つのテキストのみからスコアの良し悪しを学習しなければならないことから、直感的な結果と感じられます。

少量のラベル付きデータでも高精度化するための報酬モデルの事前学習

選好モデルがパラメータサイズを大きくするほど予測精度が改善されるということを見てきました。 しかしながら、質に基づいて順序付けされたテキスト集合のデータを用意するのはコストがかかります。 そこでそのようなデータの数が少量でもできるだけ高精度化するため、選好モデルの事前学習を考えます。

選好モデルの事前学習を新しく考え、以下のようなパイプラインで選好モデルを学習しています。

言語モデルの事前学習 -> 選好モデルの事前学習 (Preference Model Pre-training; PMP) -> 選好モデルのfine-tuning

事前学習データは二値化したものを用意する

データにはStackExchange, Reddit, Wikipediaを利用します。またそれらを混合したもの(Mix) も利用します。 これらのデータから、まず何らかの基準で順序付けされたペアデータを作成します。

後ほど説明しますが、事前学習は順序を学習するよりも、二値を学習するほうが後段タスクでの頑健性が上がります。 そのため、A > Bという順序付きペアに対して、以下のように二種類のデータに変換します。

GOOD:A > BAD:A
BAD:B > GOOD:B

たとえばStackExchangeでは質問 (QUESTION) に対してよりvote数の大きい回答 (ANSWER) がより良い回答として利用され次のように二値化されます。

GOOD:QUESTION:質問本文:ANSWER:vote数が大きい回答 > BAD:QUESTION:質問本文:ANSWER:vote数が大きい回答
BAD:QUESTION:質問本文:ANSWER:vote数が小さい回答 > GOOD:QUESTION:質問本文:ANSWER:vote数が小さい回答

PMPではRanked Preference ModelingよりもBinary Discriminationのほうが良い

[1]より引用 [1]より引用

選好モデルのfine-tuneでは順序付きのデータ、つまり A > Bのようなデータで学習することの有効性を見てきました。 そのため事前学習でも同様…と考えたいところですが、事前学習ではBinary Discriminationとして学習するほうが、特にfine-tune用のデータが少量の場合に有効という結果が得られています。

この理由について調査5したところ、downstreamタスクでの順位が、pre-trainingでの順位と必ずしも一致するとは限らないということが理由の一つとしてあることがわかりました。 もしpre-trainingについての順位とdownstreamでの順位が異なる場合、fine-tuningのときにモデルはその傾向の違いを学習する必要があります。 一方でbinary discriminationとして学習する場合、スコアの大小関係がそれほど順位と関係しないため、downstreamタスクへの学習が容易に進みやすくなります。

PMPでは人-人のデータを使うべきか、人-モデルのデータを使うべきかは場合による

[1]より引用 [1]より引用

対話システムを想定する場合、人がモデルと対話することになります。 そのためPMPでも人とモデルの対話データを利用した場合、どういう結果になるのかを評価しています。 以下のようにして人-モデルデータを作成しています。

  • PMPの事前学習データで「良い」タイプの回答を使って言語モデルをfine-tuneする
  • PMPの事前学習データで「悪い」タイプの回答を上記fine-tuning済み言語モデルを使って自動生成したテキストと置換する

事前学習データとしてはRedditを利用し、Learn to Summarize (記事に対して複数の要約がありより良い要約を選ぶ問題) およびHellaSwag (一般常識に関する多肢選択問題) で評価をしています。 これら2つのデータは評価データにモデルが自動生成したテキストを含むため、ある程度の改善が見られています。

一方で、評価データにモデルが自動生成したデータを含まない場合は、人-モデルからなる事前学習データを用いても、そうでなくても結果はあまり変わらなかったようです6


  1. 実例は見つけられませんでしたが4600トークンからなるようです。 ↩︎

  2. 実際に強化学習に用いているというよりは強化学習に用いる前に高精度な報酬モデルを構築するのがこの論文で取り組んでいることです。 ↩︎

  3. 同じモデルで二値問題、順序付き問題の両方に対応できるようにするため、実際にはRanked Preference Modelingと同様に順序づきデータのように変換します。文脈Cと二値のラベル {A, B}があるとすると、C:A > C:Bとしてデータを表現します。:は結合を表します。 ↩︎

  4. end of contextを表す特殊トークン ↩︎

  5. 詳細は論文[1]のAppendix Cにあります。簡単に言うと、順序にノイズを (強弱を変えて) 与えてシャッフルしたデータと、良い・悪いとざっくりと分けて作成した二値データを使ってモデルを学習し、もとの順序を正しく予測できるかを評価し、二値データの方がノイズを強く与えたデータよりも高い精度を示すことを確認しています。 ↩︎

  6. Figure 36を参照 ↩︎


関連記事






最近の記事