Hello Computer Vision

Label smoothing 효과 공부해보기 본문

Self,Semi-supervised learning

Label smoothing 효과 공부해보기

지웅쓰 2024. 3. 4. 19:23

Label smoothing은 구글에서 낸 Classification model인 Inception model에서 먼저 제안되었다.

https://arxiv.org/pdf/1512.00567.pdf

그리고 Label smoothing이 왜 좋고, 어떤 점이 좋은지에 대한 논문은 

https://arxiv.org/pdf/1906.02629.pdf

 

그래서 기존 논문에서는 main contribution은 아니지만 regularization 방식으로 소개되는데 이 논문에서 소개된 내용만큼과 효과에 대하여 간단하게 적어보려고 한다.

 

K개의 class 가 있다고 하면은 model이 계산한 각각의 class 에 대한 probability는

$$ p(k | x) = \frac{exp(z_{k})}{\sum^{K}_{k=1} exp(z_{i})} $$ 위와 같이 정의될 수 있다.

 

그리고 q(k|x)에 대해서 추가적으로 나오는데, 이는 model이 예측한 값이 아니라 데이터 자체의 라벨 값이라고 볼 수 있다. 즉  $$ \sum_{k} q(k|x)  = 1$$ 위와 같이 볼 수 있다. 결과적으로 줄여야 할 loss는

$$ loss = - \sum^{K}_{k=1} \log (p(k))q(k) $$

라고 할 수 있다. 해당 loss에 대해 최적화 한다는 것은 label값에 대한 likelihood 를 최대화 한다고 볼 수 있고 cross entropy에 대한 gradient는

$$ \frac{\partial loss}{\partial z_{k}} = p(k) - q(k) $$ 라고 할 수 있다.

(q(k) 라고 써서 조금 헷갈릴 수 있는데 보통 원핫 인코딩으로 target 값을 주다보니 qk 에 대한 값은 보통 1이다)

 

따라서 원핫 인코딩을 사용하는 경우 correct label에 대해서만 likelihood 를 최대화 한다고 볼 수 있다. 이럴 경우 q(k) 는 dirac delta함수라고 말을 하는데 얕은 지식으로 설명해보면 아마 해당되는 y값에만 1이기 때문에 이렇게 표현하지 않았나 싶다. 따라서 class에 해당하는 logit값은 다른 값들보다 월등히 높게 되는데 이는 2가지 문제를 유발한다고 한다. 첫번째로는 over fitting이고, 두번째로는 이는 예측값에 대하여 too confident하는 결과값을 가져온다고 한다. 

 

따라서 저자는 model로 하여금 덜 confidence를 가지도록  설계하고 싶었다 말하는데 이유는 model은 training label 에 MLE를 하는 것이 아니라 adaptable하는 것이라고 말한다. 그래서 ground truth label y에 대해서 약간의 변동을 주는데, 

위 식과 같이 준다. 여기서 delta 함수는 ground truth label을 말하는 거 같고, epilon 값을 주어 약간 낮추고, 다른 label값에는 추가적으로 label값을 나누어 주는 것이다. 결국 이를 고려한 loss function은 다음과 같다.

여기서 두번째 term은 uniform 분포와 모델이 예측한 분포와의 kl divergence라고 볼 수 있는데 첫번째 term을 최적화 시키면서 두번째 term은 regularize역할을 한다고 볼 수 있다.

 

위에서는 Label smoothing이 무엇인지 알아봤다면 이제는 label smoothing의 효과를 한번 적어보려고 한다.

우선 결과를 비교해보자면, label smoothing을 한 것이 더 clustering을 촘촘하게 한 것을 확인할 수 있다(그러나 accuracy는 차이가 없다고 한다). 이것에 대해서는 다음과 같이 설명하는데,

'Label smoothing encourages the activations of the penultimate layer to be close to the template of the correct class and equally distant to the templates of the incorrect classes'

우선 penultimate는 마지막에서 두번째 layer를 말하고 template은 final layer에서의 가중치 값들을 말한다. 따라서 template은 각각의 class마다 존재하는데 여기서 penultimate layer에서 나온 값은 정답인 class를 가깝게 하는 동시에 각 class의 template에는 같은 거리로 떨어뜨린다는 것이다. 근데 위에서도 말했다시피 accuracy에서의 큰 장점을 가지고 있지는 않다.

 

두번째는 calibration이다. calibration이란 모델이 생성한 confidence값과 실제 accuracy간의 차이를 말한다. 즉 100개의 이미지에 대해 모든 이미지에 대한 argmax값들이 0.8만큼의 softmax 값을 얻었다면 실제로 정답률은 80%가 되어야하지만 정답률이 더 낮은 경우가 많다고 한다. 이러한 경향을 over-confidence 를 가지고 있다고 하는데 최신 모델들이 over-fitting 하는 만큼 이러한 경향이 크다고 한다(정확도는 더 높지만 calibration값은 낮다). 기존 방법들에서는 logit값들에 대해 temperature scaling을 해서 이것을 줄이지만 label smoothing도 같은 효과를 갖는다고 주장하며 비교는 다음과 같다.

 여기서 정확도만 높으면 되지 calibration은 왜 중요한지 궁금할 수 있는데 만약 우리가 일상에서 해야하는 모든 task를 기계가 한다면 이는 상관없을 수도 있다. 그러나 현재 ai는 우리에게 decision making을 위한 하나의 도구로 많이 사용되는데 확률 값이 낮은 것에 대해서만 사람이 개입해 결정을 도와줄 수 있다. 따라서 모델이 높은 확률을 가지면 사람이 개입하지 않을 것이고 이러한 over-confidence를 가지는 것이 실제에서는 치명적일 수 있다.

 

다음은 Knowledge distilation이다. label smoothing에 대한 이점은 아니고 해당 분야에서 사용하면 좋지 않다고 말한다. KD 는 일반적으로 큰 teacher network 에 대해 label값을 주어 훈련시키고 teacher network가 내뱉는 값을 작은 student network가 학습하는 것이라고 볼 수 있다. 이러한 방법에서 label smoothing을 적용한다는 것은 teacher network에 주어지는 target 값이 smoothing된다고 볼 수 있다. 이렇게 훈련하는 것이 teacher network에서의 정확성은 높아지지만 우리가 정작 사용하는 student network에서의 정확도는 떨어진다고 한다.

 왼쪽 아래 figure 에서 보라색 점선이 label smoothing을 받은 student network인데, 성능이 base보다 약간 떨어지는 것을 확인할 수 있다. 이에 대한 이유로는 정보를 erase 한다고 하는데 Mutual information방법을 사용해 오른쪽 figure값을 그려서 설명한다. 보라색 선은 hard target값과 teach network의 logit값 사이에 상호정보량을 나타내고 아래 주황색 선은 soft target과 teacher network의 logit값 사이에 상호 정보량을 나타내는데 더 낮음을 볼 수 있는데 이는 정확히 이해를 하지 못했고 그런갑다 하고 넘어가려고 한다.