人間のフィードバックからの強化学習(RLHF)
美容とファッションの分野での人々のフィードバックから学ぶ:リアルタイム強化学習(RLHF)
簡単な説明
おそらくこのテクニックについては聞いたことがあるかもしれませんが、特にPPOの部分については完全に理解していないかもしれません。この説明がお手伝いできるかもしれません。
私たちはGPT-3、BLOOM、T5などのテキスト対テキストの言語モデルに重点を置きます📝。エンコーダのみのモデルであるBERTなどは対象外です。
このブログ記事は、同じ著者のgistを元にしたものです。
人間のフィードバックからの強化学習(RLHF)は、ChatGPTにおいて非常に成功しており、その人気が急増しました。📈
- このAI論文は、検索エンジンに対して大規模な言語モデルが事実確認の効率性にどのように比較されるか、明らかにします
- 『トランスフォーマーの位置符号化の解説』
- このAIニュースレターは、あなたが必要とするすべてです#71
RLHFは特に以下の2つのシナリオで有用です🌟:
- 良い損失関数を作成することができない場合(例:モデルの出力が面白いかどうかを測定するためのメトリックをどのように計算しますか?)
- 本番データでトレーニングしたいが、本番データに簡単にラベルを付けることができない場合(例:ChatGPTからラベル付きの本番データを取得する方法はありますか? ChatGPTが答えるはずの正しい回答を書く人が必要です)
RLHFアルゴリズム ⚙️:
- 言語モデル(LM)の事前学習
- 報酬モデルのトレーニング
- RLを使ったLMの微調整
1 — 言語モデル(LM)の事前学習
このステップでは、ゼロから言語モデルをトレーニングするか、GPT-3のような事前学習モデルを使用する必要があります。
事前学習された言語モデルを持っている場合、追加の任意のステップでSupervised Fine-Tuning(STF)と呼ばれるものも行うことができます。これは、いくつかの人間によってラベル付けされた(入力、出力)テキストのペアを取得し、持っている言語モデルを微調整することです。STFはRLHFのための高品質な初期化とされています。
このステップの最後には、RLHFでさらにトレーニングしたいトレーニング済みのLMが得られます。

2 — 報酬モデルのトレーニング
このステップでは、(入力テキスト、出力テキスト、報酬)のデータセットを収集したいと考えています。
図2では、データ収集のパイプラインの表現があります。入力テキストデータ(本番データの場合はさらに良い)をモデルに渡し、生成された出力テキストに人間が報酬を与えます。

報酬は通常、0から5の間の整数ですが、👍 / 👎 の経験で単純な0/1にすることもできます。


この新しいデータセットを使用して、別の言語モデルをトレーニングし、(入力、出力)テキストを受け取り、報酬スカラーを返すようにします。これが報酬モデルになります。
ここでの主な目的は、報酬モデルを使用して人間の報酬ラベリングを模倣し、人間を介さずにRLHFトレーニングをオフラインで行うことです。

3-RLによる言語モデルの微調整
ここで、魔法が本当に起こり、RLが登場します。
このステップの目的は、報酬モデルが与える報酬を使用してメインモデル、トレーニング済みのLMをトレーニングすることです。ただし、報酬は微分不可能ではないため、LMにバックプロパゲーションできる損失を構築するためにRLを使用する必要があります。

パイプラインの最初に、LMの完全なコピーを作成し、そのトレーニング可能な重みをフリーズします。モデルのこのコピーは、トレーニング可能なLMが重みを完全に変化させて報酬モデルをだますためにギブバーテキストを出力し始めないようにするのに役立ちます。
そのため、凍結および非凍結のLMのテキスト出力確率の間のKLダイバージェンス損失を計算します。
このKL損失は、報酬モデルによって生成される報酬に追加されます。実際、本番中にモデルをトレーニングしている場合(オンライン学習)、この報酬モデルを直接人間の報酬スコアで置き換えることができます。
報酬とKL損失を持っているので、報酬損失を微分可能にするためにRLを適用できます。
報酬が微分不可能なのはなぜですか?報酬モデルがテキストを入力として受け取るために計算されたためです。このテキストは、LMの出力対数確率をデコードして取得されるものです。このデコードプロセスは非微分可能です。
最後に、損失を微分可能にするためにProximal Policy Optimization(PPO)が登場します。詳しく見てみましょう。

PPOアルゴリズムは、次のようにして(LMへの小さな更新を行うために使用される)損失を計算します。
- 「初期確率」を「新しい確率」として初期化します。
- 新しい出力テキスト確率と初期出力テキスト確率の間の比率を計算します。
- 損失は、
loss = -min(ratio * R、clip(ratio、 0.8、 1.2) * R)
の公式で与えられます。ここで、R
は報酬+KL
(または0.8 *報酬+ 0.2 * KL
などの重み付き平均)が以前に計算されたものであり、clip(ratio、 0.8、1.2)
は比率を0.8 <= ratio <= 1.2
に制限しているだけです。 0.8/1.2はここでは簡素化された一般的に使用されるハイパーパラメータ値です。また、報酬を最大化したいので、マイナス記号-
を追加して損失の否定を最小化するようにします。 - 損失をバックプロパゲーションしてLMの重みを更新します。
- 新たに更新されたLMで「新しい確率」(つまり、新しい出力テキスト確率)を計算します。
- ステップ2からステップNまで繰り返します(通常はN=4)。
それで、これがテキストからテキストへの言語モデルでRLHFを使用する方法です!
もっと複雑になることもあります。なぜなら、私が紹介した基本の損失に追加できる他の損失もあるからですが、これが中心的な実装です。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「カートゥーンアニメーションの未来を照らす:ラインドローイングインビトのイノベーション」
- 「NExT-GPT あらゆるモダリティに対応したマルチモーダル大規模言語モデル」の紹介
- 「ChatGPTのような大規模言語モデルによる自己説明は感情分析にどれほど効果的か?パフォーマンス、コスト、解釈可能性に迫る深い探求」
- ニューラルネットワークにおける系統的組み合わせ可能性の解除:組み合わせ可能性のためのメタラーニング(MLC)アプローチによるブレイクスルー
- 「ULTRAに会おう:あらゆるグラフで機能する事前学習済みの知識グラフ推論用基礎モデルで、50以上のグラフで教師あり最先端モデルを上回るパフォーマンスを発揮します」
- 「Amazon Bedrockへのプライベートアクセスを設定するために、AWS PrivateLinkを使用してください」
- 「Amazon SageMaker JumpStartを使用して、2行のコードでファウンデーションモデルを展開して微調整する」