コンテンツにスキップ

機械学習の課題・検証・性能指標

キーワード:過剰適合・過少適合、汎化誤差、訓練誤差、バイアス、バリアンス、正則化、次元の呪い、訓練・検証・テストデータ、ホールドアウト法、k-分割交差検証、正解率、適合率、再現率、F値、ROC曲線、AUC、IoU、mAP、micro/macro平均、RMSE/MSE、MAE、混同行列、パープレキシティ

要点

  • 目標は訓練データではなく未知のデータに強いこと(汎化誤差を小さくすること)。モデルが複雑すぎると過剰適合、単純すぎると過少適合になる。
  • 汎化性能は訓練に使っていないデータで測る。訓練・検証・テストに分け、ハイパーパラメータの選択は検証(または交差検証)で、最終評価はテストで1回だけ行う。
  • 指標はタスクと目的で選ぶ。分類は混同行列から作る。クラス不均衡では正解率が当てにならず、適合率・再現率・PR 曲線を見る。

過剰適合と汎化

  • 訓練誤差:訓練データでの誤差。汎化誤差:未知のデータ(真の分布)での誤差の期待値。実際にはテストデータでの誤差で見積もる。
過少適合(underfitting) 過剰適合(overfitting)
状態 モデルが単純すぎて、訓練データも説明できない 訓練データのノイズまで覚え、未知のデータに弱い
誤差 訓練誤差・汎化誤差ともに大きい 訓練誤差は小さいが汎化誤差が大きい
対策 モデルを複雑にする、特徴を増やす、正則化を弱める データを増やす、モデルを単純にする、正則化、早期終了、ドロップアウト、データ拡張、アンサンブル

動かしてみる

  • 次数 \(M\) を 0 から増やすと、訓練誤差(実線)は下がり続けますが、検証誤差(破線)は途中から上がります(U 字)。\(M=9\) ではパラメータ数が訓練データ数(10 個)と同じなので、全点を通ります(訓練誤差がほぼ 0)。
  • 次数を 9 にしたまま \(\log_{10}\lambda\)(L2 正則化)を \(-3\) 付近まで上げると、曲線が暴れなくなり、検証誤差が下がります。正則化は複雑さを制限します。
  • 検証誤差は、ノイズの分散 \(\sigma^2\)(約 0.06)より小さくなりません。

バイアスとバリアンス

真の関数 \(f\) にノイズ \(\varepsilon\)(平均 0、分散 \(\sigma^2\))が乗った \(y=f(\mathbf{x})+\varepsilon\) を、別々の訓練データで学習したモデル \(\hat{f}\) で予測するとき、二乗誤差の期待値は次のように分解できる。

\[ \mathbb{E}\bigl[(y-\hat{f}(\mathbf{x}))^2\bigr]=\underbrace{\bigl(\mathbb{E}[\hat{f}]-f\bigr)^2}_{\text{バイアス}^2}+\underbrace{\mathbb{E}\bigl[(\hat{f}-\mathbb{E}[\hat{f}])^2\bigr]}_{\text{バリアンス}}+\underbrace{\sigma^2}_{\text{ノイズ(削減不能)}} \]
  • バイアス:モデルの予測の平均が真の関数からずれる大きさ(モデルの表現力不足。過少適合の原因)。
  • バリアンス:訓練データが変わると予測がどれだけ揺れるか(モデルが複雑でデータに敏感。過剰適合の原因)。
  • 複雑なモデルほどバイアスは小さく、バリアンスは大きい。トレードオフの最適点が汎化誤差の最小になる。正則化は、バイアスを少し増やす代わりにバリアンスを大きく減らす。

次元の呪い

特徴の次元 \(D\) が増えると、データが空間に対してまばらになり、学習が難しくなる。

  • 各軸を 10 分割して空間を覆うだけでも \(10^D\) 個の領域が要る。必要なデータ数が次元とともに指数的に増える。
  • 立方体 \([-1,1]^D\) に内接する単位球の体積比は、\(D=2\) で \(\pi/4\approx0.79\)、\(D=10\) で約 \(0.0025\)。体積は角に集中し、球(近傍)の中にはほとんどデータが入らない。
  • 次元が高いと、点どうしの距離がほぼ等しくなる(距離の集中)。距離に基づく手法(k-NN、クラスタリング)が機能しにくくなる。
  • 対策:特徴選択、次元圧縮、正則化、データの追加。

