[ICLR 2020] Distance-Based Learning from Errors for Confidence Calibration

Paper url: https://arxiv.org/pdf/1912.01730.pdf

Author and affiliation

Background

오늘날 neural net은 예전보다 정확도는 많이 향상되었지만 calibration은 좋지 않은 편에 속한다. Calibration이란 모형의 출력값이 실제 confidence를 반영하는 것을 말하며 calibrated confidence라고도 한다. 예를 들어 COVID-19의 양성과 음성을 분류하는 task가 주어졌다고 가정해보자. 환자 A에 대한 모형의 출력이 0.8이 나왔을 때, 실제로도 80% 확률로 양성이라면 calibration이 잘 이루어졌다고 본다. 즉 모형의 출력값과(confidence) 실제 확률을 동일하게 만드는 것이 model calibration의 목적이다.

Calibration이 잘 이루어졌다는 것을 어떻게 입증할 수 있을까? 만약 모형의 출력값이 실제 confidence를 반영한다면 confidence와 accuracy가 일치해야한다. 모델이 0.8의 confidence로 예측한 sample들의 경우 0.8의 accuracy를 가진다면 confidence와 실제 확률은 동일하다고 볼 수 있다. 강아지와 고양이를 분류하는 학습된 모델이 있을 때, 모델의 confidence가 0.8인 sample들을 모아서 accuracy를 측정할 경우 0.8에 근사한 값을 가져아한다는 것이다.

그러나 앞서 말했듯 오늘날 neural net은 over confident한 문제를 갖고 있다. 아래 그림은 CNN의 초창기 모델인 LeNet-5와 그에 비해 많은 parameter를 갖고 있는 ResNet에 대한 confidence-accuracy chart이다. 도표의 해석은 LeNet-5의 경우 CIFAR-100 data set에 대해서 모델의 confidence가 0.4인 sample들을 모아 accuracy를 측정해보았더니 0.4~0.5 수준이라고 판단한다. ResNet의 경우 model capacity가 낮은 LeNet-5와 달리 대부분의 confidence가 1에 가깝께 쏠려있는 것을 확인할 수 있으며, confidence 별로 accuracy와의 gap 또한 큰 것을 볼 수 있는데 이러한 현상을 over confident라고 한다.

Model confidence가 실제 확률을 반영하는 것이 왜 중요한가? 이는 현업에서 neural net이 인간을 대체할 때 악영향을 끼칠 수 있기 때문이다. 가령 의료 업계에서 질병을 진단하는데 60% 확률과 90% 확률은 엄연히 다르나 over confident model을 바탕으로 처방을 내린다면 과한 진료를 진행하게 될 것이다. 따라서 model calibration 향상을 위한 노력은 다양하게 존재해 왔으며 대표적으로 label smoothing, mix up 등이 있다.

먼저 label smoothing이란 label을 0과 1로 두어서 학습하는 것이 아닌 smooth하게 부여하여 과도하게 학습하는 것을 막는 방법이다. 강아지와 고양이에 대한 label을 0과 1로 할당하는 것이 아닌 0.1, 0.9로 두어 학습하는 것이 그 예이다. 이는 모델의 예측값이 극단에 치닫지 않게 해주어 regularization에 도움을 주면서 model generalization과 calibration에 도움이 된다.

그러나 위 두가지 방법 모두 objective function이 confidence estimation을 목표로 삼고있지 않다. 다른말로 classification의 성능을 높이는 방법의 부가적인 산물이 calibration에 도움을 준 것이지 직접적으로 calibration을 target으로 삼고있지 않다는 것이다. 이러한 confidence scoring을 직접적으로 학습에 활용하는 방법으로는 temperature scaling이 존재하지만 해당 방법의 경우 classification과 calibration 두 가지 task로 데이터를 분할해야하기 때문에 data의 분배량에 따라 개별 task의 성능이 trade-off 성질을 띄게 되는 단점이 있다. 따라서 본 논문은 model calibration을 직접적으로 학습의 목표로 삼으며 앞서 말한 단점을 개선하는 것을 목표로 삼는다.

Proposed Approach

요약하면 support set으로 class의 중심점을 구하고, query sample이 중심점과의 distance를 줄여나가며 classification model은 최적의 mapping을 학습한다. 그 후 classification에서 오분류된 데이터를 이용하여 confidence model을 학습한다. Confidence model의 역할은 ground-truth가 없는 테스트 데이터에 대해서도 confidence를 추정할 수 있게 만드는 것이며 자세한 설명은 후술하겠다.

Episodic training

