🎡

Label Distribution Learning

Tags
Model Training
Survey
Created
2021/01/31 08:49
Publication
Rate
3
Source
Summary
(상세 페이지 참고)

Reference

나이 혹은 자세, 얼굴 표정과 같이 ground truth label을 찍기도 애매한 문제를 딥러닝으로 풀고자 할 때 많은 애매함이 발생한다. 조금만 상상해봐도 이미지를 보고 사람의 표정이 정확히 어떠한지, 나이는 정확히 몇인지, 어떠한 자세를 하고 있는지 맞추어내기란 쉽지 않은 일이다. 이렇게 부정확한 레이블을 가지고 하는 supervised learning이 당연히 잘 될 리가 없다.
이러한 상황에 적용해볼 수 있는 방법이 바로 label distribution learning이다. LDL이 무엇인가 하면, 바로 나이, 표정, 자세 등의 label 그 자체를 학습하기보다는, label의 확률적 분포(distribution)를 학습함으로써 label에 내재하는 ambiguity를 학습 시에 고려하고자 하는 방법론이다.

Label Distribution Learning

기존의 SLL(Single Label Learning)이나 MLL(Multi Label Learning)은 어떠한 instance는 오직 하나의 ground truth(혹은 ground truth set)를 가진다고 상정한다. 예컨대 어떤 사람의 나이는 정확히 36이거나 35이고, 또 어떤 얼굴의 표정은 정확히 슬픔이거나 그렇지 않고, 또 정확히 행복이거나 그렇지 않은 것이다. 하지만 LDL에서는 모든 possible label들이 각각 어느 정도 그 instance를 설명할 수 있다고 본다. 예컨대 어떤 사람의 나이가 35세 즈음이라면, 35, 34, 36 등의 나이는 그 사람(instance)의 나이를 꽤 잘 설명할 수 있는 한편 12, 82 등의 나이는 그 사람의 나이를 그다지 높지 않은 정도로 설명할 수 있는 것이다. 이렇게 각각의 label이 instance를 설명할 수 있는 정도를 분포로 나타낸 것이 label distribution이며, 이러한 label distribution을 학습하는 알고리즘이 LDL이다.
이렇게 label distribution을 학습함으로써 얻을 수 있는 이점은 크게 두 가지라고 볼 수 있겠는데, 바로 1) label ambiguity가 존재하는 경우 이러한 ambiguity를 고려함으로써 보다 강건한 모델을 학습할 수 있다는 것이고, 또 2) 단 하나의 label이 아니라 모든 가능한 label이 해당 instance를 설명하는 정도를 학습하기 때문에 label간 correlation이 있는 경우 이를 고려할 수 있다는 것이다. 예컨대 age estimation 문제를 classification 문제로 풀고자 한다면, 34세를 나타내는 label은 35세의 instance에게 아무런 영향도 주지 못한다. 하지만 LDL에서는 34세를 나타내는 label이 35세의 instance를 꽤 잘 설명한다고 할 수 있고, 이에 따라 그 주변(혹은 correlation이 있는) label이 학습에 영향을 줄 수 있게 되는 것이다. (하지만 regression의 경우라면 어떠한가? 또 그 영향력이라는 것은 정확히 어떤 것인가? 명확하지 않다.)
한편 label distribution은 확률을 나타내지는 않는다. 즉 p(y=35x)=0.4p(y = 35 | x) = 0.4라고 해서 그 사람이 35세일 확률이 0.4임을 뜻하는 것이 아니다. 간단히 말하자면, 각각의 label이 해당 instance를 설명할 수 있는 상대적 강도라고 볼 수 있겠다. 하지만 distribution의 특성상 kp(ykx)=1,p(ykx)0\sum_k{p(y_k | x)} = 1, p(y_k | x) \geq 0임을 상정하는 것은 자연스럽고, 따라서 확률과 관련된 연산을 가하는 것 역시 자연스럽게 받아들일 수 있다고 가정한다.
이제 kp(ykx)=1\sum_k{p(y_k | x)} = 1이라는 제한조건을 지키기 위해 softmax를 사용하여 distribution을 추론하고, 학습을 위해 추론된 distribution과 원래 distribution의 KL divergence를 loss로 삼으면 되겠다. 페이퍼에서는 1) SLL 혹은 MLL 문제를 변형하여 LDL 문제로 풀어내는 방법, 2) 알고리즘을 변형하여 LDL 문제로 풀어내는 법, 3) KL divergence를 직접적으로 최적화하는 specialized 알고리즘 세 가지를 제안한다. 하지만 딥러닝의 시대이니 딥러닝을 쓰지 않을 이유가 무엇이 있겠는가?

Deep Label Distribution Learning for Apparent Age Estimation

ChaLearn Age Estimation competition을 위한 모델이다. 그렇다보니 각각 독립적으로 학습시킨 총 4개의 모델을 앙상블한 모델과 총 6개의 모델을 앙상블한 모델을 앙상블하여 최종적인 추론 결과를 도출해낸다. 실무에서는 리소스의 제한으로 인해 도저히 이렇게까지는 못하겠지만, 이 페이퍼에서( 주장하기로)는 최초로 딥러닝을 통해 label이 아닌 label distribution을 target으로 학습을 시도한다는 데 의의가 있다. 모델은 크게 두 개의 stream으로 나눌 수 있다.

Stream 1