検証集合

データ 役割 使う場面
訓練データ パラメータ(重みなど)を学習する 学習
検証データ ハイパーパラメータ・モデル・早期終了の時期を選ぶ 開発中、何度も使う
テストデータ 最終的な汎化性能を見積もる 最後に1回だけ
  • テストデータで調整すると、テストに過剰適合して性能を楽観的に見積もる(データ漏洩)。標準化の平均・分散など前処理の統計量も、訓練データだけから求めて他へ適用する。
  • ホールドアウト法:データを訓練と検証(またはテスト)に1回だけ分ける。簡単で速いが、分け方に結果が左右され、データが少ないと不安定。
  • k-分割交差検証:データを \(k\) 個に分け、\(k-1\) 個で学習して残り 1 個で検証、を検証側を替えながら \(k\) 回行い、その平均を性能とする。全データを検証に使えて安定するが、学習を \(k\) 回行うので \(k\) 倍の計算量がかかる(\(k=5\) や \(10\) が一般的)。
回 分割1 分割2 分割3 分割4 分割5
1 検証 訓練 訓練 訓練 訓練
2 訓練 検証 訓練 訓練 訓練
3 訓練 訓練 検証 訓練 訓練
4 訓練 訓練 訓練 検証 訓練
5 訓練 訓練 訓練 訓練 検証
  • 層化 k 分割:各分割でクラスの比率を保つ(不均衡データで必須)。
  • LOOCV(1つ抜き交差検証):\(k=N\)。データが極めて少ないときに使うが、\(N\) 回の学習が必要。
  • 時系列分割:未来のデータで過去を予測しないよう、検証データは訓練データより後の時点にする(シャッフルしない)。同じ人物など関連するデータは同じ分割に入れる(グループ分割)。
  • 交差検証は、テストデータとは別に使う。ハイパーパラメータ探索と汎化性能の見積もりを同時に交差検証でやりたいときは入れ子(ネスト)交差検証。

回帰の指標

\(N\) 個のデータの正解 \(y_i\)、予測 \(\hat{y}_i\)。

\[ \begin{aligned} &\mathrm{MAE}=\frac1N\sum_{i=1}^{N}|y_i-\hat{y}_i|,\qquad \mathrm{MSE}=\frac1N\sum_{i=1}^{N}(y_i-\hat{y}_i)^2,\qquad \mathrm{RMSE}=\sqrt{\mathrm{MSE}} \\[3mm] &R^2=1-\frac{\sum_i(y_i-\hat{y}_i)^2}{\sum_i(y_i-\bar{y})^2} \end{aligned} \]
指標 特徴
MAE 絶対誤差の平均。外れ値に頑健
MSE 二乗誤差の平均。大きな誤差を強調する(外れ値に敏感)
RMSE MSE の平方根。元のデータと同じ単位で解釈できる
\(R^2\)(決定係数) 平均で予測する場合に対する改善の割合。1 が完全、0 は平均予測と同等、負もありうる
Huber 損失 小さい誤差は二乗、大きい誤差は線形。外れ値に頑健で、全域で微分可能
Smooth L1 Huber 損失の \(\delta=1\) 版。物体検出(Faster R-CNN など)の座標回帰で使う
\[ \mathrm{Huber}_\delta(x)=\begin{cases}\dfrac12x^2 & (|x|<\delta)\\[2mm] \delta\Bigl(|x|-\dfrac12\delta\Bigr) & (|x|\ge\delta)\end{cases}\qquad \mathrm{SmoothL1}(x)=\begin{cases}\dfrac12x^2 & (|x|<1)\\[2mm] |x|-\dfrac12 & (|x|\ge1)\end{cases} \]
  • Huber 損失は \(|x|=\delta\) で値(\(\frac12\delta^2\))も傾き(\(\delta\))も連続に接続する。\(\delta=1\) では Smooth L1 に一致する。
  • 損失関数の観点では、MSE は正規分布のノイズ、MAE はラプラス分布のノイズを仮定した最尤推定にあたる。

