Learning by Association: A versatile semi-supervised training method for neural networks

semi-supervised
cvpr2017
google
cvpr

#1

‘Association’ 이라는 개념을 처음으로 소개해 Semi-Supervised Learning을 하는 방식을 제안한 논문입니다. 복잡하지 않고 심플한 아이디어로 End-to-end learning이 가능한 프레임워크입니다.

Semi-Supervised Learning?

짧게 설명해서, 레이블이 있는 데이터와 레이블링이 되어 있지 않은 데이터가 있는 상황입니다. 레이블있는 데이터만 가지고 Supervised Learning을 할 수도 있지만, 레이블이 없는 데이터의 도움을 받아 더 나은 성능을 내는 것을 목표로 합니다.

논문에서 소개하기로는

레이블 데이터로 학습한 네트워크를 이용해 'pseudo label’을 생성하는 방법이 있다고 합니다. 즉, 레이블이 없는데이터에, 네트워크 결과가 정답인 것인냥 사용하는 것입니다. Auto Encoder를 사용하거나 Regularization을 통해 decision boundary에 레이블없는 데이터가 영향을 주도록 하는 방식도 소개합니다.

반면 Unsupervised Learning 에서는

RBM(Restricted Boltzman Machine) 이나 Auto-Encoder 등의 아키텍쳐로 좋은 Embedding을 찾는 것 자체만이 목표가 된다고 할 수 있겠습니다.

최근에는 Gan(Generative Adversarial Nets)를 이용해서

생성한 데이터로 Semi-Supervised Learning에서 좋은 성과를 내는 경우도 있습니다. 데이터의 분포를 알아내는 과정이다보니 트레이닝에 도움이 될 것 같다는 생각이 듭니다.

Learning by Association

논문에서 제안하는 방식에 대한 설명입니다.

  • 초록색 데이터는 레이블(정답)이 있는 데이터이고
  • 빨간색 데이터는 그렇지 않은

상황입니다.

논문에서 이야기하는 Association이라는 것은 결국 레이블된 데이터와 언레이블된 데이터가 서로 연관되어야 한다는 것입니다. 조금 더 구체적으로는, 레이블된 데이터에서 비슷한 언레이블 데이터를 찾고, 다시 그 언레이블된 데이터에서 비슷한 레이블 데이터를 찾았을 때 Class가 동일해야 하지 않겠냐는 주장입니다.

해서 위 그림과 같은 상황이 아래처럼 잘 Associated 되는 트레이닝을 목적으로 하는 것입니다.

수식으로 설명하자면, A, B를 각각 레이블된 데이터, 언레이블된 데이터의 배치로부터 얻은 Embedding이라고 할 때, 데이터 간의 유사도(Similarity)는

M_{ij} = A_i B_j

로 정의, 즉 단순한 dot product로 정의합니다. 그리고 A에서 B로 이동할 확률을 의미하는 Transition Probability는

P^{ab}_{ij}=P(B_j | A_i) = (softmax_{cols}(M))_{ij} = exp(M_{ij}) / \sum_{j'}(exp(M_{ij'})

로 정의했습니다. 즉 Similarity가 크면 이동할 확률이 크고, 확률이 sum은 1이 되도록 softmax로 모델링을 했습니다.

이 때 Round Trip Probability는

P_{ij}^{aba} = (P^{ab}P^{ba})_{ij}

로 정의합니다. 의미로는 Label Data i로부터 Label Data j로 연결될 확률로 보면 됩니다. 위 그림에서 위쪽의 녹색 숫자로부터 아래쪽의 녹색 숫자까지 연결될 확률입니다.

이제, 제대로된 이동(Correct Walk)에 대해서는 아래와 같이 합리적으로 정의를 합니다.

P(correct walk) = 1/|A| \sum_{i~j}(P^{aba}_{ij})

고 이 때 i,j 는 같은 클래스인 것들을 모아서 계산합니다.

최종적으로 Loss는

L_{total} = L_{walker} + L_{visit} + L_{classification}

으로 정의되는데, 각각은 아래와 같습니다.

  • L_{walker} : 제대로된 이동(Correct Walk)에 대한 Cross Entropy
  • L_{visit} : Easy example에 대해서 fit되는 것을 막기 위해 주는 텀으로 다양하게 association되는 것을 장려하는 Loss
  • L_{classification} : Label데이터의 Classification을 위한 Cross Entropy

정리하자면,

  • 데이터와 데이터 간의 유사도를 정의하고
  • 레이블데이터->언레이블데이터->레이블데이터 로 이어지는 확률을 정의하고
  • 이를 이용해서 정확한 Association에 대한 Loss를 추가

함으로써 Semi Supervised Learning을 했다고 볼 수 있습니다.

Experiments

MNIST

상대적으로 심플한 방식으로, 어느 정도 성능은 나오는 것 같습니다.

SVHN

SOTA는 아니지만 역시 나쁘지 않습니다.

이 표를 보면, Unlabeled Data를 추가함으로써 성능이 꽤 올라간 것을 볼 수 있습니다.

Domain Adaptation

Representation이 잘 되었는가를 간접적으로 보기 위해 Domain Adaptation을 간단히 실험해보았는데, 이 부분에서도 재미있는 결과가 있습니다.

SVHN으로 트레이닝 하던 네트워크를 MNIST 태스크로 전환한 것인데, Adapted 부분을 보시면 가장 나은 성능을 보여줍니다.

Conclusion

End to End로 학습이 가능하면서 매우 심플한 아이디어로 구현된 Semi Supervised Learning 의 제안입니다. 충분히 경쟁력있는 결과와 함께 재미있는 해석을 할 수 있는 결과들이 있어, 좋은 것 같습니다.


Ideas for 9th Kaggle TensorFlow Speech Recognition Challenge