Zenn
🦔

OpenAI新発表の、「Reinforcement Fine-tuning」とは何か?

2025/01/10に公開
3

明けましておめでとうございます。Givery AI Lab所属のAIエンジニア、李と申します。
今回は、先月(2024年12月)にOpenAIのイベント(動画)で発表された、新しいLLMファインチューニング技術「Reinforcement Fine-tuning(RFT)」について調べてみたいと思います。

今年のリリースを目指してアルファテストが進められているRFTですが(ページ)、公開されたテスト内容によると、「専門性が高く難しいタスクにおいて、RFTを実施したo1-miniがo1を上回る」という非常に興味深い報告がありました。


<図1:「遺伝病の症状から原因遺伝子を特定するタスク」の正解率比較(ソース:OpenAI)>
RFTを適用したo1-mini(赤い破線)が、o1のパフォーマンス(緑線)を上回っている。

はたして、このRFTという技術が「専門性の高いタスクでのLLM精度向上」という大きな壁を打ち破るゲームチェンジャーとなれるのでしょうか。なぜRFTがうまくいくのか、そしてRFTの実装にてどんな課題が予想されるのかを紹介していきたいと思います。

「Reinforcement Fine-tuning(RFT)」とは?

OpenAIが(動画)で紹介した内容は、以下のとおりです。

  • ユーザーが保有するデータを用いてo1モデルをカスタマイズする新しいファインチューニング手法
  • 強化学習(Reinforcement Learning)アルゴリズムを使用
  • 専門性の高いタスクにおいて、高校生レベルのモデルを博士レベルまで進化させることが可能

要するに、o1モデルをベースに、これまでのファインチューニングとは異なる、より深い専門性を獲得したモデルを学習させることができるというわけです。

強化学習アルゴリズム?

ここで、「強化学習のアルゴリズムを使用」というのはどういう意味なのかについて考えてみたいと思います。機械学習の世界では、教師あり学習や教師なし学習とは異なるカテゴリーとして、強化学習が存在します。その基本哲学は「学習対象の自主的な行動に適切な報酬を与え、望ましい行動を少しずつ強化していく」というものです。

子供の教育をイメージしてみるとわかりやすいかも知りません。良い行動にはご褒美(正の報酬)を、よくない行動には罰(負の報酬)を与えて、望ましい行動の頻度を上げ、望ましくない行動を減らすように学習させるイメージです。

強化学習には、「どのように行動を定義し、報酬をどう反映して行動を強化していくか」によって、さまざまなアルゴリズムが存在しますが、直観的な例として「Q-learning」を挙げることができます。


<図2:強化学習の一例、Deep Q-learning>

左のようなゲーム画面を入力としてCNNがアクション(ゲームの操作)を決定すると、その結果として得られる次の画面とゲームのスコア変化が「報酬」としてフィードバックされます。このプロセスを記録し、報酬をもとに損失関数を計算して、CNNを最適化していく流れです。

GPT-4の発表以降、一躍有名になったOpenAIは、実はGPTの開発と並行して、長年にわたって強化学習の研究開発を行ってきました。強化学習の学習環境ライブラリである「OpenAI Gym」を開発・提供していたのもOpenAIであり、GPT-4の開発においても「人のフィードバックによる強化学習(RLHF: Reinforcement Learning from Human Feedback)」が活用されていたことはよく知られています。

これまでのFTと、何がどう違うのか?

では、今回発表されたRFTは、従来のファインチューニングと何が違うのでしょうか。2025年1月現在、RFTはアルファテスト中のため公開情報は限られていますが、動画で示された学習データの構成から推測すると、過去にOpenAIがGPT-4を調整する際に使用した「人のフィードバックによる強化学習(RLHF)」をAPI化し、ユーザーに提供するのではないかと個人的に考えています。本記事では、この推測を前提に話を進めていきます。

従来のFT(Supervised Fine-Tuning、SFT)は、(入力, 出力) のペアのみを与えて学習させ、学習済みの入力と似たパターンに対して適切な出力を行うように「真似(mimic)」させる手法です。

(既存のSFTの場合)
>> 入力がAであれば、出力はBにさせるべきと教えてもらった。
>> なのでAとBの連関性を覚えて、次Aと似たような入力があったらこのパターンを参照して作成する。
…

一方のRFTでは、入力に対する出力をただ真似させるのではなく、その出力がどの程度適切だったか(評価)を報酬としてフィードバックし、モデルが正解に近い行動を強化していきます。これによって、より深いレベルの情報推論(reasoning)が行われるようになるわけです。