分類の指標

混同行列

2クラス分類(正例=ポジティブ P、負例=ネガティブ N)の結果を、実際と予測の組で数える。

予測 P 予測 N
実際 P TP(真陽性) FN(偽陰性・見逃し)
実際 N FP(偽陽性・誤検知) TN(真陰性)

(行を予測、列を実際にする流儀もある。値を読む前に向きを確かめる。)迷惑メール判定なら、TP は迷惑メールを迷惑と判定、FP は普通のメールを迷惑と誤判定、FN は迷惑メールの見逃し。

\[ \begin{aligned} &\text{正解率(Accuracy)} && \frac{TP+TN}{TP+TN+FP+FN} \\[2mm] &\text{適合率(Precision)} && \frac{TP}{TP+FP}\qquad\text{(陽性と予測したうち、本当に陽性の割合)} \\[2mm] &\text{再現率(Recall, TPR)} && \frac{TP}{TP+FN}\qquad\text{(実際の陽性のうち、見つけられた割合)} \\[2mm] &\text{偽陽性率(FPR)} && \frac{FP}{FP+TN}\qquad\text{(実際の陰性のうち、誤って陽性と予測した割合)} \\[2mm] &F_1 && \frac{2PR}{P+R}=\frac{2TP}{2TP+FP+FN}\qquad\text{(}P\text{:適合率、}R\text{:再現率の調和平均)} \\[2mm] &F_\beta && \frac{(1+\beta^2)PR}{\beta^2P+R}\qquad\text{(}\beta>1\text{ で再現率を重視)} \end{aligned} \]
  • 特異度 \(=TN/(FP+TN)=1-\mathrm{FPR}\)。再現率は感度とも呼ぶ。
  • 適合率と再現率はトレードオフ:しきい値を下げると陽性と予測する数が増え、再現率は上がり適合率は下がりやすい。
  • 不均衡データ:陽性が 1% なら、すべて陰性と答えるだけで正解率 99%。このときは適合率・再現率・F 値を見る。F 値は平均に調和平均を使うので、片方が低いと低くなる。
  • 目的で使い分ける:見逃しが致命的(病気の検出)なら再現率、誤検知が困る(スパム判定で重要メールを消す)なら適合率。

ROC 曲線・AUC・PR 曲線

分類器のスコア(確率)に対し、しきい値 \(t\) 以上を陽性と判定する。\(t\) を動かして指標の変化を描く。

  • ROC 曲線:横軸 FPR、縦軸 TPR。左上に近いほどよい。ランダムな分類器は対角線。
  • AUC:ROC 曲線の下の面積。ランダムに選んだ陽性が陰性よりも高いスコアをもらう確率に等しい(1 が完全、0.5 がランダム)。しきい値に依存せず、クラスの比率が変わっても ROC 曲線は変わらない。
  • PR 曲線:横軸 再現率、縦軸 適合率。陽性が少ない不均衡データ・異常検知では、ROC が楽観的に見えるので PR 曲線のほうが向く。

