[논문리뷰] 현대 딥러닝의 Calibration 에 대하여
현대 Neural network 의 calibration 에 관하여라는 논문을 리뷰하여 포스팅하겠습니다. 딥러닝의 성능 (performance) 이라 하면 일반적인 용어 '정확도' 를 뜻하는 경우가 많습니다. 그 정확도란 1) 예측 한 것중에 얼마나 맞았는가? 2) 데이터가 얼마나 잘 분류가 되었는가? 두 관점이 있으며, accuracy, precision (positive predictied value), recall (sensitivity), f1-score (precision 과 recall 의 조화평균) 등 대표적이고 많이 사용되는 measure 라고 할 수 있습니다. 하지만 calibration 도 정확도 못지 않게 중요한 성능이라고 할 수 있습니다. 본 논문에서는 '현대 뉴럴넷' 이 과거의 뉴럴넷보다 정확도는 향상되었지만, calibration 이 좋지 않다 (poorly calibrated) 라는 점을 문제로 삼으며, post-processing calibration method 인 temperature scaling 을 제시하고 있습니다.
Calibration 이란?
Calibration 이란 모형의 출력값이 실제 confidence (또는 이논문에서 calibrated confidence 로 표현) 를 반영하도록 만드는 것입니다. 예를 들어, X 의 Y1 에 대한 모형의 출력이 0.8이 나왔을 때, 80 % 확률로 Y1 일 것라는 의미를 갖도록 만드는 것입니다. 일반적으로 현대 딥러닝은 overconfident 합니다. 아래 그림은 1998 년 제시된 LeNet 과 2016년 제시된 ResNet (110 layer) 의 calibration 을 비교한 그림입니다. LeNet 의 경우 모형의 출력이 0~1 사이에 균일하게 분포되어있는 것을 볼 수 있지만, ResNet 의 경우 1 근처에 집중되어 있다는 것을 볼 수 있습니다. 그 결과로 아래 그림을 보면, ResNet 의 경우, confidence 와 accuracy가 많이 어긋난다는 것을 볼 수 있습니다. 모형의 출력이 실제 confidence 를 반영한다면 (calibrated confidence), confidence 와 accuracy 가 일치해야합니다.
왜 Calibration 이 중요한가?
모형의 예측값이, 실제 확률을 반영하는 것 (Calibration) 은 중요합니다. 딥러닝이 실제 세계에 응용될 때, 의사결정 프로세스의 하나의 구성요소가 되는 경우가 많습니다. 예를 들어, 의학적 진단 (computer-aided diagnosis)을 예로 들어보면, 딥러닝을 전적으로 신뢰해서 모든 판단을 딥러닝에 맡기는 식으로 의사결정이 이루어지는 경우는 적습니다. 딥러닝 모델의 confidence 가 낮은 경우에만 사람이 보는 방식으로 사람의 노동력을 줄이거나, false negative 가 치명적인 암 진단과 경우에는, cancer negative 로 예측한 것들 중, confidence 가 낮은 것만 사람이 재확인 하는 방식으로 하는 것도 가능합니다. 결국 이러한 의사 결정이 가능하기 위해서는 모형의 confidence 를 보는 것이 필요하고 이 confidence가 calibrated confidence 여야지 그 값에 신뢰성이 있다고 할 수 있습니다.
Calibration Measures
모형의 Calibration 이 잘되었는지를 어떻게 확인할 수 있을까요? 논문에 나와있는 3가지 measure 를 정리해보았습니다.
1) Reliability Diagram
Reliability diagram 은 expected accuracy 와 observed accuracy 를 각각 x, y 축으로 하여 그린 그래프를 말합니다. 이 때, expected accuracy (confidence) 를 기준으로 bin 을 쪼개서 (ex. decile) 각 bin 에서 observed accuracy 를 아래와 같이 구함으로써 그래프를 그릴 수 있습니다.
파이썬 코드로 Reliability diagram 그리는 법을 참고 바랍니다.
2) Expected Calibration Error (ECE)
ECE 는 confidence와 실제 accuracy 의 차이의 기댓값으로 연속형 변수에서 이를 실제로 구할 수 있는 방법은 없습니다. 따라서 "binning" 을 통해 위와 같이 approximation 됩니다. ECE는 M 개의 bin 에 대하여 각 bin 마다의 expected accuracy 와 confidence 의 차이를 가중 평균 (weighted mean) 한 것입니다. 이 때 가중치는 위 식에 나와있듯, bin 의 sample size / 전체 sample size 입니다.
3) Negative log likelihood
Negative log likelihood 는 통계 모형의 quality 를 평가하는데 표준적으로 많이 쓰이는 measure 입니다. 딥러닝/머신러닝 분야에서는 cross-entropy loss 라고도 불립니다 (분류 문제에 있어서). 이러한 log likelihood 와 cross-entropy 와의 관련성은 제 블로그 포스팅에서도 다룬적이 있으니 참고 바랍니다. Logistic regression 은 이 negative log likelihood 를 최소화 하는 계수를 찾게되며, 딥러닝도 cross-entropy 를 손실함으로 놓는다면, 마찬가지입니다. NLL 은 calibration 을 의미하는 measure 로 보기는 어려우나, calibration 도 어느정도 반영하고 있다고 볼 수 있습니다.
현대 딥러닝 기법과 Calibration 의 관계
본 논문에서는 Model capacity 와 Regularization 방법이 miscalibration 과 관계가 있다는 실험 결과를 제시하고 있습니다. 하지만 이 부분에 대해 인과성을 단정할 수는 없습니다.
1) Model capacity
최근 등장하는 딥러닝 모형들은 매우 많은 layer 를 갖고 있습니다. 적게는 수백개에서부터 수천개의 layer 가 있으며, layer 마다 수백개의 convolution filter 가 사용됩니다. 최근 연구에 따르면, 많은 layer 를 가질 수록 traninig set 의 특징을 더욱 잘 학습하고, generalization 도 더 좋다는 것을 보여주었습니다.
위 figure 에서 가장 왼쪽 그림은 ResNet 에 대하여 64개의 filter 로 고정 후, depth 를 올리면서 error와 ece를 관찰한 그림입니다. depth 가 증가할 수록 error 는 줄어들지만 ECE는 증가하는 것을 확인할 수 있습니다. 왼쪽에서 두 번째 그림은 depth 를 고정시킨 후, filter 의 수를 증가시키면서 error와 ece 를 관찰한 것인데, 마찬가지로 error는 줄어들지만 ece 는 증가합니다. 후반부에는 유지되지만 초반부에 매우 빠르게 ece 가 증가하는 것을 확인할 수 있습니다. 즉, model capacity 가 클 수록 ece는 증가합니다. 이 이유는 모델이 training set 에 대한 loss 를 최소화하는 방향으로 학습되기 때문입니다. 그렇기 때문에 training set 을 완벽하게 분류할 수 있기 되더라도 loss 를 줄이기 위하여 confidence 를 높여 1에 가까운 값을 예측하기 때문입니다. 따라서 test set 에 대해 예측할 때도 마찬가지의 현상을 보이게 됩니다.
2) Batch Normalization (BN)
Batch normalization 방법은 distribution shifts in activations 을 최소화해서 딥러닝의 optimization 및 regularization 을 향상시키는 방법입니다. batch normalization 의 도입은 매우 깊은 모델 (resnet, densenet 과 같은) 을 학습시킬 수 있는 한 가지 breakthrough 였습니다. 위 figure 의 3번째 그림을 보면 BN 이 calibration 에 미치는 영향을 볼 수 있습니다. 결론은 BN 의 도입은 calibration 을 낮추며, 원인은 알 수 없다는 것입니다.
3) Weight decay
BN 의 도입 이후 최근 weight decay 가 많이 쓰이지 않는 regularization 방법입니다. BN 논문에서 L2 regularization 를 쓰지 않는게 일반화에 도움이 된다는 내용이 보고되기도 했습니다. 따라서 최근에는 weight decay 를 과거와 비교하여 매우 작게 주는 것이 일반적입니다. 하지만 안타깝게도 이것은 calibration 에 좋지 않은 영향을 준다고 합니다. 위 figure의 가장 오른쪽 그림을 보면 weight decay 를 크게 줄 수록 오히려 ece 가 좋아지며, weight decay 가 적을 수록 ece 가 증가합니다. 직관적으로도, weight decay 가 적으면 training set 에 대해 loss 를 최소화 시키는 weight 가 얻어지는 것이기 때문에 test set 에 대해 overconfident 한 모델이 얻어질 것이라는 것을 짐작할 수 있습니다.
Calibration 방법
Post-processing calibration 은 모델의 예측 확률로부터 Calibrated probability 를 구하는 과정입니다. 이 방법은 validation set 이 필수적으로 필요합니다 (물론 이 validation set 은 training 할 때 쓰인 validation set 과 같은 set 이어야 합니다.).
Post-processing calibration의 목적은 모델의 예측값 p 로부터 calibrated probability q 를 구하는 것입니다. 간단하게 positive class, negative class 로 나뉘어진 binary prediction 을 예로 들어봅시다. 첫 번째로 소개할 방법은 Histogram binning 방법입니다.
1) Histogram Binning : Zadrozny 는 2001 년 ICML 에서 decision trees and naive bayesian classifier 의 예측값을 calibration 하는 방법을 제시했습니다. Histogram binning 은 매우 간단하고 직관적인 calibration 방법으로 non-parametric calibration 방법입니다. 절차는 아래와 같습니다.
1) 예측값을 M 개의 bin 으로 쪼갭니다. bin 을 쪼개는 방법은; 1. 같은 interval 로 쪼개기 2. sample 수로 쪼개기가 있습니다.
2) 이후에 Bin 마다 Score 를 구합니다.
3) Score 는 bin-wise squared loss 를 최소화하는 방법으로 선택됩니다.
* Bin-wise squared loss
여기서 1은 indicator function 입니다. 이를 최소화하는 theta1~theta_m 을 구해서 이를 bin 마다의 score로 쓰는 것입니다. 위 식을 최소화하면 결국 스코어는 해당 bin 에서의 positive-class 의 비율이 됩니다. 즉, histogram binning 방법은 예측값을 binning 한 후, 각 bin 에서의 positive-class 의 비율로 확률을 재할당하는 것으로 이해할 수 있습니다.
2) Platt scaling: Platt scaling 은 1999년 Platt 이 제시한 방법으로 SVM 의 출력을 '확률화' 하기 위한 방법으로 제시되었습니다. Platt scaling 은 histogram binning 과는 다르게 parametric 방법입니다. 최초로 제시된 이 방법에서는 모형의 출력을 logistic regression 의 input 으로 넣습니다. 뉴럴넷의 경우, 최종 모델의 출력값이 sigmoid 되기 전의 값 z 를 아래와 같이 변환합니다.
$$ q_i = \sigma(az_i + b) $$
이 때, a, b 는 validation set 에 대해서 NLL (=binary cross entropy) 을 최소화 시키는 방향으로 학습이 됩니다. 당연하지만 이 과정에서 학습된 뉴럴넷의 weight는 영향을 받지 않습니다.
3) Temperature scaling: Temperature scaling 은 Platt scaling 에 기초한 방법입니다. K 개의 label 이 있는 다중 분류 문제에서 Temperature scaling 방법에서는 단일 scalar parameter T 를 이용해 logit vector z 를 아래와 같이 변환합니다.
본 논문의 저자는 T 를 temperature 라고 부릅니다. T 는 soft max function 을 "soften" 시키는 일을 합니다. T 가 커질 수록 최종 calibrated probability q 는 1/K 로 수렴합니다 (이것은 uncertainty가 극대화 된다는 의미입니다). 식을 보면 T 가 1일 때가 원래 softmax를 이용하여 confidence 를 구하는 방법이라는 것을 알 수 있습니다. T는 validation set 에 대해 NLL 을 최소화 하는 식으로 optimization 하는 방법입니다. T 의 장점은 argmax 를 바꾸지는 않는다는 것입니다. 즉, T 는 모델의 정확도에는 영향을 주지 않고, Calibration 에만 영향을 줍니다.
참고
https://arxiv.org/pdf/1706.04599.pdf
https://machinelearningmastery.com/calibrated-classification-model-in-scikit-learn/