(新しいRFTの場合)
>> 入力Aに対して、出力Bを作成してみた。50点ほど適切と評価された。
>> 同じ入力Aに対して、今回は出力Cを作成してみた。60点ほど適切と評価された。
>> なるほど。入力Aに対して、回答をBからCに変えると10点高い評価を得られる。
>> では、次Aと似たような入力があったら、Cのように答えるべきである。
>> また、「回答をBからCに変えると10点高い評価を受ける」経験は、A以外のケースにも使えるかもしれない。
…

このように、単なる(入力, 出力)のペアだけでなく、LLMの回答に対する評価を組み合わせるため、モデルが取り込む情報や学習する内容の深さが大きく変わります。RFTは、モデル内部のより多くのパラメータに影響を与えられるため、動画でも紹介されていたように、少ない学習データでもより強力で深いレベルのモデルカスタマイズが実現可能です。

ケーススタディ:遺伝病の原因追論

では、OpenAIの動画で紹介されたケースを詳細に見て、RFTを実施するため具体的にどのようなデータが必要で、どのような結果を得られるのかについて調べていきます。

OpenAIが提供したデモケースは、遺伝病の症状から、症状の原因となる遺伝子を特定するタスクです。結果について最初からネタバレすると、このような専門性の高い医療タスクにおいて、RFTを実施したo1-miniがo1に勝ちます。

学習データの構成

学習データとして提供したのは、次のようなテキストデータが1100個書かれている.jsonlファイルです。


<図3:「遺伝病の症状から、症状の原因となる遺伝子を特定するタスク」の学習データ(ソース:OpenAI)>

データの内容を見ると、

  • 背景情報: 患者の年齢・性別、現在の症状および欠如している症状のリスト
  • 指示内容: タスクの指示文
  • 正解の例: モデル出力にて期待される“正解”
    (この正解はトレーニング中のモデルに提供されず、評価のためだけに使用)

が含まれています。内容の構成だけ見ると、我々が普段作成するプロンプトのものと大きく変わりはない感じですね。正解が書かれてはおりますが、モデルには提供されずに回答の評価のためだけに使われます。

評価関数の定義

RFTでは、モデルの回答に対する報酬として「回答を評価する関数(Reward Function)」を追加で提供する必要があります。OpenAIのデモでは、次のような評価関数を使いました。


<図4:「遺伝病の症状から、症状の原因となる遺伝子を特定するタスク」の評価関数(ソース:OpenAI)>

モデルの出力を「関連度が高い遺伝子を降順に並べたリスト」と仮定して、出力したリストと真の正解(GT)を比較し、次のルールにしたがって 0〜1 の実数のスコアを返します。

GT(正解)がリストの中に含まれている場合:
    GTがリストの先頭(1番目)にあれば、1.0スコア(最大報酬)
    GTが先頭以外の位置にあれば、0.7スコア(部分報酬)
リストにGTが含まれていない場合:
    0.0スコア(ゼロ報酬)

これまでのFTでは、学習データセットの量に加えて、データの質や一貫性などがモデルのパフォーマンスに大きく影響していました。一方、RFTでは学習データの質や量と同等、あるいはそれ以上に、この評価関数の定義が重要になります。どのような情報を、どれくらい学習させるのかを決める役割を担うのがこの評価関数であるため、学習を始める前に「設計した評価関数の最適化が、きちんとタスクの学習に繋がっているか」を慎重に検討する必要があります。

ハイパーパラメータの設定

デモでは、下のような最小限のハイパーパラメータのみを公開しております。


<図5:RFTのハイパーパラメータ(ソース:OpenAI)>

内容としては、

  • バッチサイズ:一回のモデル最適化で、全体学習データセットからサンプリングするデータの個数。
    高い値を入れると学習プロセスが安定し良い結果を得る確率が上がるが、学習時間が長くなる。
  • 学習率倍数:一度のモデル最適化にて、モデルパラメータ一気にどれくらい変化させるのかに影響。
    一回の最適化で変動するパラメータ量が多くなり学習効率が良くなるが、学習が不安定になる。
  • エポック:学習プロセスのイテレーション数。
    高い値を入れると良い結果を得る確実が上がるが、学習時間が長くなり過学習のリスクがある。

のような、モデル学習において一般的なハイパーパラメータをリストアップしています。

RFTの結果

先ずは学習プロセスのモニタリングです。学習途中モデルのパフォーマンスを測定する方法にはさまざまなやり方があると思いますが、強化学習では「モデルがバリデーションテストでどれくらいの報酬(reward)を得ることができるのか」を記録してグラフ化する(learning curve)ことが多いです。



