🗾

Qwen3の思考を日本語に!~Qwen3の日本語思考力を獲得する手法~

に公開

概要

Qwen3には、<think>というタグを使ってモデルが思考するプロセスが搭載されています。
これにより、数学やコーディングのような思考が必要なタスクへの理解が深まると同時に、AIがどのように結論に至ったかの推論(Reasoning)を確認でき、AIの解釈性向上に繋がります。

しかし、この<think>内の思考は、ほとんどの場合英語で出力されます。日本人ユーザーにとっては、思考プロセスも日本語で読みたいもの。かといって、その都度翻訳するのは手間がかかります。

本記事では、Qwen3の思考を日本語で実行させることを目指し、いくつかの手法を検証します。結論から言うと、LoRAによるファインチューニングとモデルマージ、そして日本語思考を指示するプロンプトを組み合わせることで、性能の低下を最小限に抑えつつ、安定して日本語で思考させることが可能になりました。

はじめに:AIの「考えていること」を覗きたい

AI、特にLLM(大規模言語モデル)が出した答えに対して、「どうしてこの結論になったんだろう?」と疑問に思ったことはありませんか?
AIの判断根拠が分かれば、私たちはその出力をより信頼し、適切に活用できます。このような「解釈性」の向上は、AIの利用において重要な要素の一つです。

Alibaba社が開発したQwen3は、<think>タグを用いることで、モデルの思考プロセスを出力に含めることができる優れたモデルです。この機能は、主に数学やコーディングなど、論理的思考が求められるタスクにおいて高い性能を発揮することを目的として設計されています。その結果として、モデルの推論過程が可視化され、解釈性の向上にも寄与しています。

しかし、Qwen3は主に英語のデータで学習されているためか、デフォルトの思考プロセスは英語で出力されることがほとんどです。これを日本語化できないか、というのが本記事の出発点です。

実験のセットアップ

今回の検証は、以下の環境で行いました。

ベースモデル: unsloth/Qwen3-4B
評価データセット: elyza/ELYZA-tasks-100
評価方法: gpt-4o-mini を用いたAIによる採点 (5段階評価)

手法①:最も手軽な方法として、プロンプトで日本語思考を直接指示

Qwen3では、<think></think>で思考を終了させることからヒントを得て、思考を開始する<think>タグの中に指示を入れることで、思考の仕方をコントロールできるのではないかと考えました。

プロンプト:

ユーザーの指示の前に、アシスタントの出力として以下のテキストを追加します。
<|im_start|>assistant <think>日本語で思考を実施します。
⚠️ </think>も含めてしまうと思考モードが終了してしまうので追加していません。

結果

日本語思考率: 100%
ELYZA-tasks-100スコア: 4.01 → 3.37 (低下)
この結果から、プロンプトだけで思考を日本語化することは可能であるものの、モデルが本来得意とする英語思考から切り替えることで、性能が大きく低下してしまうことが分かりました。日本語タスクであっても、思考は英語で行う方が得意なようです。

出力例は下記で見にくいかもしれませんが、<think>内で同じ出力を繰り返していたりもしています。

手法②:日本語の思考データでファインチューニング

次に、日本語の思考能力そのものを鍛えるために、ファインチューニング(LoRA)を試みました。

データセット:

Kendamarron/OpenMathInstruct-2-ja-CoTを使用。これは、算数などの問題に対して日本語での思考プロセスと回答が含まれたデータセット(約15,000件)です。こちらのデータセットの詳細は、日本語reasoningモデルを作るを見ていただけると幸いです。

結果

日本語思考率: 100%
ELYZA-tasks-100スコア: 2.87 (さらに低下)
結果は振るわず、スコアは最も低いものとなりました。思考はすべて日本語で行われるようになったものの、推論の途中で無限ループに陥り、回答を生成できないケースが複数見られました。学習データに過剰適合してしまい、汎用的なタスクへの対応能力が落ちてしまったと考えられます。

手法③:性能維持のため、モデルマージを試す

ファインチューニングによる性能劣化を防ぐため、元のモデルの能力を維持しつつ、日本語思考能力を少しだけ加える「モデルマージ」を試しました。
元のモデルの比重を大きくすることで、推論能力の維持を狙いました。

結果

日本語思考率: 75% (25%は英語に戻る)
ELYZA-tasks-100スコア: 3.70 (手法①より改善)
スコアは3.70と、プロンプトのみの手法より改善しました。しかし、思考の約1/4が英語に戻ってしまい、「安定して日本語で思考させる」という目的は達成できませんでした。推論力と日本語思考の両立は難しいようです。

手法④:モデルマージ + プロンプトの合わせ技

これまでの結果を踏まえ、最後の手段を試します。

モデルマージで、モデルに日本語思考の「素養」を少しだけ与えて、その上でプロンプトを使って、日本語思考するよう後押しすることで、性能が向上できないか考えました。
手法③のモデルは、日本語思考の能力が多少なりとも向上しているはずです。そこにプロンプトで明確な指示を与えることで、性能を維持しつつ、安定して日本語思考ができるのではないか、という仮説です。

結果

日本語思考率: 100%
ELYZA-tasks-100スコア: 3.56
全ての思考を日本語で行わせられており、スコアも3.56と単純なプロンプト手法(3.37)を上回る結果となりました。

出力例は下記で見にくいかもしれませんが、手法②の単純なプロンプトよりも性能が高そうに見えます。

全手法の比較

手法 ELYZA-tasks-100 スコア <think>内が英語になる確率
ベースライン(元のQwen3) 4.01 100%
1. プロンプトのみ 3.37 0%
2. ファインチューニング(FT)のみ 2.87 0%
3. FT + モデルマージ 3.70 25%
4. FT + モデルマージ + プロンプト 3.56 0%

まとめ:Qwen3の日本語思考力を引き出すために

本記事では、Qwen3の思考プロセスを日本語化するための4つの手法を検証しました。

結果として、日本語の思考データでファインチューニングしたモデルを元のモデルとマージし、さらにプロンプトで日本語思考を指示するという合わせ技が、性能低下を抑えつつ日本語思考を実現する上で効果がありそうだとわかりました。

今回の検証から、FTとモデルマージによってモデルの「日本語で思考する能力」そのものが底上げされ、その潜在能力をプロンプトで引き出すことで、安定した結果に繋がったと考えられます。

LLMの思考プロセスを日本語で確認できることは、AI技術をより身近で信頼できるものにするための重要な一歩だと考えます。Qwen3をお使いの方は、試してみてはいかがでしょうか。

labdemy

Discussion