【論文紹介】Improving model calibration with accuracy versus uncertainty ~

7 min読了の目安(約6300字IDEAアイデア記事

こんにちは、竹輪内からしです。
NeurIPS2020にuncertainty calibrationの論文が発表されていました。
様々な手法と組み合わせられそうだったので、紹介します。

論文の情報

  • タイトル:Improving model calibration with accuracy versus uncertainty optimization
  • 著者:
    • Ranganath Krishnan(Intel Labs)
    • Omesh Tickoo(Intel Labs)
  • 公開日: Mon, 14 Dec 2020 20:19:21 UTC (NeurIPS2020)
  • リンク:

論文の概要

  • uncertaintyの正解値なしで、予測が正しいとは限らないデータのuncertaintyを高く、予測が正しそうなデータのuncertaintyを低くするuncertainty calibrationという問題に取り組んだ。
  • 微分可能なaccuracy vs uncertainty calibrationを提案した。
  • distribution shiftのある画像分類問題において、他のuncertainty calibration手法よりもよいcalibrationができることを示した。

uncetaintyとは

Uncertaintyとは「予測結果が正しいとは限らない度合い」のことです。
ここでは、分類器を例に挙げて説明していきます。

分類器の多くは「どの程度予測が正しそうか」を評価します。例えば、以下の図のように、「各クラスである確率がどの程度か」を評価します。
an example of classification
分類器の出力例

上の図の場合は、"1"クラスの確率が99%なので、"1"クラスを予測結果として出力されます。
このときの99%という確率をconfidenceと呼びます。
これは、予測結果が正しそうな度合いと見なすことができます。

逆に、uncertaintyは予測結果が正しいとは限らない度合いです。
Uncertaintyの評価方法は様々ありますが、
例えば、どれだけ複数のクラス間で確率がばらつくか(下の図参照)や、
example of uncertainty1
確率が1クラスのみで高いときには予測が正しそうですが、
複数のクラス間で確率が同様の場合は予測が正しいとは限らなそうです

複数の分類器で予測した場合にどれだけ予測結果がばらつくか(下の図参照)などがあります。
example o uncertainty2
複数の異なる分類器で同じ予測をすれば予測は正しそうですが、
複数の分類器で予測がばらばらであれば予測が正しいとは限らなそうです

Uncertaintyを正しく評価できれば、正しい予測をするときには機械を使って、予測が正しくないかもしれないときには人間が判断をする、といった分担ができるかもしれません。
そのため、AIの安全性(AI Safety)の分野で注目されています。

ここで、様々なタスクを高精度に解ける深層学習分類器では予測が誤るにも関わらず、confidenceが高くなる(uncertaintyが低くなる)場合があることが報告されています[1]

手法

本論文では、2種類のキャリブレーション方法が提案されています。

  1. 学習にキャリブレーションするad-hocな方法
  2. 学習にキャリブレーションするpost-hocな方法

どちらの方法も以下の表を使ってキャリブレーションしていきます。

certain uncertain
正解 AC AU
不正解 IC IU

推論した全てのデータがACかIUに属すれば、よいuncertaintyを評価できたといえます。
そのため、ACとIUを増やし、AUとICを減らすことを目指します。

ad-hocな手法

ad-hocな方法ではロスを工夫して、学習時にキャリブレーションします。
ACとIUを増やし、AUとICを減らす項をロスに付け足すことでキャリブレーションを行います。
では、この項はどのように実現できるでしょうか?

AUに属するデータの個数nAUn_{AU}とICに属するデータの個数nICn_{IC}が多くなるほどロスが大きくなり、
ACに属するデータの個数nACn_{AC}とIUに属するデータの個数nIUn_{IU}が多くなるほどロスが小さくなる項を設計します。
nAUn_{AU}nICn_{IC}nACn_{AC}nIUn_{IU}はそれぞれ以下のように取得できます。

nAU:=iI(y^i=yiui>uTh)(1)n_{AU}:= \sum_i \mathbb{I}(\hat{y}_i = y_i \land u_i > u_{Th}) \tag{1}
nIC:=iI(y^iyiuiuTh)(2)n_{IC}:= \sum_i \mathbb{I}(\hat{y}_i \neq y_i \land u_i \leq u_{Th}) \tag{2}
nAC:=iI(y^i=yiuiuTh)(3)n_{AC}:= \sum_i \mathbb{I}(\hat{y}_i = y_i \land u_i \leq u_{Th}) \tag{3}
nIU:=iI(y^iyiui>uTh)(4)n_{IU}:= \sum_i \mathbb{I}(\hat{y}_i \neq y_i \land u_i > u_{Th}) \tag{4}

ここで、hatyihat{y}_iは予測結果、yiy_iは正解、uiu_iは推定したuncertainty、uThu_{Th}はuncertaintyの閾値です。ここで、uncertaintyは予測ベクトルのエントロピー(各クラスの確率がどれだけばらつくか)を考えています。また、I()\mathbb{I}(\bullet)は指示関数で、後ろの条件(\bullet)を満たす場合は1、満たさない場合は0を出力します。\landは「かつ」を表します。

これらnAUn_{AU}nICn_{IC}nACn_{AC}nIUn_{IU}を用いて、以下のような項を最小化すれば、目的である「ACとIUを増やし、AUとICを減らす」を達成できます。

lognAU+nICnAU+nIC+nAC+nIU=log(1+nAU+nICnAC+nIU)(5)- \log{\frac{n_{AU}+n_{IC}}{n_{AU}+n_{IC}+n_{AC}+n_{IU}}} = \log{(1+\frac{n_{AU}+n_{IC}}{n_{AC}+n_{IU}})} \tag{5}

しかし、ここで問題があります。
(1)(1)(4)(4)で計算したnAUn_{AU}nICn_{IC}nACn_{AC}nIUn_{IU}を用いると微分ができません。
つまり、勾配法による最適化ができず、学習できません。
そこで、以下のように微分可能な式で(1)(1)(4)(4)を近似します。

nAU=y^i=yiui>uThpi(1tanh(ui))(6)n_{AU} = \sum_{\hat{y}_i = y_i \land u_i > u_{Th}} p_i \cdot (1 - \tanh(u_i)) \tag{6}

nIC=y^iyiuiuTh(1pi)tanh(ui)(7)n_{IC} = \sum_{\hat{y}_i \neq y_i \land u_i \leq u_{Th}} (1 - p_i) \cdot \tanh(u_i) \tag{7}

nAC=y^i=yiuiuThpitanh(ui)(8)n_{AC} = \sum_{\hat{y}_i = y_i \land u_i \leq u_{Th}} p_i \cdot \tanh(u_i) \tag{8}

nIU=y^iyiui>uTh(1pi)(1tanh(ui))(9)n_{IU} = \sum_{\hat{y}_i \neq y_i \land u_i > u_{Th}} (1 - p_i) \cdot (1 - \tanh(u_i)) \tag{9}

ここで、pip_iはconfidenceを表します。

(6)(6)(9)(9)で計算したnAUn_{AU}nICn_{IC}nACn_{AC}nIUn_{IU}を式(5)(5)に代入することで、微分可能な損失項を実現します。

この項はELBO(変分下限)を最大化する学習や、cross entropyを最小化する学習など、様々なロスに足すことで、組み合わせることができます。
組み合わせたロスで学習することで、学習時にuncertaintyをキャリブレーションします。

post-hocな手法

post-hocな方法ではTemperature scaling[2]という方法に基づいて、学習後にキャリブレーションします。

Temperature scalingはuncertaintyのキャリブレーション方法の1種です。
Temperature scalingはsoftmax前の出力を温度パラメータT(>0)T(>0)でスケーリングする方法です。

まずはsoftmaxについて説明します。
深層学習分類器などでは、最終出力でそのクラスが正解である確率を推定しています。
確率を出力にするためには、各クラスに関する値が0以上となり、全クラスでの総和が1になるように調整する必要があります。
このために使うのが次式で表されるsoftmax関数です。

Softmax(zi)=expzii=1KexpziSoftmax(z_i)= \frac {\exp{z_i}}{\sum_{i=1}^K{\exp{z_i}}}

ここで、KKはクラス数、ziz_iはクラスiiに関する中間出力です。

このSoftmax関数は下図のように最終出力の直前に用います。

logits_and_softmax
softmax関数と最終出力

Temperament scalingではこのsoftmax前の出力z\bm{z}を温度パラメータT(>0)T(>0)を用いて次式のようにスケーリングします。

q=Softmax(z/T) \bm{q} = Softmax ( \bm{z} / T )

ここで、Softmax()Softmax(\bullet)はSoftmax関数です。

このTemperature scalingで大切なのは適切にTTを選ぶことです。
本論文では、このTTを交差検証法を用いて最適化します。

論文にはあまり詳しく書いていないため、憶測になってしまいますが、
(1)(1)(4)(4)のuncertaintyuiu_iにスケーリング後のsoftmaxのエントロピーを使うのだと思われます。
このときに、式(5)(5)が最も小さくなるTTを選ぶのだと思われます。
(1)(1)(4)(4)を求める際のuncertaintyの閾値uThu_{Th}は予測が正しいデータのuncertaintyの平均と予測が誤っているデータのuncertaintyの平均の中点を用います。

uTh=y^=yuiNy^=y+y^yuiNy^y2u_{Th} = \frac{\frac{\sum_{\hat{y}=y}{u_i}}{N_{\hat{y}=y}}+\frac{\sum_{\hat{y} \neq y}{u_i}}{N_{\hat{y} \neq y}}}{2}

実験と結果

uncertaintyが適切にキャリブレーションされているかどうかを以下の指標を用いて評価します。

  • Expected calibration error(ECE)[3]
  • Expected uncertaity classification error[4]

これらはいずれも低いほど高性能を表す指標です。

提案手法はSVI-AvUC(ad-hocな手法)、SVI-AvUTS(post-hocな手法)です。

result_on_CIFAR10
CIFAR-10での結果

提案手法は比較的適切にキャリブレーションされていることがわかります。

また、カテゴリは同じでも異なるデータセットのデータを検出する分布シフト検知(distribution shift detection)、カテゴリが異なるデータセットのデータを検出する分布外検知(out-of-distribution(OOD) detection)の結果も見てみましょう。

other result
分布シフト検知・分布外検知の結果

提案手法が比較手法の中では一番良い性能を達成していることがわかります。

脚注
  1. Learning Confidence for Out-of-Distribution Detection in Neural Networks ↩︎

  2. On Calibration of Modern Neural Networks ↩︎

  3. Obtaining Well Calibrated Probabilities Using Bayesian Binning ↩︎

  4. Well-calibrated Model Uncertainty with Temperature Scaling for Dropout Variational Inference ↩︎