10.6 損失関数とロバスト性 — AdaBoostの「美しさ」が抱えた弱点
指数損失が持つ脆弱性と、ロバストな学習のための損失関数の選び方
AdaBoostが使う「指数損失」は、理論上は最適です。しかし現実のノイズ混じりデータには脆い。 なぜでしょうか?損失関数の「形」を比較することで、その答えが見えてきます。 分類のための「指数損失・二項偏差・ヒンジ損失」、回帰のための「二乗誤差・絶対値・Huber損失」—— 機械学習における損失関数の地図を一緒に完成させましょう。
「マージン」という新しい物差し
損失関数を比較する前に、まず分類問題の「成績」を測る共通の物差しを用意しましょう。
クラスラベル $y \in \{-1, +1\}$ と予測スコア $f(x) \in \mathbb{R}$ があるとき、両者の積を考えます。
これがマージンです。 マージンが正なら正解、負なら不正解。これだけならただの「正しいか間違っているか」と同じに見えます。 でもマージンの絶対値には意味があります。

上の図では、数直線上の点の位置がマージンを表しています。
- m = +3(青・右端): 自信を持って正解
- m = +0.5(薄青): ぎりぎり正解
- m = -0.5(薄赤): ぎりぎり不正解
- m = -3(赤・左端): 大外れの不正解
マージンは「どれだけ余裕を持って正しい/間違っているか」を表す尺度です。 そして損失関数とは、このマージンに対してペナルティをどう与えるかという「方針」のことに他なりません。 同じデータでも、ペナルティの与え方を変えれば、最良のモデルは変わります。
5本のロス曲線が並ぶ風景
それでは、いくつかの損失関数を「マージン軸」の上に並べて比較してみましょう。
まず、最も素朴な 0-1誤分類損失:
これは「間違えていたら1点、合っていたら0点」というデジタルな評価です。 シンプルで分かりやすいのですが、これを直接最小化しようとすると最適化が極端に難しくなります。 マージンが少し変わってもペナルティが変わらないので、勾配的な情報が得られないのです。
そこで、0-1損失を「滑らかに近似」するのが、ほとんどの分類アルゴリズムです。 代表的な3つを並べてみます。
指数損失(AdaBoostの損失)
二項偏差(ロジスティック回帰の損失)
(係数の「2」は $y \in \{-1, +1\}$ 表現に揃えるための調整で、本質は通常のロジスティック損失と同じです。)
ヒンジ損失(SVMの損失)

ここで重要なのは、すべての関数がマージン $yf$ の関数になっていることです。 違うのは「マージンに対するペナルティの形」だけ。
3本の曲線を一枚の図に重ねて見ると、それぞれの「個性」が一目で見えてきます。 特に左側(マージンが負、つまり誤分類の領域)で、曲線の形が大きく違います。 この違いこそが、各アルゴリズムの「性格」を決めるのです。
指数損失の「過剰反応」を見抜く
Section 1で「マージンの絶対値は『自信』を表す」と言いました。 それは正常なデータでは正しい解釈です。 しかし現実のデータには、ラベル付けミスや測定エラーから生まれる「嘘の自信」を持つノイズ点が混じります。 本来は正解側にあるべきなのに、間違ったラベルが付いているせいで、 大きく負のマージンを持ってしまう点たち。 問題は、損失関数がこうしたノイズ点と本物の難しい点を区別できないことです。
指数損失の曲線をよく見てください。 マージンが大きく負になるほど、損失は指数関数的に増大します。
- マージンが $-1$ のときの損失は $e^{1} \approx 2.7$
- マージンが $-3$ になると $e^{3} \approx 20$
- マージンが $-5$ では $e^{5} \approx 148$
つまり、「大外れに間違えた点」一つが、「ふつうに正解した100点」と同じくらいの重みを持つことになるのです。

一方、二項逸脱度を見てください。 マージンが $-3$ でも損失は $\log(1+e^{6}) \approx 6.0$ 程度。 マージンが負の領域ではほぼ線形にしか増えません。
ここに、AdaBoostの「ノイズに弱い」性質の根があります。
実世界のデータには必ずノイズが混じります。たとえば、医療データのラベル付けミス、画像のラベル間違い、計測機器の異常値……。 こうしたノイズデータは、本来「無視すべき」点です。 しかし指数損失は、ノイズデータが大きく負のマージンを持つと、それを必死で正しく分類しようとして、そのノイズに振り回されたモデルを作ってしまいます。
これは、AdaBoostのブースティング過程を思い出すとよく分かります。 AdaBoostは各反復で誤分類点の重みを指数関数的に増やしていきます。 最初は気づかなかったノイズ点が、何回も誤分類されるうちにどんどん重みを増し、 ついには「ノイズ点を当てるためだけの弱学習器」が大量に追加されるようになる。 これが過学習の正体です。
指数損失は「全員、絶対に正解させる」という頑固な先生
二項偏差は「だいたい全員正解させて、難しい子は無理しない」という柔軟な先生
ノイズが混じる現実のデータでは、頑固さは仇となります。 だからこそ、ノイズの多いデータには二項偏差(≒ ロジスティック損失)を使うLogitBoostや勾配ブースティングが好まれるのです。
回帰でも同じ物語が起きている
ここまでは分類の話でしたが、回帰でもまったく同じ「ロバスト性 vs 計算効率」の対立が現れます。
回帰での代表的な損失関数は3つ。
二乗誤差損失
絶対値損失
Huber損失(妥協案)

