こんにちは!AnyTechの立浪と申します。この記事では、neural networkのcalibrationについての研究をご紹介したいと思います。地味なテーマですが注視すべき話題ですので、少しキャッチーなタイトルをつけさせて頂きました。
Calibrationとは?
Confidence calibration (以後calibration)とは、モデルが正しい確率を与える能力として定義されます。医用画像から癌かそうでないかを予測するようなアプリケーションを考えてみましょう。このケースにおいてcalibrationが完全であれば、モデルが99%の確信度で癌でないと予測すればこの予測は99%正しいのです。
Calibrationはアプリケーションによっては重要な概念となり得ます。上記の例でモデルのcalibrationが著しく欠如していたらどうでしょうか?モデルが99%の確信度で癌ではないと予測しているにも関わらず、実際は60%癌ではないということが起こり得ます。いいかえれば、モデルの結果では1%の癌の確率しかないにも関わらず、40%癌であるということ。このようなことがあれば、見過ごすわけにはいきません。このように、calibrationの悪さは人間の意思決定に対して悪影響を及ぼします。大きな間違いを起こさないようにするためにも、calibrationは重要な、そして実務者が知っておくべき概念と言えます。
この記事では、neural networkのcalibrationの実態をご紹介します。まず、calibrationの計測方法についての定義し、その上で主に画像分類モデルが対象とする、neural networkのcalibrationについての研究を紹介します。最後に、CVPR2023に採択されたセマンティックセグメンテーションのcalibrationの研究についてもご紹介したいと思います。
Calibrationの定義
Calibrationを定義していきましょう。
Perfect calibrationとは、具体的には「モデルが99%の確信度で癌でないと予測すればこの予測は99%正しい」ということです。これを一般的に定義すると以下の式で定義されます。
この式は、モデルが癌ではないと99%の確信度で予測するデータを十分に集めてくれば、そのうちの99%のデータが癌ではないということを意味します。2クラス分類のときはこれで問題ありませんが、3クラス分類のときは、モデルが予測する最大の確信度のクラスのみに注目します(ただし、状況によっては考え方は正しくないと思いますので、慎重に扱いましょう)。
モデルのcalibrationの定義するためには、完璧からどのくらい離れているがわからなければなりません。そのためにいくつかの概念を導入します。
Perfect calibrationの左辺を正確に計算することができません。理想的には、モデルが癌ではないと99%の確信度で予測するデータは十分にあってほしいのです。しかしながら、実際にはデータセットは有限のサイズであり、モデルが癌ではないと99%の確信度で予測するデータを都合よく集めることは難しいのです。
正確に計算することは難しくても、どうすれば近似計算できるでしょうか?この問題99%の確信度付近の予測となるように定義すれば、近似できますね。例えば、99.14%、98.65%などのように、幅を広げれば条件に沿うようなデータを集めやすいでしょう。
この考え方を具体的に定義します。まず、予測値を個の等間隔な区間ビンにわけます。区間ビン の中の平均正解率を、予測確率の平均値をで定義しましょう。perfect calibrationであれば、となるはずで、とがcalibrationを定義するに当たり、重要な値であることがわかります。
を使って、次のようなダイアグラムを書くことができます。この分野では、このダイアグラムは信頼性ダイアグラムと呼ばれています。信頼性ダイアグラムを使うと、どのくらいモデルがperfect calibrationに近いのかが視覚的にわかりますね!
Expected Calibration Error (ECE)
信頼性ダイアグラムは視覚的にはわかりやすいですが、その一方で、calibrationを測るための統計量も必要ですよね。その一つに、Expected Calibration Error (ECE)があります。
これは、区間ビンの中の正解数と予測確率の和にどのくらい差があるのかについて、サンプル数で平均を取って定義したものです。大変素直な定義ですね。
Maximum Calibration Error (MCE)
ECEに対して、平均ではなく最大値で定義するMaximum Calibration Error (MCE)もあります。
この統計量は、最も悪いところだけ見ていることになりますね。MCEは人命に関わるような、厳しくすべきアプリケーションにはECEよりも向いているかも知れません。
初期のニューラルネットワークのCalibration
ResNetのcalibrationは悪い
初期の研究であるGuo et al. (2017)では、LeNetと比較して、ResNetのcalibrationが悪いということが発見されました。以下のヒストグラムと信頼性ダイアグラムは、CIFAR-100での比較です。
このヒストグラムから、ResNetが自信過剰であることがわかりますし、信頼性ダイアグラムからはLeNetと比較してcalibrationが悪さが目立ちます。
この結果から、ResNetは使えないという思考に陥ってしまうかもしれません。しかしながら、neural networkに対してはpost-hoc calibrationと呼ばれる後処理を行うことで、calibrationを改善できます。
温度スケーリングによるpost-hoc calibration
post-hoc calibrationの手法は複数ありますが、Guo et al. (2017)で最も効果があった手法の一つに温度スケーリングがあります。モデルの最後に適用するsoftmax関数を温度付きsoftmax関数に置き換えて、温度を調整する方法です。ResNetにおけるCIFAR-100の例では、温度スケーリングの有無でこれだけの差があります。
温度の調整だけで済みますので、十分な検証用のデータがあればやらない手はないですね。
近年のニューラルネットワークのCalibration
Guo et al. (2017)では、ResNetのような当時の最先端のニューラルネットワークに関する不確実性の問題点を指摘し、その改善方法として、温度スケーリングが有効であることまで示されていました。そして、結果を丁寧に分析して、「モデル容量の増加やBatch Normalization がモデルのcalibrationを悪化させるのではないか?」と仮説まで立てられていました。しかしながら、近年の研究を見る限りでは、単純なモデル容量の増加だけでcalibrationが悪化するとも限らないようです。
Vision Transformer & MLP-Mixer
Minderer et al. (2021)では、ImageNetに対して、Vision TransformerやMLP-Mixerのような最近のモデルで調査しています。以下は、ImageNetのvalidation setの80%を使って計測したとのことです(20%は温度スケーリングのチューニング用)
このスケーリング前の結果から、Vision TransformerやMLP-MixerはBiTやResNeXt WSLのような畳み込みベースのneural networkと比較して、well-caliblatedであることがわかります。
Minderer et al. (2021)では、温度スケーリングを行ったものとの比較もされています。ECEは減るものの、元々の配置は大きく変わらないことがわかります。つまり、温度スケーリング後もVision Transformer & MLP-Mixerは依然としてwell-caliblatedです。
ドメインシフト
実用的な現場では、分布がシフトしたデータに対しても、well-caliblatedなモデルであることが期待されることは言うまでもないでしょう。Minderer et al. (2021)では、そういった検証もしており、大変参考になります。例えば、ImageNet-Cを使った検証です。ImageNet-Cは、ImageNetのvalidation setに破損(ぼかし、ノイズなど)を適用させて作成したデータセットです。画像の破損度合いによって、corruption severityと呼ばれる数値(0~5までで、5が最も破損している)が割り当てられています。
この数値ごとに、ECEを計測した結果が以下です(図中の●の大きさはモデルサイズを表しています)。
この結果は、MLP-MixerやViTの大規模なモデルが、ImageNet-Cの下でもwell-caliblatedであることを示しています。
Minderer et al. (2021)では、上記以外にも、精度がよくcalibrationが悪いモデルと精度が悪くcalibrationが良いモデルのどちらを使うべきかについても議論されています。論文中の結論では「精度がよくcalibrationが悪いモデル」でした。ただ、この問題はアプリケーション先のコストをどのように定義するかに深く関わるので、鵜呑みにするのではなく、実務レベルで深く検討する余地があると考えています。
最近の研究では、よりスケールしたVision Transformerで、ECEと精度のトレードオフが改善した報告もあるようです(Dehghani et al. (2023))。これは、同じVision Transformerのファミリーにおいて、モデル容量を大きくしてもcalibrationが改善するという意味で、これまでの定説を裏切るものですね。
その他
今回はpost-hoc calibrationの方法としてシンプルな温度スケーリングのみ紹介しましたが、最近でもMa and Blaschko (2021)のような新たな手法が開発されているようです。実務で色々試したい方は、他の手法も探してみると良いかも知れません。
セマンティックセグメンテーションにおけるCalibration
これまで、calibrationの研究は画像分類を対象とするものが多かったのですが、CVPR2023に採択されたWang et al. (2022)は、セマンティックセグメンテーションにおけるcalibrationを包括的に研究しています。セマンティックセグメンテーションのcalibrationについて興味深い考察をしています。また、選択的スケーリングという大変シンプルな方法を導入しています。
なお、セマンティックセグメンテーションにおけるpost-hoc calibrationの手法は、ドメインに依らない研究としては、例えば、Ding et al. (2020)がありました。この研究では、局所温度スケーリングという方法を提案しています。CNNで局所温度を推定し、その温度を使って温度スケーリングを行うことをしています。
Wang et al. (2022)で提案された選択的スケーリングは、局所温度スケーリングと比較しても、あるいは汎用的なpost-hoc calibrationの手法と比較しても、圧倒的に優れています。現段階では敵なしといった感じです。
ここでは、Wang et al. (2022)の結果についてご紹介したいと思います。
セグメンテーションモデルの不確実性についての考察
この研究では、モデルはSegFormerに固定して、異なる容量のモデルを用意し、mIoUとECEを計測する試みが行われています。結果は以下の図の通りで、モデル容量が増えるとmIoUが増える、しかしECEも増えるという結果が出ています。これはモデル容量の増加によって精度は上がるが、calibrationが悪くなってしまうというGuo et al. (2017)の結果に近いです。
次にクロップサイズとcalibrationの関係も考察されております。こちらは、5つのモデルで、クロップサイズが大きいほど、mIoUが増えてECEが減るという結果を得ています。このことから、クロップサイズの増やすことで、予測精度もcalibrationも良くなるウハウハ状態だということが言えますね。
続いて、マルチスケールテストも試みられています。マルチスケールテストとは、複数のスケールの画像でセグメンテーションの予測マップを作り、それらを統合してよりよい予測を得る方法です。精度に有効であることは知られていました。マルチスケールテストを行うことでECEも下がることが、5つのモデルでの実験で示されています。
最後に、予測の正解・不正解が、ECEに関係するのか分析をしています。以下の結果から、予測の不正解のときに、ECEが高く、正解のときにECEが低いことがわかります。これは、今回分析しているSegFormerやSegmentatorのようなモデルが自信過剰であることを示しております。
選択的スケーリング
まず、予測が正解・不正解を当てるバイナリ分類器を用意します。その上で、その分類によって別の温度を定義するだけです。
予測が不正解のときに自信過剰なので、となるようにを定義し、としましょう。このように、極めてシンプルなpost-hoc calibarationが効果を発揮します。
また、ドメイン内でのcalibaration評価のみならず、ドメインシフトした場合のcalibarationの評価にも絶大な効果を発揮してくれます。
最後に
今回は、neural networkのcalibrationの研究についてご紹介しました。calibrationの定義から、最近の画像分類・セグメンテーションモデルのcalibrationの研究や、post-hoc calibrationの手法について触れました。
アプリケーションによっては、calibrationに注意を払う必要があることは、お分かり頂けたかと思います。また、たとえ人命に関わらないようなアプリケーションであっても、ユーザさんは無意識にcalibrationがよいモデルを仮定していることも気をつけなければなりません。calibrationには限界があることをユーザさんに説明しつつ、必要ならばpost-hoc calibrationの手法なども試し、真摯にユーザさんの課題に向き合う必要がありますね。