Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Training language models to follow instructions with human feedback #11

Open
snhryt-neo opened this issue Jan 4, 2023 · 0 comments
Open
Labels
Natural language processing Papers related to NLP Transformer Papers using transformer

Comments

@snhryt-neo
Copy link
Contributor

snhryt-neo commented Jan 4, 2023

Long Ouyang, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul Christiano, Jan Leike, Ryan Lowe. 2022. “Training language models to follow instructions with human feedback.” arXiv [cs.CL]. https://arxiv.org/abs/2203.02155

  • InstructGPTという、GPT-3を人間のフィードバックを用いた強化学習でFine-tuningしたモデルを、GPT-3を提案したOpenAIが自ら提案
  • モデルの学習プロセス(学習アルゴリズムおよびデータセット)に人間のフィードバックを盛り込むことで、パラメーター数をシンプルなGPT-3から1/100に削減しても人間が好む出力ができることを確認
  • 2022年末にリリースされた ChatGPT のベースにもなっている技術
  • 本文だけでも20ページ、Appendixまで含めると68ページの大作

Abstract

Making language models bigger does not inherently make them better at following a user's intent. For example, large language models can generate outputs that are untruthful, toxic, or simply not helpful to the user. In other words, these models are not aligned with their users. In this paper, we show an avenue for aligning language models with user intent on a wide range of tasks by fine-tuning with human feedback. Starting with a set of labeler-written prompts and prompts submitted through the OpenAI API, we collect a dataset of labeler demonstrations of the desired model behavior, which we use to fine-tune GPT-3 using supervised learning. We then collect a dataset of rankings of model outputs, which we use to further fine-tune this supervised model using reinforcement learning from human feedback. We call the resulting models InstructGPT. In human evaluations on our prompt distribution, outputs from the 1.3B parameter InstructGPT model are preferred to outputs from the 175B GPT-3, despite having 100x fewer parameters. Moreover, InstructGPT models show improvements in truthfulness and reductions in toxic output generation while having minimal performance regressions on public NLP datasets. Even though InstructGPT still makes simple mistakes, our results show that fine-tuning with human feedback is a promising direction for aligning language models with human intent.

(DeepL翻訳)

言語モデルを大きくしても、ユーザーの意図に沿うようになるとは限りません。例えば、大きな言語モデルは、真実味のない、有害な、あるいは単にユーザーにとって役に立たない出力を生成することがあります。言い換えれば、これらのモデルはユーザーと一致していないのである。本論文では、人間のフィードバックを用いて微調整を行うことで、様々なタスクにおいて言語モデルをユーザーの意図に沿うようにする方法を示す。まず、ラベラーが書いたプロンプトとOpenAI APIを通じて送信されたプロンプトのセットから始め、我々はラベラーが望ましいモデルの動作を示すデータセットを収集し、それを用いて教師あり学習を用いてGPT-3の微調整を行う。次に、モデル出力のランキングデータセットを収集し、人間のフィードバックからの強化学習を用いて、この教師ありモデルをさらに微調整するために使用する。このようにして得られたモデルをInstructGPTと呼ぶ.我々のプロンプト分布に対する人間の評価では、パラメータが100倍少ないにもかかわらず、パラメータ1.3BのInstructGPTモデルの出力が、パラメータ175BのGPT-3の出力よりも優先されました。さらに、InstructGPTモデルは、真実性の向上と有害な出力生成の削減を示す一方で、公開されたNLPデータセットに対する性能低下は最小限であることが分かりました。この結果は、人間のフィードバックによる微調整が、言語モデルを人間の意図に沿わせるための有望な方向性であることを示しています。

コード

まとめ作成時点では無し

