0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データを増やしても性能が上がらない——CausalMixが分ける、データの品質と混ぜ方

0
Posted at

マニュアルを増やしても、障害の原因分析はあまり良くならない

たとえば、社内の技術文書でファインチューニングしたあとです。製品仕様の質問には、前より正確に答えます。障害の原因を聞くと、あまり改善しません。

最初に確認する原因は、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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?