학습 단계를 먼저 살펴보면, 일반적인 neural net의 학습 방식인 batch 단위 학습과는 달리 매 update마다 K-shot, N-way sample을 사용하는 episodic training 방식을 따른다. Episodic training이란 매 episode마다 전체 class M에서 N개의 sampled class를 가져온 후(반드시 N=M일 필요는 없다), N개의 class들을 K개의 데이터를 지닌 support set과 query set으로 분리한다. 즉 episode 마다 query와 support set은 바뀌며 충분히 많은 episode가 진행되면 전체 data를 사용하여 학습할 수 있다. Support set과 query set의 notation은 다음과 같다.

Episodic training의 loss function은 아래와 같으며 자세한 사항은 아래에서 설명을 이어가겠다.

Prototypical loss

Softmax output을 개념적으로 바라보자. 만약 개와 고양이를 분류하는 문제라면 우리는 두 개의 element를 보유한 vector를 output으로 얻게될 것이다. 각각의 element는 class에 해당하는 확률로 표기가 되는데, 위 수식을 사용하면 해당 확률은 sample과 class 중심점과의 거리로써 측정이 되는 것이다.

반대로 class와의 중심점과 distance가 멀면 해당 class의 softmax output은 0에 가까운 값을 갖게 된다. 이를 통해 학습을 거듭하면서 embedding space 상에서 inter-class distance는 커지고 intra-class distance는 작아지게 된다. 따라서 위 loss를 사용하면 같은 class 안의 sample들은 비슷한 공간에 mapping 되며 다른 class의 sample들은 밀어내는 효과를 얻을 수 있다.

MNIST example

Support set, query set 및 prototypical loss의 역할에 대해서 MNIST 예제를 통해 제대로 이해해보자. 10개 class 각각에 대해서 1000개를 support set으로, 나머지 5000개를 query set으로 두었다고 가정하자. 이는 1000 shot, 10-way samples setting에 해당한다.

즉 위 prototypical loss를 사용하면 일반적인 분류기와 동일한 형태로 출력을 낼 수 있으면서 개별 query sample들을 class 중심점으로 모이게 하는 효과를 가져올 수 있다. 이러한 과정은 episode가 반복되면서 query set과 support set에 해당하는 sample들이 랜덤하게 섞이면서 모든 데이터를 활용한다.

Model inference

Calibrated confidence of DBLE

Confidence modeling by learning from errors

다만 위에서 제시한 방법의 가장 큰 문제점은 distance를 측정할 때 test sample에 대해서 ground-truth label이 필요하다는 것이다. 우리가 실제로 풀어야 하는 문제는 test sample의 label이 없는 경우다. 따라서 논문의 저자들은 classification을 학습할 때 confidence를 측정할 수 있는 모델을 동시에 학습하는 방법을 제안하며 이를 joint training으로 표현한다.

여기까지 읽었을 때 '도대체 이게 무슨 말이며 왜 이런 과정이 필요하지?' 라는 생각이 들 수 있는데, 후술할 내용들을 읽고나서 다시 돌아온다면 이해가 쉬울 것이다.

먼저 confidence를 추정하는 방법부터 살펴보자.

정리하면 confidence model은 오분류 된 sample에 대해서 sigma를 키움으로써 n번의 sampling 시 일관성을 유지하지 못하게 만들어 이를 평균 내었을 때 어느 class에도 속하지 못하도록 confidence를 낮추게 된다. 위 방법을 사용할 경우 test sample에 대한 label이 없더라도 confidence를 구할 수 있다.

Experiments

저자들은 distance-based learning from errors (DBLE)의 calibration 효과를 비교하기 위한 baseline으로 vanilla training, MC-Dropout, Temperature scaling, Mixup, Label smoothing, Trust Score를 사용하였다.

Datasets은 MNIST, CIFAR-10, CIFAR-100, Tiny-ImageNet을 사용하였으며 하기 표에 적인 -MLP, VGG11은 사용 모델을 뜻한다.

평가지표는 accuracy, expected calibration error (ECE), negative log likelihood (NLL)를 사용하였다. ECE와 NLL의 수식은 다음과 같다. ECE는 accuracy와 confidence간의 차이로 정의되며 본 포스팅의 서두에 다루었던 내용과 일맥상통한다.

Baseline과의 성능 비교표는 다음과 같다.

Confidence model을 학습할 때 오분류된 sample 만을 사용하는 것이 월등히 좋은 성능을 보인다는 것은 아래 표를 통해서 확인할 수 있다.

논문을 작성하는 사람의 입장으로 중요한 stance인 것 같다. 본인들이 제안한 방법이 좋은 결과로 이어지지 않을 때 포기하지 않고 끊임없이 탐색해야 얻을 수 있는 결과라는 생각이 들었다.

Last updated