안녕하세요, 박천성 연구원입니다. 이번 포스트에서는 간단한 아이디어로 큰 성능 향상을 도출했으며 실제로 다양하게 적용해 볼 수 있는 논문을 소개해보고자 합니다. “Label Refinery: Improving ImageNet Classification through Label Progression, Bagherinezhad et al” 입니다.

먼저 이 논문의 main contribution을 말씀드리고 싶습니다.

  1. 정말 단순한 아이디어인데, 성능향상이 크고 활용도가 매우 넓습니다. 비단 classification 뿐만 아니라, segmentation 등에도 적용해 볼 수 있고(잘 될지는 아직 모르지만), 단순히 성능향상을 위함이 아니라 uncertainty prediction이 가능한 모델을 만들 수도 있을 것 같습니다.
  2. 실험적 측면 : 이 논문에서 제시한 방법에 대해 다양한 모델, 다양한 loss, 다양한 방법을 적용해 각각의 성능향상의 정도를 전부 보여주었고, 자세하게 기술해놓았습니다. 실험에 정말 많은 시간을 쏟은 것 같습니다.

 

Intro

스크린샷 2018-06-21 오후 5.13.24
그림(1) cat or ball?

 

그림(1)의 (a)는 cat일까요? 아니면 ball일까요? 대부분의 사람들은 cat이라고 대답할 것 입니다. 물론 label도 cat이라고 되어있겠죠. 하지만 cat이라고해서, ball이 없지는 않습니다. 더욱이 평소 model을 트레이닝할때는 그림(1)의 (b)처럼 crop되어 model에 넣어질 수 있기 때문에 문제가 될 수 있습니다. 이런 문제를 보다 나은 방법으로 해결하기 위해 이 논문이 나왔습니다.

  1. Incompleteness : A natural image of a particular category will contain other object categories as well.
  2. Taxonomy Dependency : Categories that are far from each other in the taxonomy structure can be very similar visually.
  3. Inconsistency : To prevent overfitting, various loss functions and regularization techniques have been introduced into the training process. (ex. random crop)

논문에서는 위 세가지를 지적하고 있습니다. 첫번째로, 자연의 이미지에는 그림(1)과 같이 여러가지 class가 동시에 등장할 수 있다는 것입니다. 가장 중요한 지적인 것 같습니다. 자연으로 부터 얻어지는 대부분의 이미지에는 크기가 다를 수는 있어도 여러 class가 동시에 존재할 수 있습니다. 또한 어느 한 class로 지정하기엔 덜 명확한 class도 존재할 수 있습니다.  두번째로는 class들간의연관성이 없는 경우에도, 비슷하게 생긴 경우가 많이 존재한다는 것 입니다. 뒤에 나올 그림(10) 처럼 축구공처럼 생긴 열기구가 있다면 관련성이 떨어지는 class이지만 그림상으로는 어떤 class라고 prediction하는 것이 애매한 경우가 있습니다. 마지막으로 random crop과 같은 data augmentation들이 그림(1)과 같이 label class가 아닌 다른 class로 보이게 끔 만들 수 있습니다.

 

Related work

기존 방법론의 한계점들을 살펴보았는데요, 이것들을 현재까지 어떻게 다뤄 왔는지 살펴보도록 하겠습니다.

  1. Label smoothing : Softening labels (uniformly redistributes 10% of the weight from the ground-truth label to other classes to help regularize during training).
  2. Incorporating Taxonomy : Design hierarchical loss to reduce the penalty for predictions that are close in taxonomy to the ground-truth.

먼저, label 이 하나로 정확히 prediction되어야 하는 조건을 완화하기위해 random하게 다른 class에 weight를 나누어 주는 방법을 생각해볼 수 있겠습니다. 어느정도 smoothing되는 효과는 있겠지만, noise질 수 있고, 오히려 training 에 방해가 될 수 도 있습니다. 그 다음은 Taxonomy를 직접적으로 활용하는 방법으로 predefined taxonomy에서 가까이에 붙어있는 class로 잘못 prediction한 경우, penalty를 낮춰주는 식으로 taxonomy를 고려하는 방법입니다. 하지만 이 역시 주어진 input에서도 실제로 비슷하게 생긴 class인지 알 수 없기 때문에 한계가 있다고 할 수 있습니다.