動かしてみる

  • しきい値 \(t\) を上げると、動作点が ROC 曲線の左下へ動きます(陽性と判定される数が減り、FPR も TPR も下がる)。適合率は上がり、再現率は下がります。
  • \(d'\) を大きくすると2つの分布が離れ、ROC 曲線が左上に張り出して AUC が 1 に近づきます。0 にすると対角線(AUC 0.5)です。
  • 陽性の割合 \(\pi\) を 0.05 に下げても ROC 曲線も AUC も変わりませんが、同じ \(t\) での適合率は大きく下がります(陰性が多いので誤検知の数が目立つ)。

【例】7件のメールのスコア順位(陽性 3 件・陰性 4 件)。スコアの高い順に、そこまでを陽性と判定したときの指標:

順位 実際(1=迷惑) FPR TPR(再現率) 適合率
1 1 0 1/3 1
2 0 1/4 1/3 1/2
3 1 1/4 2/3 2/3
4 1 1/4 1 3/4
5 0 2/4 1 3/5
6 0 3/4 1 3/6
7 0 1 1 3/7
  • AUC は(陽性, 陰性)の全 12 組のうち、陽性のスコアが陰性より高い組の割合:陽性 3 件が上回る陰性の数は 4, 3, 3 で、\(10/12=5/6\approx0.83\)。ROC 曲線の下の面積に一致する。

多クラス分類の平均

クラスごとに指標を計算して平均する。

  • マクロ平均:クラスごとの指標を単純平均。クラスの大きさに関係なく同じ重み。少数クラスの性能も反映される。
  • ミクロ平均:全クラスの TP・FP・FN を合計してから指標を計算。大きいクラスに引っ張られる。1つのラベルを選ぶ多クラス分類では、ミクロ平均の適合率・再現率・F 値はすべて正解率と一致する。
  • 重み付き平均:クラスの件数で重みを付けたマクロ平均。

物体検出・セグメンテーションの指標

領域 \(S_{\mathrm{true}}\)(正解)と \(S_{\mathrm{pred}}\)(予測)の重なりを測る。

\[ \begin{aligned} &\text{Jaccard 係数(IoU)} && \frac{|S_{\mathrm{true}}\cap S_{\mathrm{pred}}|}{|S_{\mathrm{true}}\cup S_{\mathrm{pred}}|}=\frac{TP}{TP+FP+FN} \\[3mm] &\text{Dice 係数} && \frac{2|S_{\mathrm{true}}\cap S_{\mathrm{pred}}|}{|S_{\mathrm{true}}|+|S_{\mathrm{pred}}|}=\frac{2TP}{2TP+FP+FN}\quad(=F_1) \\[3mm] &\text{Simpson 係数} && \frac{|S_{\mathrm{true}}\cap S_{\mathrm{pred}}|}{\min\bigl(|S_{\mathrm{true}}|,\ |S_{\mathrm{pred}}|\bigr)} \end{aligned} \]
  • IoU:物体検出の基本の指標。通常 \(\mathrm{IoU}\ge0.5\) なら検出成功(TP)とする。Dice は医用画像のセグメンテーションでよく使われ、IoU が \(J\) のとき Dice \(=2J/(1+J)\)。Simpson 係数は一方が他方に完全に含まれると 1。
  • 検出の TP/FP/FN:予測を信頼度の高い順に見て、IoU が基準以上で、まだ他の予測と対応づいていない正解がある予測を TP とする。対応する正解がない予測が FP、どの予測とも対応しなかった正解が FN。陰性(背景)は無数にあるので TN は定義しない。
  • AP(Average Precision):PR 曲線の下の面積。mAP は全クラスの AP の平均。
\[ \mathrm{AP}=\int_0^1 p(r)\,dr,\qquad p(r)=\max_{r'\ge r}p(r')\ \text{(補間した適合率)} \]

【例】10 件の検出(正解物体は 5 個)。 信頼度の高い順に並べ、そこまでの再現率・適合率を求める。

順位 信頼度(%) 正解か 再現率 適合率
1 96 ○ 1/5 1/1
2 92 ○ 2/5 2/2
3 89 × 2/5 2/3
4 88 × 2/5 2/4
5 84 × 2/5 2/5
6 83 ○ 3/5 3/6
7 80 ○ 4/5 4/7
8 78 × 4/5 4/8
9 74 × 4/5 4/9
10 72 ○ 5/5 5/10
  • 11 点補間 AP:再現率 \(r=0,0.1,\dots,1.0\) の 11 点で、\(r\) 以上の再現率での適合率の最大値を取って平均する。\(r\le0.4\) では 1.0(5 点)、\(0.5\le r\le0.8\) では \(4/7\approx0.571\)(4 点)、\(r=0.9,1.0\) では 0.5(2 点)。
\[ \mathrm{AP}=\frac1{11}\bigl(1.0\times5+0.571\times4+0.5\times2\bigr)=\frac{8.284}{11}\approx0.753 \]
  • 3クラスの AP が \(0.753,\ 0.990,\ 0.683\) なら \(\mathrm{mAP}=(0.753+0.990+0.683)/3\approx0.809\)。
  • 現在の主流は、PASCAL VOC の全点補間(曲線の厳密な面積)や、COCO の IoU しきい値を 0.50〜0.95(0.05 刻み)で変えた AP の平均(mAP@[.5:.95])。

生成・類似度の指標

指標 内容
コサイン類似度 ベクトルの大きさでなく向きの近さ。\(-1\)〜\(1\)
パープレキシティ 言語モデルが各単語をどれだけ「驚かず」予測できるか。小さいほどよい
BLEU 生成文が参照文の n-gram をどれだけ含むか(適合率)。機械翻訳の評価
\[ \begin{aligned} &\cos(\mathbf{x},\mathbf{y})=\frac{\mathbf{x}\cdot\mathbf{y}}{\|\mathbf{x}\|\,\|\mathbf{y}\|},\qquad \text{コサイン距離}=1-\cos(\mathbf{x},\mathbf{y}) \\[3mm] &\mathrm{Perplexity}=\exp\!\Bigl(-\frac1N\sum_{n=1}^{N}\log p_{\mathrm{model}}(y_n\mid y_{<n})\Bigr) \\[3mm] &\mathrm{BLEU}=\mathrm{BP}\cdot\Bigl(\prod_{n=1}^{N}p_n\Bigr)^{1/N},\qquad \mathrm{BP}=\begin{cases}1 & (c>r)\\ \exp\bigl(1-r/c\bigr) & (c\le r)\end{cases} \end{aligned} \]
  • パープレキシティは交差エントロピー(自然対数)の指数。「各時点で平均して何択から選んでいるか」に相当し、\(V\) 個の語を一様に予測するモデルでは \(V\)(検算:\(\exp(-\log\frac1V)=V\))。
  • BLEU:\(p_n\) は n-gram 精度(生成文の n-gram のうち参照文にも現れる割合、\(N\) は通常 4)、\(c\) は生成文の長さ、\(r\) は参照文の長さ。短い文は精度が高くなりやすいので、短すぎる生成に罰則(BP)をかける。右の項は 1〜\(N\)-gram 精度の幾何平均。
  • 生成画像の質は FID(本物と生成の特徴量分布の距離。\(\|\boldsymbol\mu_r-\boldsymbol\mu_g\|^2+\operatorname{tr}(\boldsymbol\Sigma_r+\boldsymbol\Sigma_g-2(\boldsymbol\Sigma_r\boldsymbol\Sigma_g)^{1/2})\))などで測る。要約の評価には、再現率ベースの ROUGE がある。

試験の着眼点

  • 過剰適合は「訓練誤差が小さく汎化誤差が大きい」。対策は正則化・データの追加・早期終了・ドロップアウトなど。誤差はバイアス\(^2\)+バリアンス+ノイズ。
  • テストデータは最後に1回。ハイパーパラメータの選択は検証データ(または交差検証)で行う。k-分割交差検証は学習を \(k\) 回行い、検証誤差を平均する。
  • 適合率 \(=TP/(TP+FP)\)、再現率 \(=TP/(TP+FN)\)、\(F_1=2TP/(2TP+FP+FN)\)。不均衡データで正解率を信用しない。
  • ROC は(FPR, TPR)、PR は(再現率, 適合率)。AUC は「陽性が陰性より高いスコアになる確率」。不均衡では PR 曲線。
  • マクロ平均はクラス間の単純平均、ミクロ平均は TP/FP/FN を合計してから計算。
  • IoU \(=TP/(TP+FP+FN)\)、Dice \(=2TP/(2TP+FP+FN)\)。AP は PR 曲線の面積、mAP はクラス平均。
  • RMSE は元の単位、MAE は外れ値に頑健、Huber 損失は小さい誤差に二乗・大きい誤差に線形。パープレキシティは小さいほどよい。BLEU には短さの罰則 BP がある。

参考