💭
好みの定量化に基づいてLLMを改善するOffline RLHFの検討
GENIAC 松尾研 LLM開発プロジェクトメンバーのMitsuhashiです。
プロジェクト期間中に取り組んだ内容をまとめます。
概要
- 本記事では、プロジェクト期間中に準備はしていましたが、事情によりスケジュールが間に合わなかった取り組みをまとめます
準備していたこと
- 人間のフィードバックを用いた強化学習
- Offline RLHF: Reinforcement Learning from Human Feedbackを検討していました
- OpenAIが提案した手法であり、生成文の好ましさを報酬関数を用いて定量化し、強化学習で好ましさを最大化するようにモデルのパラメータを更新する手法です
- ChatGPTではRLHFにより応答文の品質向上が示されたことから、本プロジェクトでもRLHFを取り入れられないか検討していました
- RLHFの詳細については以下のpreprintをご参照ください
Offline RLHFに必要な要素
- 必要な要素を項目ごとに説明します
項目 | 役割 |
---|---|
日本語の選好データセット | 生成した文章の好ましさを定量化する報酬モデルの学習に必要 |
日本語に対応可能な報酬モデル | 生成した文章がどの程度好ましいかを定量化するために必要 |
指示応答データセットで学習済みのLLM | 学習対象のLLM(今回のプロジェクトだとTanukiモデル) |
報酬モデルとLLMを用いた強化学習 | 好ましい応答をするLLMへの学習(後述の事情により未実施) |
日本語の選好データセット
- LLMが生成した日本語の複数の文章に対して、好ましさを以下のようにアノテーションしたデータセット(=選好データ)が必要です
生成した文章 | 好ましさのランク |
---|---|
文章A | 3位 |
文章B | 4位 |
文章C | 1位 |
文章D | 2位 |
- このランク付けは簡単化のため、二値で置き換えられることもあります
生成した文章 | 好ましい(=1)/好ましくない(=0) |
---|---|
文章A | 1 |
文章B | 0 |
- 自身が調べた限りでは、日本語のデータセットに対して、人手で好ましさのランクがアノテーションされたデータセットや、言語問わず、好ましいか否か(chosenかrejected)の二値ラベルが付与されたデータセットはありませんでした
- 後者のデータセットに絞って調べてみると、英語のデータセットであればAnthropic社から1件、OpenAI社から2件、CarperAI社(厳密にはCarperAI社の共同創業者)から1件公開されています
- Anthropic/hh-rlhf:MITライセンス
- openai/summarize_from_feedback:ライセンス非公開
- openai/webgpt_comparisons:ライセンス非公開
- Dahoas/synthetic-instruct-gptj-pairwise:ライセンス非公開
- これらのようなデータセットをプロジェクト期間中に見つける、または自作する必要がありました
- Phase2から参加した都合で、残された期間は2か月程でした
日本語に対応可能な報酬モデル
- 入力された日本語の文章の好ましさを定量化するためのモデルを学習する必要があります
- 報酬モデルを使って学習された日本語LLMにはrinna/japanese-gpt-neox-3.6b-instruction-ppoが存在しますが報酬モデルは公開されていません
- 英語の報酬モデルはすでにReward Benchといったベンチマークや報酬モデルのコンペが開催されるほど注目されていますが、日本語の報酬モデルで上記に該当するような取り組みは、自身が調べた限りありませんでした
実装したもの
日本語の選好データセット
- Anthropic/hh-rlhfはすでに他の開発メンバーが学習データセットとして使用していたため、今回の取り組みからは除きました
- openai/summarize_from_feedbackは時間の都合上、割愛しました
- Dahoas/synthetic-instruct-gptj-pairwiseの和訳 (33,143件)
- openai/webgpt_comparisonsの和訳 (17,431件)
- 和訳にはcyberagent/calm3-22b-chatを使用しました
- 上記2件を統合したデータセット
- chosenを含む文章を1、rejectedを含む文章を0に、ラベルを振り直しています
- 201,628件
日本語に対応可能な簡易報酬モデル
- 今回は報酬モデルとして、入力された文章がchosenが含まれているか、rejectedが含まれているかを予測する分類器を学習し、そのlogitsの値を、好ましさを定量化した値として使用することを想定しました
- 作成したのは以下2件の二値分類器です、評価結果はモデルカードに記載しています
- ryota39/retriva-bert-preference-classifier
- ryota39/bge-m3-preference-classifier
報酬モデルとLLMを用いた強化学習
- 最も肝心な所ですが、本プロジェクトでは未実施となりました
- 次の節で主な理由を述べています
開発を見送った理由
- ここまでで、日本語データセットの作成からモデルの学習まで進めましたが、主に以下に示す理由で開発を見送りました
理由 | 補足 |
---|---|
RLHFの効果の見積りが困難 | チーム内には強化学習の専門家はいない状態でした。そんな中、2か月の限られた期間で確実に効果が出せる目測(例えば、ベンチマークのある項目のスコア向上が高い確度で見込めるはず、といった仮説)を立てることができませんでした。 |
学習データ元がライセンス非公開 | 上述したモデルは学習元のデータセットのライセンスが非公開でした。今回のプロジェクトではApache-2.0やMITライセンスなど、比較的自由度の高いライセンスで公開したいというチームの方針があったため、今回作成したデータセットの使用は見送りました。それに従って、このデータセットで学習したモデルの使用も見送りました。 |
学習データのドメインが英語由来のデータに限られる | 今回作成したデータセットは、英語のデータセットを翻訳して作成しました。つまり、英語を母語とする文化圏のユーザーの入力に対する選好データである事が予想されます。今回のプロジェクトでは、日本語に強いLLMを作ることが目標の一つであるため、今回のデータセットでは確度の高いLLMの性能向上は見込めないと判断しました。本来であれば、日本語を母語とする文化圏(=日本)のユーザーの入力に対する選好データを用いることが理想です。 |
他テーマとの作業の優先度の調整 | プロジェクト当時はOffline RLHFだけが動いていたわけではなく、様々な活動が並行して進んでいました。RLHF関連の技術調査から、プロジェクト中に発表されたNemotron-4-340B-Instructの学習データセットの再現など、魅力的なテーマが多くあり、その中からプロジェクトに高い確度で貢献できる活動を考えた結果、私はSFTとDPOのデータセット構築とそれらの品質推定に取り組むことにしました。 |
開発を見送った後
- チーム内で優先して開発する項目に、事後学習データの構築があったため、そちらの開発を優先的に進めました
- 筆者は以下のデータセットの作成および加工を担当しました
- vllmのバッチ推論と主にcalm3-22b-chatを使用して、海外のデータセットの翻訳や既存の日本語データセットの再生成を担当しました
- 詳細は以下の記事をご参照ください
まとめ
- プロジェクト期間中に準備はしていたが、事情によりスケジュールが間に合わなかったOffline RLHFの取り組みについてまとめました
- 今回のプロジェクトでやり残したことは引き続き、個人的に継続していこうと思っています
東京大学 松尾・岩澤研究室が運営する松尾研LLMコミュニティのLLM開発プロジェクト[GENIAC] の開発記録、情報発信になります。 各種リンクはこちら linktr.ee/matsuolab_community
Discussion