Teacher-student framework

본 논문에서 사용된 teacher-student framework은 teacher network 를 먼저 학습시키고, student network를 GT가 아닌, teacher network로 부터 학습시키는 framework입니다. 보통 student network를 teacher network로 부터 training 시키는 이유는, 시간 단축 그리고 모델축소의 목적이었습니다. 하지만 오히려 성능까지도 끌어올리는 방법론들이 등장하면서 [2] 주목을 받고 있습니다. 본 논문에서도, teacher-student framework를 시간단축이나, 모델축소의 목적으로 사용하지 않고, 성능향상의 목적으로 사용했습니다.

스크린샷 2018-06-22 오후 2.29.18.png
그림(2) Teacher-student framework [2]
그림(2) 에서처럼, student에 비해 깊은 teacher network를 먼저 학습시켜놓고. 그 teacher network를 사용하여 student network를 학습시키는 framework입니다. 중간단계 layer의 weight로부터 student network의 weight를 학습시키는 것을 적용하여 좋은 성능을 내도록 만든 논문인데, 이렇게 구성하지 않고 단순히 최종 prediction만을 가지고 학습시킬수도 있습니다. 본 논문은 후자의 방법을 채택하여 teacher network의 output을 가지고 student network를 training하였습니다.

스크린샷 2018-06-22 오후 4.06.57.png
그림(3) Teacher-student accuracy curve [2]
그림(3)과 같이 teacher-student framework은 teacher로 부터 student도 좋은 성능을 얻어낼 수 있다는 것을 보여줍니다.

스크린샷 2018-06-22 오후 6.18.41.png
그림(4) Teacher-student 구조 [1]

본 논문은 그림(4)에서처럼 Teacher-student framework을 구축하였습니다. 첫번째 model만 기존의 학습방법대로, GT를 통해 학습시키고, 그 model을 teacher모델로 사용합니다. 그리고 동일한 training image에 대해, teacher model의 prediction값을 GT하여 student model을 학습시킵니다. 만들어진 student model이 학습이 완료되면, 이번엔 그 student모델을 teacher모델로 삼고, 다음 student model을 같은 방법으로 학습합니다.

 

Training

스크린샷 2018-06-25 오후 3.07.41.png
그림(5) 전체 구조[1]
결국엔 위 그림(5)와 같은 구조로 순차적으로 학습이 됩니다. 가장 왼쪽에 해당되는 model부터 학습을 시키고, 오른쪽으로 하나씩 학습을 시켜나갑니다. training dataset은 동일하게 하되, data augmentation은 on-the-fly로 해주어야합니다.

스크린샷 2018-06-25 오후 3.23.59.png
수식 (1) KL-divergence

Teacher model로 부터, student model을 학습시키는데에는 KL divergence를 활용합니다. 결국에는 teacher model의 prediction으로부터 student model을 학습시키는 것이기 때문에, prediction의 distribution에 관련된 loss term이 필요할 것이고, 본 논문에서는 그것을 KL-divergence로 두고 문제를 풀었습니다. 수식(1) KL-divergence를 보면 알 수 있듯이, P 와 Q 가 비슷해질 경우에 KL-divergence는 작아지게 됩니다.

 

스크린샷 2018-06-25 오후 3.59.10.png
수식(2-1) Loss [1]
본 논문에서 loss function은 수식(2-1)와 같이 정의합니다. p^{t-1}_{c} 는 teacher model의 prediction 을 의미하고 p^{t}_{c} 는 학습시킬 student model의 prediction을 의미합니다. 그런데 수식을 자세히 살펴보면

스크린샷 2018-06-25 오후 3.58.57.png
수식(2-2) Loss [1]
수식(2-2)의 오른쪽 빨간 부분은, student model parameter에 영향을 받지 않는 값이 됩니다. 따라서, 오른쪽 빨간색 부분은 loss function에서 고려해주지 않아도됩니다.

스크린샷 2018-06-25 오후 4.20.44.png
수식(3) 최종 Loss [1]
최종적으로 수식(3)과 같은 loss를 정의할 수 있고, cross-entrophy와 다를바가 없다. 이렇게 t=1부터 (GT로 학습시킨 모델), 차례대로 학습시켜 나가면 됩니다.