<図6:「遺伝病の症状から、症状の原因となる遺伝子を特定するタスク」の学習カーブ(ソース:OpenAI)>
(上)学習途中に測定した、バリデーションデータにおけるモデルの評価点と(下)移動平均カーブ。平均で見ると、モデルがより多くの報酬(reward)を稼ぐように学習していることがわかる。

スムージング(移動平均など)を行っていない学習カーブ(図6・上)だけではやや分かりづらいのですが、移動平均を取ると右肩上がりに推移している様子がわかり、モデルが確実により多くの報酬を獲得する方向へ学習していると確認できます。

この学習グラフを解析する際には注意すべき点があります。ここで示されているのは、「バリデーションデータに対してモデルが稼ぐ報酬が徐々に向上している」ことだけであり、強化学習の観点では「報酬の最大化に向けてモデルがうまく学習している」ことを意味します。しかし、それが本当に「遺伝病の症状から原因遺伝子を特定する」というタスクの達成に直結しているかどうかは、別途検証しなければなりません。


<図7:「遺伝病の症状から、症状の原因となる遺伝子を特定するタスク」の精度テーブル(ソース:OpenAI)>
1行から順番に(o1、o1-mini、RFTを実施したo1-mini)モデルの207テストケースにおける成功率を示している。

上のテーブルは、RFTで学習させたモデルのパフォーマンスを測定したテスト結果です。3種類のモデル(o1、o1-mini、RFTを実施したo1-mini)に対して、207件のテストケースでの成功率を算出しています。縦軸の「top@#」は、モデルが出力する「関連度の高い遺伝子を降順に並べたリスト」の上位#番目までに正解が含まれているかどうかを示しています。たとえば「top@1」は、正解がリストの先頭(評価関数から1.0スコア)にある場合、「top@max」はリストのどの順位でも正解が含まれていれば該当するケースを指します。


<図8:「遺伝病の症状から、症状の原因となる遺伝子を特定するタスク」の精度グラフ(ソース:OpenAI)>
top@1/5/maxの全てケースにて、RFTを実施したo1-mini(赤ダッシュ)が、o1(緑線)を上回っている。

次に、テーブルでまとめたテスト結果をグラフ化したものを見てみると、まずtop@1/5/maxの全てで、o1(緑線)のパフォーマンスがo1-mini(赤線)より優れていることが分かります。これはモデルの規模やパラメータ数による性能差が原因と考えられます。実際モデルの利用コストにも、2025年1月を基準で5倍の差があります(o1のコストがo1-miniの5倍)。

興味深いのは、RFTを実施したo1-mini(赤の破線)のパフォーマンスです。最も難易度が高いと考えられるtop@1では、RFTを行わないo1-mini(赤線)の精度をほぼ2倍にまで向上させ、top@1/5/maxいずれの指標でも、パラメータ数が10倍以上と推定されるo1(緑線)の精度を上回っています。

もちろん、top@1で31%の診断率が実際の医療現場でどの程度有効かは未知数です。しかし、ドメイン特化のLLMアプリ開発に携わった経験のある私からすると、この結果には目を見張るものがあります。

ビジネスインパクト

OpenAIのデモ結果をもとに、個人的に感じたポイントをまとめると、以下のとおりです。

  • 医療診断のような高度に専門的なタスクでも、RFTを適用することで大きな精度向上が期待できる。
  • ドメイン特化した、専門性の高いタスクにて、モデルのパラメータ数は第一優先順位ではないかも知りません。真に大事なところは、「どのように・どの程度モデルをタスクにフィットさせられるか」。
  • デモで示されているようなシンプルな評価関数であっても、驚くほど大きなインパクトのある結果を生み出せる。

これにより、これまで難しいとされてきた「ドメイン特化のLLMアプリ開発におけるモデル精度の向上」に、新たな有力手段が加わったと言えるでしょう。これを活用すれば、さらに多くの分野でより質の高いAIサービスを実装できる可能性が高まります。一方で、既存のツールや人間の専門家と比較してどの程度の競争力があるのかについては、まだ検討が必要なところです。

加えて、ビジネス的な観点でも興味深い内容があります。RFTを活用すると、高品質なサービスを5倍安いコストで実装できるという今回のデモ結果は、最近話題の「LLMからSLM」というトレンドにも合致します。RFTが正式にリリースされた暁には、より低コストかつ応答速度も早いsLMの時代が始まるかもしれません。

RFT実装における課題

費用について

OpenAIの動画よると、o1-miniのRFTには数時間から数日ほどかかるとのことです。一般的に、モデルの学習時間はパラメータ数に比例すると言われており、今回のデモでo1のRFT結果が示されなかったのは、おそらくo1の学習時間がさらに長くなるためではないかと推察されます。

