マニュアルを増やしても、障害の原因分析はあまり良くならない
たとえば、社内の技術文書でファインチューニングしたあとです。製品仕様の質問には、前より正確に答えます。障害の原因を聞くと、あまり改善しません。
最初に確認する原因は、3つあります。学習データが少ないこと。誤りや重複が多いこと。モデルが小さいこと。どれも確認する価値があります。その次に確認するのが、学習データの混ぜ方です。伸ばしたい能力に対して、各データの割合が合っているかを確認します。
たとえば、IT運用を支援するAIに、次の割合でデータを用意したとします。
| 学習データの種類 | 構成比率 |
|---|---|
| 製品マニュアル・仕様説明 | 50% |
| 過去の障害対応記録 | 20% |
| システム構成・設計情報 | 15% |
| トラブルシューティング手順 | 10% |
| 利用者との対話事例 | 5% |
この割合では、仕様の説明が半分です。障害の原因分析を良くしたいなら、マニュアルを減らし、原因の判断とその理由が書いてある記録を増やす、という仮説もあります。過去の障害記録の割合を高くしすぎると、過去と同じ障害への回答は良くなっても、未知の障害への回答は悪くなることがあります。良くなる能力は、追加したデータの種類によって変わります。
割合と、データの質を分けて推定した研究が、CausalMixです。清華大学、Ant Group、中国人民大学の研究者らが、CausalMix: Data Mixture as Causal Inference for Language Model Trainingで提案しています。まず、件数を同じにしたときに、割合だけで点数が変わるところから見ます。
件数が同じでも、割合が違うと点数は変わる
混ぜ方を見る前に、これまで性能を上げるときに主に使われてきた方法を確認します。3つあります。
モデルを大きくする
パラメータを増やし、より複雑な関係を学習できるようにします。
データを増やす
文章、プログラム、数学の問題、対話の例を追加します。
データの品質を上げる
誤りや重複を除き、正確で読みやすい例を増やします。
この3つは、どれも性能に影響します。データの量より品質が大事、という説明は、「1兆パラメータ」はどう作る?日本のLLM戦略における最適な開発アプローチを検証にあります。ここでは、モデルと件数と品質を同じにしても、分野の割合が違うと点数が変わる点を見ます。この割合の決め方を、データミキシングと呼びます。
たとえば、数学とプログラミングの両方の点数を上げたいとします。
| 構成 | 数学 | プログラミング | その他 |
|---|---|---|---|
| A 均等 | 33% | 33% | 34% |
| B コード重視 | 20% | 60% | 20% |
| C 数学重視 | 60% | 20% | 20% |
プログラミングの点数を上げたいなら、Bが有力です。数学の問題を解く手順が、プログラムで条件を整理する練習になるなら、Cの方がプログラミングの点数も高いことがあります。数学の割合を高くしすぎると、APIの使い方や、実際のプログラムを学ぶ件数が減ります。
上の例では、数学を増やした分だけ、プログラミングの点数が下がるわけではありません。
割合には、別の制約もあります。合計は100%です。数学を10%増やすと、ほかの分野を合計10%減らすことになります。
割合を変えたのか、データの質も変わったのか
BとCの比較では、割合と学習例の中身の両方で結果が決まりました。割合を変えると、データの質も一緒に変わることがあります。
数学の割合を20%から40%に増やすと、推論の点数が上がったとします。このとき、数学を増やしたことが原因だと考えやすいです。
追加したデータには、解き方の説明があったとします。以前のデータは、問題と答えだけだったとします。点数が上がった理由は、2つ考えられます。数学の割合が増えたことです。説明が丁寧になったことです。両方が同時に変わったこともあります。
理由を分けられると、次に変更する項目が決まります。変更するのは、割合なのか、説明の質なのかです。
これは、学習データだけの問題ではありません。たとえば、Webシステムの応答時間です。データベースのインデックス追加、CPUの増強、キャッシュの設定変更を、同時に行ったとします。応答時間が30%短くなっても、どの変更が何%を短縮したかは分かりません。変更を1つずつ試すと、比較できます。
統計では、知りたい原因と別の要因が同時に変わり、効果を区別しにくくなることを交絡と呼びます。学習データでも、割合と品質を同時に変えると、同じ問題が起きます。
数学の割合が高いモデルほど点数が高い、という結果は相関です。割合を増やした効果と言うには、説明の丁寧さなど、ほかの要因を同じ条件にします。点数差の原因が、説明の質であることもあります。
CausalMixは、難しさ、複雑さ、文章の分かりやすさを表す指標を統計の計算で調整し、割合の効果を推定します。これらの指標に含まれない要因があると、推定は偏ります。因果推論は、前提を明示して効果を計算する方法です。
学習後の点数を、割合の効果と分けて計算する
前の節の交絡を、CausalMixは3段で分けます。たとえば、学習後の点数が70点だったとします。この70点には、データの難しさや文章の質、分野の割合、モデルの性質が混ざっています。CausalMixは、指標で説明できる点数の差と、割合の違いで説明できる点数の差を分けます。
指標から予測した点数を、実際の点数から引く
最初のモデルはLightGBMです。表形式の数値から予測する勾配ブースティングで、入力は3つあります。Normalized Lossは予測の難しさ、HESは推論中に次の単語が決まりにくい程度、Writing Styleは文章の分かりやすさと一貫性を表します。論文では、この順に難しさ、複雑さ、文章の質として扱っています。
指標から予測した点数と、実際の点数の差を計算します。この差は、3つの指標では説明できない点数のばらつきです。
同じ指標から、割合の予測も引く
2つ目のLightGBMは、同じ指標から分野の割合を予測します。難しいデータほど、数学の割合が高いことがあります。割合と、データの難しさや文章の質は、別々に決まっているとは限りません。
予測した割合と、実際の割合の差を計算します。この差が、指標の影響を除いたあとの割合の違いです。論文の計算では、割合を対数に変換してから効果を推定します。割合が小さいときの1%の変化と、割合が大きいときの1%の変化では、点数への影響の大きさが違うためです。
引いたあとの差から、割合の効果を計算する
最後にCausalForestDMLを使います。これはDouble Machine Learning(二重機械学習)という方法です。交絡の関係を機械学習で推定し、その分を除いてから、割合を変えたときに点数がどれだけ変わるかを計算します。実装にはEconMLが使われています。点数の予測と割合の予測の両方にLightGBMを使うと、論文のなかの比較では最も成績がよかった、と書かれています。
3つの指標だけでは、難しさや文章の質の影響をすべて除けません。指標の数を増やすと、実験が512回のため、推定が不安定になった、と論文は書いています。30個の指標候補から3つを選んだ理由の1つです。
割合の合計は100%です。これは、前の節と同じ制約です。数学を10%増やすなら、ほかの分野を合計10%減らします。数学を増やした効果は、どの分野を減らしたかとセットで考えます。
計算結果から割合を決める方法は2つあります。CausalMix-Aは、点数が上がると推定された分野に割合を割り当てる計算式です。CausalMix-Sは、合計が100%になる割合を10万通り作り、予測スコアが高い上位100通りを平均します。1通りだけを選ぶと、その割合の誤差が大きく出ることがあります。上位100通りを平均すると、その誤差を小さくできます。
この3段で推定した割合を、論文は次の実験で確かめています。
512回の小規模な学習で、次に試す割合を決める
上の3段を、論文は512回の学習で使っています。実験に使うデータは、Tulu 3の教師あり追加学習用データ(tulu-3-sft-mixture)です。分野は5つです。コーディング、ユーザーの指示に従うタスク、数学の推論、知識の想起、安全性(有害な依頼に従わない回答を含む)です。
このデータから512種類のサブセットを作り、1つあたり10万件にしました。各サブセットで、パラメータ数約5億のQwen2.5-0.5Bをファインチューニングしています。学習の実行にはLlamaFactory、採点にはOpenCompassを使っています。LlamaFactoryは学習を実行するフレームワーク、OpenCompassはベンチマークで採点するツールです。
評価項目は、知識、推論、数学、コーディング、指示に従うタスク、安全性です。問題は、開発用と未知用に分かれています。開発用は、割合を決める計算に使う問題です。未知用は、その計算に使わない問題です。因果モデルが予測の対象にする点数は、開発用の平均点です。
この512回の結果で推定モデルを作ります。推定するときは、指標をTulu 3全体の値に合わせます。CausalMix-Sでは、10万通りの割合をランダムに作ります。10万通りをすべて再学習するのではなく、推定スコアが高い上位100通りの割合を平均して採用します。計算時間の長い再学習の一部を、統計の計算に置き換えています。
512回の学習結果が、この計算の入力です。推定が間違っていれば、選んだ割合も間違います。10万通りよりよい割合が、ほかにあることもあります。この手法は、少ない学習回数から、次に試す候補を絞り込むためのものです。
開発用の平均は上がり、未知の問題では順位が変わる
CausalMixの論文の表について、比較相手をDMOにそろえ、平均点の差を計算しました。DMOは、論文が比較に使っている、追加学習向けの既存手法です。点数は、複数のベンチマークをまとめた平均です。
| 設定 | CausalMix | DMO | 平均点の差 |
|---|---|---|---|
| Qwen2.5-0.5B(約5億)、80万件、開発用、CausalMix-S | 32.81 | 32.04 | 0.77 |
| Qwen2.5-7B(約70億)、80万件、開発用、CausalMix-S | 62.28 | 60.35 | 1.93 |
| Qwen3-4B(約40億)、2万件、別データの平均 | 66.66 | 63.47 | 3.19 |
表の3行目は、AM-Thinking-v1のうちコードと数学のデータで、Qwen3-4Bを学習した結果です。512回の実験で最も点数が高い割合を、論文ではGridと呼んでいます。その平均は64.74で、CausalMixとの差は1.92です。DMOとの差3.19より小さいです。
同じ0.5B、80万件の開発用平均では、計算式で割合を決めるCausalMix-Aが33.94です。DMOとの差は1.90で、CausalMix-Sの差0.77より大きいです。3つの指標を使わないと33.29、指標の影響を引く処理(直交化)をしないと32.66です。上位を平均するCausalMix-Sは32.81で、指標を使わない33.29より低いです。指標で分けるかどうかと、最後に割合を平均するかどうかの両方で、点数は変わります。
未知の問題では、順位が変わります。0.5B、80万件の未知用平均は、DMOが26.49、CausalMix-Sが25.04です。7Bの未知用平均は、CausalMix-Aが49.09、DMOが48.98、CausalMix-Sが47.98です。開発用の平均と、未知の問題の平均は、別々に確認します。
0.5Bで512回学習して作った推定モデルは、同じTulu 3の80万件で7Bを学習するときにも使われています。7Bの開発用平均でも、DMOより高くなっています。別のデータセットへの適用は、上のQwen3-4Bの実験1回です。この実験では、比較した既存手法より平均が高くなっています。
知識を増やすと、推論の点数が下がることがある
平均点の上下とは別に、論文は分野ごとの効果も見ています。知識のデータを増やすと、難しく複雑なデータに対して点数が下がる場合がある、と示されています。知識を覚えさせる学習と、論理的に推論する学習が、同時に点数を下げることがある、という解釈です。文章の質と複雑さが低いデータでは、数学、コーディング、安全性のデータを増やすと点数が下がります。両方が中程度のデータでは、同じ分野を増やすと点数が上がる、とも書かれています。これは、Tulu 3の実験で推定した関係です。
別の業務データで同じ割合がよいかは、そのデータで改めて学習して確認します。パラメータ数が変わると、よい割合も変わることがあります。小規模モデルの結果は、大規模モデルで確認するための仮説です。
社内で混ぜる前に、能力とテストと規模を分ける
論文の割合は、社内データの仮説です。社内のIT運用支援に戻して、実験の前に決めることを分けます。目的が製品仕様の回答なら、マニュアルとFAQの割合を高くします。目的が障害原因の切り分けなら、障害記録、判断を誤った事例、条件が複数ある事例を候補にします。
最初に書くのは、どの能力を、どのテストで、向上したと判断するかです。データの件数は、その次に決めます。
向上させたい能力を、テストの条件として書く
「回答精度を上げる」とだけ書くと、どのデータを増やすかが決まりません。たとえば、次のように分けます。
| 能力 | データの候補 | テストで確認すること |
|---|---|---|
| 仕様の説明 | マニュアル、仕様書、FAQ | 現行版と一致するか |
| 原因の切り分け | 障害記録、切り分け手順 | 未知の症状で、確認手順を出せるか |
| 危険な操作を止める | 禁止操作、承認、失敗事例 | 本番の破壊的な操作を、そのまま提案しないか |
これは、データ設計の仮説です。どの割合がよいかは、学習と評価の結果で判断します。その前に、追加学習で解く問題かどうかも分けます。
最新の仕様や、毎週変わる手順は、ファインチューニングよりRAGの方が更新しやすいことがあります。RAGは、回答するときに必要な文書を検索して参照する方式です。追加学習が向くのは、回答の形式や、特定の判断の手順を変えたいときです。RAGや追加学習を使っても、参照するデータが古かったり、人が確認する手順が不十分だったりすると、誤った回答が出ます。この点は、「使うリスク」と「使わないリスク」のあいだ——金融庁AI指針から学ぶ、現場で効く7つのことで整理しています。データの割合を決めるのは、追加学習で解決すると決めたあとです。
学習に使った障害記録を、テストに使わない
既知の障害、未知の障害、安全性は、別のテスト問題にします。学習に使った記録と同じ記録で採点すると、記憶した事例を答えられたことを、能力が向上したと誤って判断します。
公開ベンチマークの点数と、業務での有用さが一致しないことは、「テストの点数」から「稼ぐ力」へ——AI知能指数 v4.0 がIT技術者に問いかけることで扱っています。社内の運用支援では、平均点に加えて次を確認します。原因が不明なとき、不明だと答えられるか。情報が足りないとき、追加の確認を依頼できるか。危険な操作を提案しないか。複数の対処について、リスクを比較できるか。根拠となる情報を示せるか。
過去の事例を多く学習すると、既知の質問の正答率は上がることがあります。未知の障害に対しても過去の事例のパターンで答え、誤っているのに確信度の高い回答が増えると、運用時の品質は下がります。FAQの誤答と、本番データの削除につながる誤った操作指示では、1件あたりの影響が違います。平均点と一緒に、影響の大きい失敗の件数を数えます。
平均点と、影響の大きい失敗では、上げたい点数が違います。
小規模モデルの結果は、大規模モデルで確認する
大規模モデルで数百回学習する前に、小規模モデルで割合の候補を絞り、成績のよい候補だけを大規模モデルで確認します。論文では、この順番で点数が改善した例が報告されています。
システムの性能改善でも、最初から本番環境を大きく変更しません。検証環境で変更の効果を確認し、効果があった変更だけを本番に適用します。
小規模モデルで点数が高い割合は、大規模モデルで確認する仮説です。モデルの能力が違うと、同じデータでも点数への影響は変わることがあります。平均が0.77上がっても、学習、推論、データ整備、評価、運用の費用が大きく増えるなら、その割合を採用しない判断も合理的です。比べるのは、モデルの平均点と、システム全体の費用です。
関連するデータは、1分野ずつでは判断できない
マニュアル、障害記録、システム構成の情報は、内容が関連しています。障害記録に、その障害が起きたときのシステム構成が書いていないと、原因を誤ることがあります。システム構成の情報に、確認した順番が書いていないと、判断の手順は分かりません。1つの能力を上げるには、その能力の記録と、その記録を理解するための関連データが両方必要になることがあります。
ある分野を増やした効果と、2つの分野を組み合わせた効果は別です。知識を増やしたときに推論の点数が下がった、という論文の結果も、各分野を単独で増やした場合と、同時に増やした場合を比べて、初めて組み合わせの効果と言えます。
次の実験は、割合だけが違う3通りで始める
CausalMixのプログラムを導入する前に、同じ考え方で小さい比較ができます。品質をそろえる条件、総件数、ベースモデル、学習のハイパーパラメータを固定し、割合だけを変えます。
| 構成 | マニュアル | 障害記録 | 判断・分析の事例 |
|---|---|---|---|
| A | 60% | 30% | 10% |
| B | 40% | 40% | 20% |
| C | 30% | 30% | 40% |
どの構成がよいかは、評価するまで分かりません。判断の事例を増やして未知の障害の点数が上がり、仕様の正答率が下がった場合は、業務でどちらを優先するかで決めます。未知の障害の切り分けが目的なら、仕様の正答率を何%まで下げてよいかを、実験の前に書いておきます。仕様の正確さが必須なら、正答率が下がった構成は採用しません。
割合の合計が100%かを、学習の前に確認します。次のコードは、モデルの学習をしません。割合の合計が1.0かどうかを確認します。
# Python 3.9 以上。外部ライブラリは不要。
# 学習は実行しない。割合の合計が 1.0 であることを確認する。
mixes = {
"A": {"manual": 0.60, "incident": 0.30, "judgment": 0.10},
"B": {"manual": 0.40, "incident": 0.40, "judgment": 0.20},
"C": {"manual": 0.30, "incident": 0.30, "judgment": 0.40},
}
for name, mix in mixes.items():
total = round(sum(mix.values()), 5)
if total != 1.0:
raise ValueError(f"{name} の合計は {total} です。1.0 にしてください。")
print(name, mix)
動く条件は、Python 3.9以上です。追加のライブラリは不要です。出力は、3つの構成名と割合です。合計が1.0でないと、エラーで停止します。
平均点が最も高い構成は、別のテスト問題でも、または同じ条件でもう一度学習しても、差があるかを確認してから採用します。テスト問題の偏りや、学習時の偶然で、1回だけ高くなることがあります。
学習を始める前に、ここまでの確認を4つ書きます。どの能力を向上させるか。その能力を、学習に使っていない問題でどう採点するか。変更するのは件数か、品質か、割合か。追加学習で解決する問題か、RAGや業務手順の見直しで解決する問題か。
目的が具体的なら、小規模モデルと、割合を限定したデータで十分な場合があります。必要な能力、そのためのデータ、評価方法、費用を並べ、次の1回の比較を決めます。企業のAI開発では、この確認を先に行い、そのあとで割合の自動的な最適化を検討します。
CausalMixは、データの質を表す指標と、分野の割合を分けて評価する研究上の手順です。社内で最初にやることは、上の3構成のうち2つを、ほかの条件を同じにして比べることです。
作成日: 2026-10-21