Stream 1에서는 backbone network로 VGG-16을 사용한다. 이러한 VGG-16 모델을 MORPH 데이터셋에 파인튜닝한 후 각각 1) KL divergence loss와 Softmax loss, 2) 서로 다른 두 개의 데이터셋에 대해 학습시켜 각각 4개의 모델을 얻어낸다. 이 때 age label distribution은 competition에서 제공한 mean과 variance를 이용해 Gaussian 분포로 생성한다.
각각의 모델에서는 85개의 feature vector를 뱉어내고, 4개의 모델이 있기 때문에 이를 concatenate하면 총 크기 340의 feature vector를 얻어낼 수 있다. 이를 distance-based voting ensemble method를 통해 앙상블한다고 한다. 즉 training set의 $n$번째 데이터를 (xn,tn)(x_n, t_n)과 같이 나타낸다면, 새로운 데이터 xx^*를 다음과 같이 추정할 수 있다.
t=n=1tnK(x,xn),where K(x,xn)=exp(αxxn22)t^* = \sum_{n = 1}{ t_n K(x^*, x_n) }, \\ \text{where } K(x^*, x_n) = exp( -\alpha{|| x^* - x_n ||^2_2} )

Stream 2

Stream 2에서는 페이퍼에서 제안한 CNN에 대해 서로 다른 방식으로 전처리를 가한 이미지를 통해 학습시켜 서로 다른 6개의 모델을 형성하고, 여기에 다시 이미지별로 각각 50개의 augmentation을 형성하여 (이미지별) 총 300개의 추론 결과를 도출한다. 이 추론 결과들의 평균을 stream 2의 최종 추론 결과로 삼는다.
마지막으로 두 stream의 차이가 11년 이하라면 두 stream을 평균하고, 그렇지 않다면 stream 1을 택함으로써 최종 추론 결과를 도출한다. 결과적으로 competition에서 4위를 차지했다고 한다.

Deep Label Distribution Learning with Label Ambiguity

이 페이퍼에서는 딥러닝을 통한 LDL을 보다 체계적으로 풀어낸다. 하지만 역시 크게 다를 것은 없는데, Gaussian distribution을 상정하여 데이터로부터 label distribution을 형성하고, CNN head의 softmax layer를 통해 label distribution을 추론하며, 추론된 분포를 가지고 KL divergence loss를 계산하여 label distribution을 학습한다. 페이퍼에서 제안하는 label distribution learning의 이점은 다음과 같다.
Label ambiguity를 활용하여 학습하는 end-to-end model이다.
Classification이나 regression과는 달리 그 주변 label로부터의 학습이 가능하기 때문에, 보다 robust한 성능을 내며 적은 데이터로 효율적인 학습이 가능하다.
(이 당시에) SOTA를 갱신하였다.
좀 더 풀어서 설명해보자. 마지막 FC layer의 output zz에 대해, y^=softmax(z)\hat{y} = softmax(z)와 같이 label distribution을 추론한다. 그러면 KL divergence는 다음과 같이 계산된다.
KL(y,y^)=ylnyy^=ylnyylny^KL(y, \hat{y}) = y \ln{\frac{y}{\hat{y}}} = y \ln{y} - y \ln{\hat{y}}
이 때 yy 자체는 parameter에 의해 영향을 받지 않으므로 생략하고 다음과 같이 loss function을 설정할 수 있겠다.
L=kyklnyk^L = -\sum_k{ y_k \ln{\hat{y_k}} }

Mean-Variance Loss for Deep Age Estimation from a Face

여전히 학습 시에 label distribution을 고려함으로써 label ambiguity 문제를 다루지만, 이 페이퍼에서는 1) 분포의 평균과 분산을 함께 고려한다는 것과 2) 평균과 분산을 포함한 데이터셋이 없어도 된다는 점에서 차별적이다. 즉 직접적으로 label distribution을 학습하지는 않는다. 이 페이퍼의 핵심은 두 가지 loss인 mean loss와 variance loss이다.
먼저 last FC layer의 output을 zz라 하였을 때, softmax(z)softmax(z)로써 label distribution을 추론할 수 있다. 그리고 이렇게 추론된 distribution을 통해, 정의에 의해 자연스럽게 mean mm과 variance vv를 구할 수 있다. 다름이 아니라 mean loss는 이러한 distribution mean과 ground truth와의 Euclidean Loss이며, variance loss는 계산된 variance 그 자체이다. 즉 mean loss는 distribution mean가 최대한 GT에 가까워지도록 유도하며, variance loss는 그러한 distribution mean의 confidence가 최대한 강해지도록 유도한다.
최종적인 loss는 softmax loss인 LsL_s를 포함하여 L=Ls+αLm+βLvL = L_s + \alpha L_m + \beta L_v와 같이 구한다. Softmax loss와 mean loss를 함께 사용하는 이유는 페이퍼에서 언급된 바에 따르면 "mean loss와 variance loss만을 사용할 경우 학습이 굉장히 불안정할 수 있기 때문에, 최대한 빠른 수렴을 위해서"이다.
역시나 (이 당시에) SOTA를 갱신하였다고 한다. 하지만 benchmark dataset도 조금씩 다르고 비교한 모델도 조금씩 다르기 때문에 정확히 어떤 label distribution method가 더 나은지 페이퍼만 보고 비교하기가 어렵다.
E.O.D.