RLHF
人間のフィードバックをもとにした、強化学習 (Reinforcement Learning from Human Feedback)
https://scrapbox.io/files/657ffdcd2e7f980022e9a117.png
・ステップ1:あるプロンプトに対する望ましいモデルからの出力を人間が用意して、GPTモデルを教師あり学習でファインチューンする
・ステップ2:何らかのプロンプトに対するステップ1のモデルの出力を幾つかサンプリングして、出力にランク付けをし、そのデータを使って報酬モデルの学習を行う
・ ステップ3:報酬モデルを使ってGPTモデルの強化学習を行う
ステップ1では、以前のバージョンのInstructGPTに入力されたプロンプトをデータセットとして、その一部を取り出し、それらのプロンプトが入力されたときにモデルがどう振る舞えばよいか(どんな出力を行えばよいか)、その出力として望ましいものを人間が用意してやります。そして、「プロンプトと望ましい出力」の組み合わせを使って教師あり学習を行って、GPTモデルをファインチューンします(Supervised Fine-Tune、SFT)。
ステップ2では、このモデルに対して何らかのプロンプトを入力し、そこから幾つかの出力を得た上で、どの出力が望ましいか/望ましくないか、人間がランク付けをします。そして、そのデータを使い報酬モデルの学習を行います。
ステップ3では、GPTモデルを強化学習します。このときにはステップ2で作成した報酬モデルが使われます。
このうち、ステップ2とステップ3を繰り返すことで、プロンプトに対する出力にランク付けを行ったデータが新しく得られ、その結果、報酬モデルが更新され、強化学習もさらに進むといった具合に学習が行われます。
https://scrapbox.io/files/6580008b08835100226d4eeb.png
違う点は2つ
データ:会話データ
人間が「ユーザーとAI同士の会話」というデータを作っている。
InstructGPTではここがただのプロンプトとその出力だった
ChatGPTで対話に特化していることがわかる
InstructGPTにしてもChatGPTにしても、重要なのは報酬モデルの学習に使われるデータのランク付けでしょう。モデルからの出力の品質に応じてランク付けを行うことで、人にとって有用で害のない出力を行えば、より多くの報酬をもらえるようにモデルが学習することで、モデルが生成するテキストがユーザーの意図や指示に沿ったものになる。