機械翻訳された日本語Preferenceデータの有効性の検証にトライしてみる
本記事は「LLM・LLM活用 Advent Calendar 2024」の5日目の記事になります。
はじめに
この記事では、英語から日本語に機械翻訳されたPreferenceデータがどこまで元の有効性を保てているかという問題の検証にトライします。
Preferenceデータについて
LLMの事後学習におけるReward ModelingやPreference Optimizationのためには、人間(またはLLMなど)がテキストに対して評価付けを行ったPreferenceデータが必要不可欠です。
こういったPreferenceデータは大きく以下の2つに分けられます。
1. 人手でアノテーションされたデータ
英語圏におけるオープンライセンスで配布されている代表的なものとして、Anthropicのhh-rlhfやNVIDIAのHelpSteer2などが存在し、よく利用されています。
一方、日本語圏においては誰でも利用可能な形で公開されている大規模な人手作成のPreferenceデータセットは現在存在しません。
2. Reward ModelやLLM as a judge等を使って作成された合成データ
英語圏における代表的なものとして、NCSOFT/offsetbiasやopenbmb/UltraFeedback、Magpie-Align/Magpie-Llama-3.1-Pro-DPO-100K-v0.1などがあります。(ただし、ライセンスの妥当性に疑問が残るものが多い)また、Self-Rewardingのような手法の中でもこのようなデータが学習に利用されます。
日本語圏においてもcyberagent/chatbot-arena-ja-calm2-7b-chat-experimentalやweblab-GENIAC/aya-ja-evol-instruct-calm3-dpo-maskedのような簡易的なものは存在しますが、大規模かつ高品質なものは不足しています。
このような日本語データ不足に対する対策として、英語データを日本語に機械翻訳したデータセットが作られています。代表的なものとして、llm-jp/hh-rlhf-12k-jaやkunishou/HelpSteer2-20k-jaがあります。
今回の検証では、これらの日本語に機械翻訳されたデータセットについて、翻訳後のデータセットにどれだけPreferenceデータとしての有効性が残っているのかを検証してみます。
検証手法とプロンプト設計
検証方法は非常にシンプルです。
OpenAIのgpt-4o-2024-0806
に、翻訳前の英語の回答のペアと日本語に翻訳された回答のペアを与え、どちらの回答の方が良いかをJudgeさせます。このJudgeの結果と元の人手によるアノテーションとの一致率をそれぞれ計算し、英語データに対する一致率と日本語データに対する一致率の差分を見ることで、翻訳によってどの程度有効性が失われたかを推定します。
Judgeに利用するプロンプトは以下の通りです。
英語データに対するJudgeのプロンプト
Please act as an impartial judge and evaluate the quality of the responses provided by two AI assistants to the user question displayed below. You should choose the assistant that follows the user's instructions and answers the user's question better. Begin your evaluation by first verifying whether each response contains any obvious or subtle errors. Then propose an appropriate evaluaiton rubric, e.g. 1-5 criteria that are important for evaluating responses to this specific user question. Continue your evaluation by checking each response carefully along those criteria. Based on the analysis in previous steps, choose which response is better overall. Avoid any position biases and ensure that the order in which the responses were presented does not influence your decision. Do not allow the length of the responses to influence your evaluation. Do not favor certain names of the assistants. Be as objective as possible. After providing your evaluation, output your final verdict by strictly following this format: \"[[A]]\" if assistant A is better, \"[[B]]\" if assistant B is better.
[User Question]
{instruction}
[The Start of Assistant A's Answer]
{answer_1}
[The End of Assistant A's Answer]
[The Start of Assistant B's Answer]
{answer_2}
[The End of Assistant B's Answer]
日本語データに対するJudgeのプロンプト
公平な判定者として、以下に与えられたユーザーの質問に対する2つのAIアシスタントの回答の質を評価してください。そして、ユーザーの指示に上手く従い質問により良い答えをしているアシスタントを1つ選択してください。
まず、評価を始める前にそれぞれの回答に明らかなまたは微妙な誤りがないか確認してください。その後、この質問に対する回答を評価する際に重要な基準(例:1~5つの基準)を提案してください。
次に、その基準に基づいて各回答を注意深くチェックしてください。その後、前のステップでの分析に基づいて、全体的に優れた回答を1つ選んでください。
評価の際には順序による偏りを避け、提示された回答の順番が判断に影響しないようにしてください。、また、回答の長さに影響されないようにし、アシスタントの名前による好みも避けてください。できる限り客観的に評価をすることを心掛けてください。
評価を提供した後、アシスタントAが優れている場合は「[[A]]」、アシスタントBが優れている場合は「[[B]]」というフォーマットに厳密に従って最終判定を出力してください。
[ユーザーの質問]
{instruction}
[アシスタントAの回答の開始]
{answer_1}
[アシスタントAの回答の終了]
[アシスタントBの回答の開始]
{answer_2}
[アシスタントBの回答の終了]
なお、評価の際の位置バイアスを避けるため、データの半数についてchosen
が前/rejected
が後ろ、残り半数についてはrejected
が前/chosen
が後ろに来るように並べて評価させています。
また、Judgeの際に利用したサンプリングパラメータは以下の通りです。
- temperature: 0.0
- top_p: 1.0
- max_tokens: 2048
検証対象のデータセット
検証対象のデータセットとして、以下の4つのものを選択しました。
-
kunishou/HelpSteer2-20k-ja
NVIDIAのHelpSteer2を日本語に機械翻訳したデータセットです。(翻訳ツールは不明)
helpfulnessのスコアが高い方をchosen
、低い方をrejected
とし、スコアが等しいものを除外したうえでデータセットの先頭1000件を検証対象としました。 -
llm-jp/hh-rlhf-12k-ja
Anthropicのhh-rlhfをDeepLを使って日本語に機械翻訳したデータセットです。
元の英語データと突合するための情報が欠けていたため、このデータセットに限り以下のようにして日本語・英語データの1000件を選択し検証対象としています。
日本語:sourceがhelpful-onlineで対話が1ターンのものからランダムに1000件を選択
英語:元のhh-rlhfのリポジトリからhelpful-onlineのサブセットを選択し、その中で対話が1ターンのものからランダムに1000件を選択 -
ryota39/webgpt_comparisons-ja
OpenAIのwebgpt_comparisonsをcyberagent/calm3-22b-chatを使って日本語に機械翻訳したデータセットです。データセットの先頭1000件を検証対象としています。 -
ryota39/synthetic-instruct-gptj-pairwise-ja
Dahoas/synthetic-instruct-gptj-pairwiseをcyberagent/calm3-22b-chatを使って日本語に機械翻訳したデータセットです。データセットの先頭1000件を検証対象としています。
検証結果
検証結果は以下の通りです。
データセット | 英語 | 日本語 | 差分 |
---|---|---|---|
hh-rlhf | 64.7% | 61.5% | -3.2% |
HelpSteer2 | 67.2% | 64.0% | -3.2% |
webgpt_comparisons | 64.8% | 60.0% | -4.8% |
synthetic-instruct-gptj-pairwise | 99.4% | 96.9% | -2.5% |
考察
検証結果から簡単な考察を行います。
- 英語→日本語の機械翻訳において一致率が平均3%程度低下しており、Preferenceデータとしての有効性が一定量失われているように見える
機械翻訳の品質や細かな表現のクオリティ等の差で、やはり品質の劣化は存在するように考えられます。ただし、Judgeモデルであるgpt-4o自体の日本語Judge性能が英語でのJudgeの性能より低く、その結果一致率が下がっているという可能性もあります。 - 機械翻訳後のデータセットでも、全く使えないデータになるわけではないと考えられる
機械翻訳後の日本語ペアに対するJudgeの結果でもある程度元々の人手評価との一致率は保持できており、翻訳後もある程度はPreferenceデータとしての有効性を保てていると考えられます。ただし、llm-jp v1.1のレポートで報告されているような、語尾のばらつきなどの機械翻訳特有の問題が学習後のモデルに悪影響を与えるというような問題は存在します。
まとめ
この記事では英語から日本語に機械翻訳されたPreferenceデータにどこまで有効性が残っているかの検証にトライしました。この結果だけから全てを語ることは出来ませんが、やはり翻訳による品質の低下というのは一定量あると考えたほうが良さそうです。
今後、日本国内でも大規模かつ高品質なPreferenceデータが作成・公開されることを願います。
余談
現在DiscordのローカルLLMに向き合う会にて、kaeruさんの協力のもと「日本語Preferenceデータを手動で頑張って作る」という活動をしています。アノテーション途中のデータは下記リポジトリで逐一更新されていきます。
ちまちまと人手で頑張ってアノテーションしていますが人手不足の状態であり、もしアノテーションにご興味のある方がいればぜひお力を借りたいです。ご興味のある方がもしいればDiscordやXのDM等でご連絡ください!
ローカルLLMに向き合う会のDiscordにはこちらから参加可能です。
Discussion