そもそも強化学習のアルゴリズムは、既存のFTに比べて学習コストが高い傾向があります。入力と出力の関連だけでなく、「どれだけ正しいか」という評価を詳細に学習してより多くのパラメータを更新するため、学習すべき情報が多く複雑になるからです。そのため、RFTにかかる総コストはかなり大きくなると予想されます。

評価関数の設計問題

RFTは動画でも紹介されているように、これまでのFTに比べ少ない学習データでも良好な結果を得ることができます。一方、同じ学習データを使っていても、評価関数(報酬の与え方)の設計によって結果が大きく変わる点には注意が必要です。

そのため、タスクの特性や学習データの性質を踏まえて最適な評価関数を定義する、いわゆる「Reward Engineering」が重要になります。さらに、一度のRFT実行にかかる時間が数日におよぶことを考えると、「適切な評価関数を設計する能力」は今後ますます重要なスキルになるでしょう。

GT(正解)がリストの中に含まれている場合:
    GTがリストの先頭(1番目)にあれば、1.0スコア(最大報酬)
    GTが先頭以外の位置にあれば、0.7スコア(部分報酬)
リストにGTが含まれていない場合:
    0.0スコア(ゼロ報酬)

今回のデモでOpenAIが設定した評価関数は、強化学習の観点から見るとシンプルな形を取っています。設計するうえで、特に以下の点がポイントとなります。

  • 正解が最適でなくても部分報酬を与える
    目標(top@1)が難しすぎると、モデルがまったく報酬を得られず学習が進まない(sparse reward問題)リスクがあります。そのため、top@1でなくてもtop@maxなどサブゴールを設定し、部分報酬を与える方法が効果的です(top@maxはtop@1を含みます)。

  • 部分報酬として最大報酬の70%を与える
    サブゴール(top@max)にどの程度の割合で報酬を与えるかは非常に重要です。割合が高すぎるとモデルが最適解を探索しなくなる恐れがあり、サブゴールの行動ばかりを強化してしまう可能性があります。

  • 正解を含まない場合はゼロ報酬
    強化学習のアルゴリズム上、ゼロ報酬ではモデルがほとんど学習できないという特性があります。モデルが望ましくない出力を出した場合、それを強く抑えたいのであればゼロ報酬ではなく陰の報酬(-1.0など)を与えることもあります。今回は不正解をゼロ報酬とし、モデルの行動範囲を狭めすぎないようにしたと推測されます。

学習モデルおよびハイパーパラメーターの選択問題

動画でも紹介された次のグラフからもわかるように、強化学習アルゴリズムはデフォルトで「学習モデルのパフォーマンスが中々安定しにくい」という性質があります。



<図9:「遺伝病の症状から、症状の原因となる遺伝子を特定するタスク」の学習カーブ(ソース:OpenAI)>
(上)学習途中に測定した、バリデーションデータにおけるモデルの評価点と(下)移動平均カーブ。

一般的に、Learning rate(学習率)、モデルのパラメータ数、Batch size(バッチサイズ)の順に大きく影響を受けるので、目的とするタスクに応じてこれらを適切にチューニングする必要があります。

また、学習を何エポック行うかという設定も非常に重要です。強化学習モデルのパフォーマンスはエポック数と必ずしも線形に比例しないため(図9・下では61エポック時点で約0.35、113エポック時点で約0.37という平均スコア)、目標とする性能と学習コストのバランスを見極めて決定する必要があります。

まとめ

本記事では、今年のリリースを目標にアルファテスト中である「Reinforcement Fine-tuning(RFT)」についてご紹介しました。これは、おそらくGPT-4の調整に用いられた「人のフィードバックによる強化学習(RLHF: Reinforcement Learning from Human Feedback)」をベースとした新しい機能で、従来のFTとは一線を画すLLMカスタマイズを可能にしようとしています。

公開されたデモでは、非常に専門性の高い「遺伝病の症状から原因遺伝子を特定する」というタスクにおいて、コストが低く応答速度も速いmini級モデルでも高い精度を出せる様子が示されていました。このことから、RFTが今後のLLMアプリ開発のゲームチェンジャーとなる可能性を強く感じています。

最後までお読みいただき、ありがとうございました。Givery AIラボには優秀なAI人材が数多く在籍しております。生成AIを活用したPoCや各種支援にご興味がある方は、ぜひ以下のリンクからお問い合わせください。

https://givery.co.jp/lp/ai-lab/

参考資料

Reinforcement Fine-Tuning—12 Days of OpenAI: Day 2, OpenAI
https://www.youtube.com/watch?v=yCIYS9fx56U

3
Givery AI Lab

Discussion

ログインするとコメントできます