Improved Deep Metric Learning with Multi-class N-pair Loss Objective
http://www.nec-labs.com/uploads/images/Department-Images/MediaAnalytics/papers/nips16_npairmetriclearning.pdf
- batch size N개 만큼 쿼리 샘플을 뽑는다. N개의 모든 샘플은 서로 다른 class라 하자.
- 쿼리 샘플들의 각각의 샘플에 대해서 같은 클래스의 positive example N개를 뽑는다.
- 1에서 뽑은 N개의 샘플에 대해서 2에서 뽑은 같은 클래스의 샘플을 positive example로 쓴다.
- 1에서 뽑은 N개의 샘플에 대해서 2에서 뽑은 다른 클래스의 샘플을 negative example로 쓴다.
- N을 batch size만큼 한다는 것이 중요하다. 이 때 필요한 example은 2N개. triplet loss가 3N, (N+1) tuplet loss가 (N+1)*N개 필요한 것에 비하면 적은 수다.
label 갯수 L이 커지면, L에서 N을 뽑을 때의 negative 신뢰도가 떨어지므로 Hard negative class mining을 해야한다. 이 논문에서 제안하는 방법은 다음과 같다.
여기서 negative class를 pick할 때 triplet constraint를 무시한다고 되어 있는데, 이는 전통적인 개념 같다. https://whatis.techtarget.com/definition/triple-constraint 를 참고.
Hard negative class mining과 관련해서 볼 만한 논문 => https://arxiv.org/abs/1512.05227 labeler가 이터레이션 중간마다 데이터를 확인하여 필터링한 결과를 다음 주기의 학습데이터로 쓰는 방식이 이채롭다. 그 와중에 class mining은 어떻게 하나?
Comments