🧬
プロンプト進化を用いた日本語選好データセットの構築
GENIAC 松尾研 LLM開発プロジェクトメンバーのMitsuhashiです。
プロジェクト期間中に取り組んだ内容をまとめます。
概要
- 本記事は、プロンプト進化という手法を用いた日本語選好データセットの構築に関する記事です
- そもそも日本語の指示応答データセットが少ない、特に後述する選好データセットが少ない、という致命的な問題に対して、既存のデータセットを拡張して日本語のデータセットを確実に増やすことを目的として取り組みました
- 本記事で紹介するデータセットはaya-ja-evol-instruct-calm3-dpo-maskedです
- 上記の基となったaya-ja-nemotron-dpoも公開します
選好データセットとは
- ユーザーが入力したと想定する質問文に対して、好ましい応答と、好ましくない応答がペアになったデータセットのことを、本記事では選好データセットと呼びます
プロジェクト当時の自分の役割
- 事後学習の内、DPO(Direct Preference Optimization)のための選好データセットを調査して、調査結果に基づいて選好データセットを作成すること、が自分の役割でした
プロジェクト当時の状況
※あくまで個人の目から見た当時の状況です
- Phase1と比較して、より高性能なLLMを学習するための施策を検討している時期でした
- 事後学習の手法としてDPOが性能的にも計算資源のコスト的にも試しやすいことがわかっており、さらに効果的な手法も調査しつつ、DPOがすぐ動かせるように選好データセットの整備を始めたいという状況でした
既存の選好データセット
既存の日本語選好データセットは、自身で調べた限り以下の4点でした
- 16万件ほど翻訳されていますが、翻訳結果に繰り返しやchosenとrejectedに同じ文章が入っている事例を確認しています
- 1.2万件にデータサイズは減っていますが、上記の繰り返しや同じ文章が入っている事例は確認していません
- 2.9万件, chatbotarenaのユーザー入力を和訳したデータセットであり、chosenとrejectedはcyberagent/calm2-7b-chatを使って生成されています
- 4.9万件, 上記の2点目と3点目を統合して、追加で英語データセットを4,000サンプルほど和訳し追加したデータセットです
調査した結果、上記で記載したような選好データセットが公開されていることが分かりました。しかし、まだまだ日本語の選好データセットの件数は少ないと考え、新しい日本語の選好データセットを作る必要があると判断しました。
ayaデータセット
- aya_datasetは多言語の指示応答データセットです
- 日本語の指示応答データセットも6,000件ほど存在しており、比較的新しい日本の知識も含まれています
- 日本語のデータセットは以下のリポジトリから確認できます
- ayaの日本語データセットの特徴として、回答が非常に簡潔であることが挙げられます
- 簡潔であることに越したことはありませんが、補足情報やよりバリエーションに富んだ質問にも答えられるようになれると、より有用なLLMに一歩近づくと考えました
- 今回はこのayaデータセットの質問と応答をより複雑にし、かつ選好データセット用にchosenの応答とrejectedの応答も付与することで、新たな選好データセットを作成しました
Evol-Instruct
-
指示応答データセットを合成する手法の一つにEvol-Instructがあります
- 英語のみの名称だと伝わりにくいと判断し、タイトルには、プロンプト進化、と記載しました
- 種となる指示文をLLMを用いて拡張し、拡張した各質問に対して改めて応答文を生成することでデータセットの件数を増加させる手法です
-
今回はEvol-Instructを使ってayaデータセットの指示文を1件につき5倍に増やします
- 日本語でのEvol-Instructには、
cyberagent/calm3-22b-chat
を採用しました
- 日本語でのEvol-Instructには、
-
プロンプト進化の手法はEvol-Instructに倣い5種の拡張方法を採用しました
- 具体的な拡張方法を以下の表にまとめます
名称 | 概要 |
---|---|
breath evolving | 元の指示文と同じ分野に属しているものの、より稀な指示文を生成する |
depth evolving (制約の追加) | 元の指示文に制約を1つ追加する |
depth evolving (質問の深化) | 元の指示文の深さと幅を広げる |
depth evolving (質問の具体化) | 元の指示文をより具体的な例に置き換える |
depth evolving (質問の複雑化) | 元の指示文をより複雑化する |
- Evol-Instructの実装はこちらを参考にしました
- 実際に使用したプロンプトはこちらです
- 実行手順についてはこちらをご参照ください
- コードは以下のステップに分かれています
- 進化用のプロンプトの作成
- 進化後のプロンプトの生成
- chosenの生成
- rejectedの生成
- コードは以下のステップに分かれています
aya-ja-evol-instruct-calm3-dpoの抜粋
- 以下のフォーマットでデータを格納しています
{
"idx": インデックス,
"prompt": 日本語の指示文,
"chosen": chosenの応答文,
"rejected": rejectedの応答文,
"chosen_model": chosenとしたモデル,
"rejected_model": rejectedとしたモデル,
"answer": 元の回答
},
- データセットの抜粋は以下です
{
"idx": 1097,
"prompt": [
{
"role": "system",
"content": "あなたは親切なAIアシスタントです。"
},
{
"role": "user",
"content": "強い人でも、特に弱点とされる部位として知られる「むこうずね」について、一般的に「何の泣き所」と呼ばれるか教えてください。また、この部位がなぜ特に弱点とされるのか、その生理的および解剖学的理由についても詳しく説明してください。さらに、この部位がスポーツや日常生活においてどのような影響を与えるか、具体的な例を挙げて説明してください。"
}
],
"chosen": "むこうずねは一般的に「アキレス腱」と呼ばれる部位の一部であり、特に「弁慶の泣き所」として知られています。アキレス腱は、ふくらはぎの筋肉(腓腹筋とヒラメ筋)と踵骨をつなぐ非常に強力で重要な腱です。\n\nアキレス腱が特に弱点とされる理由は、その解剖学的構造と生理的機能にあります。アキレス腱は、筋肉と骨をつなぐ腱であり、その主な役割は歩行や走行時に足首を安定させることです。しかし、この腱は非常に長くて薄く、血流が少ないため、一度損傷すると治癒が遅れることがあります。また、アキレス腱は筋肉と骨の間に位置しているため、筋肉や骨の動きによって常にストレスがかかっています。このため、アキレス腱は過度の運動や急激な動きによって容易に損傷を受けやすいのです。\n\nスポーツや日常生活において、アキレス腱が影響を受ける具体的な例を挙げると、ランニングやジャンプ、急な方向転換などが挙げられます。例えば、バスケットボールやサッカーのようなスポーツでは、急な方向転換やジャンプの着地時にアキレス腱に大きな負荷がかかります。このような状況でアキレス腱が過度に伸ばされたり、急激な力が加わったりすると、アキレス腱炎やアキレス腱断裂といった怪我が発生することがあります。\n\n日常生活においても、例えば階段を降りる際や重い荷物を持ち上げる際に、アキレス腱に過度なストレスがかかることがあります。このような状況では、アキレス腱が炎症を起こしたり、痛みを感じたりすることがあります。\n\nアキレス腱を健康に保つためには、適切なストレッチやウォームアップ、そして過度な負荷を避けるための適切な運動計画が重要です。また、適切なシューズの選択や、運動後のアイシングやマッサージも、アキレス腱の健康を維持するために有効です。",
"rejected": "強い人でも、特に弱点とされる部位として知られる「むこうずね」について、一般的に「何の泣き所」と呼ばれるかについて説明します。\n\n「むこうずね」は、足の裏側の筋肉や腱、靭帯などが集中する部位であり、特に足の裏側の筋肉が弱点とされることが多いです。この部位は、足の裏側の筋肉が緊張しやすく、疲労やストレスによって硬直することがあります。そのため、足の裏側の筋肉が弱点となりやすいのです。\n\nこの部位がスポーツや日常生活において特に弱点とされる理由は、以下の通りです。\n\n1. 足の裏側の筋肉の弱点: 足の裏側の筋肉は、足の裏側の動きやバランスを支える重要な役割を担っています。これらの筋肉が弱点となると、足の裏側の動きが鈍くなり、バランスが崩れやすくなります。\n\n2. 足の裏側の筋肉の疲労: 足の裏側の筋肉は、長時間の歩行やランニングなどの運動によって疲労しやすく、疲労が蓄積すると硬直して可動域が制限されることがあります。\n\n3. 足の裏側の筋肉の緊張: 足の裏側の筋肉が緊張すると、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。\n\n4. 足の裏側の筋肉の障害: 足の裏側の筋肉が障害を起こすと、足の裏側の動きが制限され、歩行やランニングなどの運動が困難になることがあります。\n\n具体的な例としては、足の裏側の筋肉が弱点となり、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。例えば、長時間のランニングやウォーキングを行うと、足の裏側の筋肉が疲労し、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。また、足の裏側の筋肉が障害を起こすと、足の裏側の動きが制限され、歩行やランニングなどの運動が困難になることがあります。\n\nこの部位がスポーツや日常生活においてどのような影響を与えるかについて、具体的な例を挙げて説明します。\n\n1. 足の裏側の痛みや疲労感: 足の裏側の筋肉が弱点となり、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。例えば、長時間のランニングやウォーキングを行うと、足の裏側の筋肉が疲労し、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。\n\n2. 足の裏側の障害: 足の裏側の筋肉が障害を起こすと、足の裏側の動きが制限され、歩行やランニングなどの運動が困難になることがあります。例えば、足の裏側の筋肉が障害を起こすと、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。\n\n3. 足の裏側の障害の予防: 足の裏側の筋肉が障害を起こすと、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。そのため、足の裏側の筋肉を鍛え、足の裏側の障害を予防することが重要です。例えば、足の裏側の筋肉を鍛えるために、足の裏側の筋肉を鍛えるトレーニングやストレッチを行うことが効果的です。\n\n4. 足の裏側の障害の治療: 足の裏側の障害が発生した場合、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れることがあります。そのため、足の裏側の障害を治療するために、適切な治療法を選択することが重要です。例えば、足の裏側の痛みや疲労感、足の裏側の硬直などの症状が現れた場合、足の裏側の筋肉を鍛え、足の裏側の障害を予防することが重要です。\n\n以上のように、足の裏側の筋肉はスポーツや日常生活において重要な役割を担っており、その弱点を理解し、適切なトレーニングやストレッチを行うことで、足の裏側の障害を予防し、スポーツや日常生活をより快適にすることができます。",
"chosen_model": "cyberagent/calm3-22b-chat",
"rejected_model": "team-hatakeyama-phase2/tanuki-8B-exp007",
"answer": "弁慶です。"
},
確認できている課題
構築したデータセットで確認できている課題を整理します
課題 | 詳細 |
---|---|
同じ文章が繰り返されているrejected応答の改善 | 開発途中のTanukiの応答には繰り返しが含まれていたため、あえてrejectedの応答に使用したのですが、十分に学習されたLLMにとっては、タスクが簡単に捉えられ、学習(=アライメント)の効果が薄くなる可能性があります。この問題に対しては、rejectedの応答文を適宜別モデルの応答文に置き換えることで、より効果的な選好データセットを作成できると考えています。 |
chosen/rejected応答の自動選択 | 今回はcyberagent/calm3-22b-chatを経験的にchosen,開発中の8Bモデルをrejectedに指定しましたが、これは日本語性能の高いLLMが非常に稀なタイミングで登場したことにより検証できた内容です。本来はchosenに使用したモデルがなくとも、Tanukiが生成した複数の応答文を、別のLLMないし報酬モデルなどで品質推定を行うことで性能改善を行うのが妥当だと考えられます。 |
Tanukiの学習に使用したか
- 最終的なTanuki-8Bの事後学習(DPO)に使用されました
まとめ
- 本記事では、プロンプト進化を用いた日本語選好データセットを構築する取り組みについて記載しました
- 構築したデータセットに対して、現状確認できている課題を整理しました
- 道半ばな点はありますが、日本語の指示応答データセットの構築の一助になれば幸いです
東京大学 松尾・岩澤研究室が運営する松尾研LLMコミュニティのLLM開発プロジェクト[GENIAC] の開発記録、情報発信になります。 各種リンクはこちら linktr.ee/matsuolab_community
Discussion