Results

스크린샷 2018-06-25 오후 5.24.15
그림(6) Generalization curve  [1]
그림(6)에서 처럼, Label refinery 과정을 거치면서, 점점 generalization 측면에서  더 좋아짐을 알 수 있습니다.

스크린샷 2018-06-25 오후 5.43.50.png
그림(7) Classwise performance [1]
그림(7)에서는 class별로, validation accuracy가 어떻게 차이가 나는지 보여주고 있습니다. 오른쪽을 보시면, validation accuracy가 높은쪽에는 파란색인 AlexNet model의 갯수가 가장 적고, 반대로 낮은쪽에는 AlexNet model의 갯수가 가장 많은 경향을 보여줍니다. 이와 대조적으로, AlexNet 4, 5 model은 validation accuracy가 높은쪽에 AlexNet에 비해 갯수가 더많고, 낮은쪽에는 갯수가 더 적습니다. 결론적으로 Validation performance 가 더 좋아졌다는 것을 의미합니다.

스크린샷 2018-06-25 오후 6.02.23.png
그림(8) ImageNet 2012 performance [1]
그림(8)에서는 다양한 아키텍쳐에 refinery 방법론을 적용해보고, 성능향상을 분석한 결과표를 보여줍니다.아키텍쳐의 복잡도나 depth에 따라, refinery를 몇번 거칠 것인지가 달라지긴 하지만, 보여지는 모든 아키텍쳐에 대해 유의미한 성능향상을 관찰할 수 있었습니다.

스크린샷 2018-06-25 오후 6.17.25.png
그림(9) Hard vs Soft [1]
그림(9)에서는 teacher model의 prediction으로 student model을 학습시킬때, hard하게 하나의 제일 높은 prediction값만을 가지고 training할때와 prediction의 probability distribution을 그대로 GT로 줄때의 성능차이를 보여줍니다. Static과 dynamic의 차이는 random crop과 같은 on-the-fly 연산이 들어갔을때 label을 통일하느냐 아니냐의 차이입니다.

Examples

스크린샷 2018-06-25 오후 6.27.17.png
그림(10) 결과 예제 [1]
결과를 보시면, 빨간 영역에 대한 사진만을 가지고 (왼쪽에서 아래) prediction을 해도, AlexNet은 Barbershop을 굉장히 높은 probability로 예측하게됩니다. 사람이라면 전혀 그렇게 생각하지 않았을 겁니다. 그에 반해 AlexNet5의 경우에는 street sign이 가장 높은 probability이고, 나머지와 큰 차이없는 애매한 probability로 결과를 예측합니다.

스크린샷 2018-06-25 오후 6.35.14.png
그림(11) 결과 예제 [1]
 이 결과 예제도 마찬가지로, Alexnet5 model이 좀 더 genralization이 잘 된 prediction결과를 보여줍니다.

 

결론

본 논문의 핵심 아이디어는 정말 간단합니다. 기존의 학습방법으로 학습시킨 model의 결과를 가지고,  새로운 model을 학습시키게 된다면, GT label이 100% 정확한 label이 아니기 때문에 genralization에 더 도움을 줄 수 있을것이다. 물론 그 GT label을 사람이 전부 tagging하여 100%정확한 label을 만들 수 있다면 당연히 더 좋겠지만, 그럴수 없기 때문에 어느정도 이미 학습된 model을 활용하여 그것을 가능케 했고, 충분히 유의미한 성능향상을 이끌어 냈다는 것입니다.

이 방법론은 annotation이 값 비싼 dataset, dataset의 품질이 조금은 의심될 때 혹은 GT label이 정확할 수 없는 경우에 유용하게 활용될 수 있을 것 같습니다.

 

[1] Label Refinery: Improving ImageNet Classification through Label Progression, Bagherinezhad et al.

[2] A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning, Yim et al, CVPR 2017

[3] https://ko.wikipedia.org/wiki/%EC%BF%A8%EB%B0%B1-%EB%9D%BC%EC%9D%B4%EB%B8%94%EB%9F%AC_%EB%B0%9C%EC%82%B0

Posted by:Cesc Chunseong Park

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s