二乗誤差の弱点は、分類における指数損失とまったく同じです。 誤差 $y - f$ の絶対値が大きくなると、損失は二次関数的に増加します。 誤差 $10$ の点は、誤差 $1$ の点の 100倍の重みを持つことになります。
データが完璧に正規分布していれば、これでも問題ありません。 実際、二乗誤差を最小化する解は条件付き平均 $E[Y|X]$ になり、統計的にも理にかなっています。
しかし、データに外れ値が一つでも混じったらどうなるでしょう? その外れ値は、他のすべての点を合わせたよりも大きな影響を、モデルに与えてしまうのです。
絶対値損失を使えばこの問題は解決します。 外れ値も「ふつうの点と同じくらいの線形ペナルティ」しか受けないので、モデルは外れ値に振り回されません。 絶対値損失を最小化すると、解は条件付き中央値 $\text{median}(Y|X)$ になります。 中央値が外れ値に強いのと同じ理屈です。
ただし、絶対値損失には欠点もあります。$y = f$ の点で微分できないので、最適化が少し面倒。 また、データが本当に正規分布しているときには、二乗誤差より統計的効率が落ちます。
そこで考えられた折衷案がHuber損失です。
- 誤差が小さいとき($|y - f| \leq \delta$)は 二乗誤差として振る舞う(効率性)
- 誤差が大きいとき($|y - f| > \delta$)は 線形にペナルティを与える(ロバスト性)
つまり、内側では二次関数、外側では線形関数。両方の良いところ取りなのです。
外れ値が一つあるだけで何が変わるか
理論より、具体例で確かめてみましょう。
10個のデータ点のうち9個はきれいに直線上にあり、1個だけが大きく外れているとします。 これに二乗誤差で直線を当てはめると、その1点の損失は他の9点の損失を合わせたより大きくなるので、 フィット直線が外れ値に引きずられて傾いてしまいます。

ところが絶対値損失で当てはめると、その外れ値は他の点と同じ重みしか持たないので、 直線は元の9点に沿った形を保ちます。
これが「ロバスト統計」の中心思想です。 データには必ず外れ値があるという前提に立ち、それでも壊れないモデルを作る。
ブースティングの文脈でも同じ思想が活き、 二乗誤差を使う L2 Boosting より、Huber損失や絶対値損失を使う Robust Boosting のほうが、 ノイズの多い現実データでは安定します。
「正しい損失関数」は存在しない
ここまで見てきた損失関数の比較から、一つの大切な教訓が浮かび上がります。
「正しい損失関数」というものは存在しない
正確に言えば、データの性質と、私たちが何を重視するかによって「適切な損失関数」が変わるのです。

| 損失関数 | 強み | 弱み | 適切な場面 |
|---|---|---|---|
| 指数損失 | 計算が美しい、AdaBoostの基礎 | ノイズに極端に弱い | ノイズの少ないクリーンな分類 |
| 二項偏差 | ノイズに比較的強い、確率解釈可能 | 計算がやや複雑 | ノイズのある実データ分類 |
| ヒンジ損失 | マージン最大化に直結 | 確率を出せない | SVMでの分類 |
| 二乗誤差 | 計算効率高い、正規分布で最適 | 外れ値に弱い | クリーンな回帰、計算重視 |
| 絶対値損失 | 外れ値に強い | 微分不可、効率落ちる | 外れ値の多い回帰 |
| Huber損失 | バランス型 | パラメータ δ の調整が必要 | 多くの実用回帰 |
機械学習の進歩は、ある意味で「より良い損失関数の発見」の歴史でもありました。AdaBoostから勾配ブースティング、 そしてXGBoost、LightGBMへと続く流れは、 損失関数の選択を「自由に変えられる」枠組みへの拡張の歴史です。
次のチャプターでは、損失関数を自由に変えられる 勾配ブースティング の枠組みを詳しく見ていきます。 指数損失から離れることで、私たちはどんな新しい武器を手にすることになるのか。 それを一緒に発見していきましょう。