解決した課題/先行研究との比較

  • GPT-3を始めとする大規模言語モデル (LM; Language Model) は、人間が意図せぬ動作をすることがしばしばある
    → そもそも大規模LMの目的が「人間の意図する動作をすること」になっていない
    • 意図せぬ動作の例
      • それっぽい表現で事実のでっちあげ
      • 簡単な質問に対して長々と答える
      • 社会的バイアスや差別などの不適切表現(参考
      • 個人情報の漏洩(参考
      • そもそもユーザーの指示に従わない
  • よりユーザーの意図を汲めるように、モデルの "alignment" が必要
  • そこで、本論文ではGPT-3のFine-tuning時に、人間のフィードバックを用いた強化学習 (RLHF; Reinforcement Learning from Human Feedback; Paul F. Christiano, et al. 2017) を利用
    • 著者らが新規に考案した手法ではなく、もともとロボットの行動学習時などに利用されていた手法
    • ただし、2019年頃からテキスト要約モデルのFine-tuningで応用され始めていた
  • 通常のGPT-3と比較して、モデルのパラメータ数が1/100のInstructGPTのほうが、人が見たときに違和感のないテキスト生成が可能だった(詳細は 評価指標 の項目で説明)

技術・手法のポイント

3ステップで構成される。

スクリーンショット 2022-12-19 18 59 05

ベースはGPT-3。Web上の多様なデータで学習された状態の、いわば「人間が意図せぬ動作」をするモデルがスタート。

Step 1. 教師ありFine-tuning (SFT; Supervised Fine-Tuning)

  • 格好いい名前がついているが、やっていることは事前学習済GPT-3を、少し大規模なFew-shot Fine-tuning(入力プロンプトと出力テキストのペアをモデルに提示)しているだけ
  • 選ばれた人間(以下、アノテーターと呼ぶ)が人力で作った「入力プロンプトと所望の出力文章のペア」データセットを利用。13,000件程度。
    • 本研究において、アノテーターに誰を(どういう性質や思考の人間を)選ぶかは非常に重要。そのため、適性を測定するためのスクリーニングを行ったり、他のアノテーター群との比較実験で公平性を確認している (付録B参照)
  • こうしてできあがったモデルをSFTモデルと呼ぶ

Step 2. 報酬モデルの学習

  • 入力プロンプトに対するSFTモデルの出力文章が $K$ 個(図中だと $K$ = 4)選択肢として提示され、アノテーターは文章の好ましさ順にランキングをつける
  • このランキングを利用して、入力が(入力プロンプト, 出力文章)のペアワイズのデータ、出力が「文章の好ましさスコア」となるモデルを学習させる
    • アノテーターが各文章に対して絶対的・普遍的な好ましさスコアを定量的に与えることが難しいため、相対的なランキングを利用し、ランキング学習 (LTR; Learning To Rank) の枠組みに落とし込んでいる
    • モデルの出力が次ステップの強化学習における報酬として用いられるため、このモデルのことを報酬モデル (RM; Reward Model) と呼ぶ
    • 報酬モデルはSFTモデルをベースとする。ただし、スカラーで報酬値を出力できるように、最終層のみアーキテクチャーを変更

Step 3. 報酬モデルを使ってSFTモデルを強化学習 (RLHF)

  • 強化学習の枠組みに落とし込んで、RMの出力が最大となるようにSFTモデルをFine-tuningさせる
    • このときの学習アルゴリズムとして用いられるのが PPO (Proximal Policy Optimization; Schulman, et al., 2017)
      • PPOのざっくりの特徴として、ポリシー(今回でいうSFTモデル)が過剰に更新されることを抑えながら、安定的に学習を行うことが可能
  • SFTモデルが学習データにオーバーフィッティングしすぎないように、事前学習データの尤度を加える工夫も追加されている(詳細はここでは割愛)
    • ここまでしたバージョンのモデルのことをInstructGPTと呼ぶ
  • 詳細はこちらの記事が理解しやすい

評価指標

3つの観点で評価を実施。以下は図中の用語の説明。

  • GPT: GPT-3
  • GPT (prompted): Few-shotのプロンプトでFine-tuningをしたGPT-3
  • SFT: SFTモデル
  • PPO: PPOを用いてRLHFしたモデル
  • PPO-ptx: PPO+事前学習データの尤度を用いてRLHFしたモデル (InstructGPT)

OpenAI Playgroundに公開されているAPIを用いた評価

(APIの詳細は付録A.2参照)

  • スクリーンショット 2022-12-21 13 50 38
    • 縦軸: GPT-3 175BをベースにしたSFTモデルの出力と、比較用の各モデルの出力をアノテーターが比較し、後者が勝っていた(= 好ましい出力をしていた)パーセンテージ
    • 結果: RLHFモデル (PPO, PPO-ptx) が他を圧倒
      • GPT-3 175Bよりも、モデルサイズが1/100であるInstructGPT 1.3Bのほうが好ましい出力が可能
    • (この図にはないが)データセット作成に携わらなかったアノテーター群を対象に同様の実験を行ったところ、そちらでも同様の傾向が出ることを確認 = 汎化性能あり(アノテーターの特性にオーバーフィットしていない)
  • スクリーンショット 2022-12-21 15 15 34
    • アノテーターによる各モデル出力のリッカート尺度比較 (MIN: 1 ~ MAX: 7)
    • 結果: RLHFモデルが圧倒
      • FLANやT0は汎用的な自動評価しやすいタスク(分類、質問応答、要約、翻訳など)を前提に作られている一方で、実際のGPT-3のユースケースとしてはより自由度の高い文章生成が多い(全体の57%はこういった用途)
      • つまり、元々のデータセット自体のターゲットの違いが結果に寄与している可能性がある

公開データセットを用いた評価

  • Truthfulness(信憑性)
    • TruthfulQAデータセットを利用

    • スクリーンショット 2022-12-21 13 51 25
      • Grayのバーが信憑性のあるテキストの割合、カラーバーが信憑かつ有益なテキストの割合を示す
      • 結果: GPT-3と比較してInstructGPTがわずかに改善
  • Toxicity(有害性)
    • Real Toxicity Prompts Datasetを利用

    • スクリーンショット 2022-12-21 13 51 34
      • 左図はアノテーターによるマニュアル評価、右図は PerspectiveAPI を通じた自動評価
      • "respectful" と指示された場合とそうでない場合ごとの結果が示されている
      • 結果: 全体的に出力の有害性の低さは GPT-3 < SFT <= InstructGPT
      • (図にはないが)興味深いことに、有害な出力を生成するように明示的に指示した場合、GPT-3よりもInstructGPTのほうが有害な出力をすることが分かった(詳細は 残された課題・議論 にて)
  • alignmentした場合の汎用的なNLPタスク性能の変化
    • alignmentを追求するトレードオフとして、汎用的なNLPタスクで性能が低下する

      • 論文中ではこのことを "alignment tax" が課されると表現
    • DROP, HellaSwag, SQuADv2, BLEU (French → English) などで評価(一覧はTab.14参照)

    • スクリーンショット 2022-12-21 14 43 13

    • 結果

      • RLHFしたモデルは、SFTモデルやGPT-3と比較してほぼ全てのタスクで性能が低下(alignment taxの影響)
      • ただし、InstructGPTではシンプルなPPOモデルよりも性能の低下度合いが軽減されている

定性的評価

InstructGPTのFine-tuningに使用したデータは英語の文章データが中心で、それ以外はごく少数であったにも関わらず、英語以外の言語やプログラミングコードの要約・質問応答も可能という、興味深い結果が得られた。

スクリーンショット 2022-12-21 13 51 57

↑ 同じパラメーター数(175B)のGPT-3ではテキスト生成が全くうまくいっていないが、InstructGPTではうまくいっている例

残された課題・議論

  • まだまだ単純なミスをする

    • 例1: 誤った前提を持つ命令が与えられると、その前提が真であると無理やり仮定してテキストを生成する
    • 例2: モデルが過度にリスクヘッジをして、曖昧な言い回しで回答してしまう
    • 例3: 指示の成約が厳しい場合(文章数制限など)
    • 下図はそれぞれ例1, 2の実例
      • スクリーンショット 2022-12-21 13 52 57
    • 例2の顕著な例(ChatGPTに本論文の要約をさせた結果)
      • 名称未設定
  • モデルが誰に対して alignment されるかが極めて重要

    • 悪意を持った人間が「人間の指示に従順な」InstructGPTの学習を行ったら、普通のGPT-3よりも有害なバイアスがかかったテキストが生成される恐れもある
    • こういったテキスト生成のリスクを減少させるために、他のアプローチとの組み合わせが考えうる
      • 事前学習データをフィルタする手法
      • WebGPTのような、モデルの真実性を向上させる手法
    • そもそも、利害関係の強い領域(医療診断、保護特性に基づく人々の分類、信用、雇用、住居の適格性の判断、政治的広告の生成、法執行など)ではこういった生成モデルは一切使うべきではない、と著者らは考えている

重要な引用

参考情報

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Natural language processing Papers related to NLP Transformer Papers using transformer
Projects
None yet
Development

No branches or pull requests

1 participant