👗

In Defense of the Triplet Loss

Tags
Re-identification
Created
2021/01/05 07:56
Publication
Rate
3.5
Summary
Face recognition task를 학습하기 위한 Triplet loss의 학습이 불안정하던 문제를 hard example mining을 도입하여 해결한 페이퍼이다. (상세 페이지 참고)
이 때 당시에는 Softmax loss가 Triplet loss에 비해 우월하다는 것이 딥러닝 씬의 대세였던 것 같은데, Triplet loss에 hard mining을 결합함으로써 Triplet loss 역시 굉장히 효과적인 loss가 될 수 있음을 입증해 낸 페이퍼이다.
일단 Triplet loss의 모습은 다음과 같다. Anchor image xax_a와 같은 identity를 가진 positive image xpx_p, 그리고 다른 identity를 가진 xnx_n의 쌍으로부터 다음과 같이 구한다.
l=[m+Da,pDa,n]+l = [m + D_{a, p} - D_{a, n}]_{+}
하지만 이러한 Triplet loss는 1) 데이터로부터 3개의 쌍을 만들 수 있는 경우의 수가 cubic 함수로 증가하고, 2) 이 중에서 trivial한 경우의 수가 매우 빠르게 많아진다는 것이다. 즉 경우의 수가 무지막지하게 많은데, 대부분의 경우는 아주 쉬운 케이스라 잘 학습이 되지 않는다는 것이다.
그렇다고 데이터에서 "가장" 어려운 케이스들만 뽑아모면, 또 outlier의 존재 등으로 인해 역시 학습이 제대로 이루어지지 않는 경우가 많다. 여기서 이 페이퍼는 임의로 추출한 batch로부터 뽑아낸 "적당히" 어려운 케이스들만을 가지고 Triplet loss를 계산하는 Hard Triplet loss를 제안한다. 우리가 흔히 알고 있는 그 Hard Triplet loss이다. 수식으로 설명하기 애매하니 말로 하자면, batch마다 PP개의 class를 뽑고, 다시 각각의 뽑힌 class에서 KK개의 이미지를 임의로 추출한다. 그러면 batch에 총 PKP*K개의 이미지가 존재하게 되는데, 각각의 이미지마다 가장 어려운 positive, negative sample들을 하나씩 뽑아 내어 triplet 쌍을 만들어내는 것이다. 이러한 쌍들을 통해 Triplet loss를 계산함으로써, outlier가 아닌 적당히 어려운 샘플들을 안정적으로 추출해낼 수 있게 된다.
또한 Triplet loss의 hinge function([   ]+[~~~]_{+})은 이미 충분히 쉬운 쌍으로부터는 학습하지 않음을 의미하는데, 페이퍼에서는 이를 방지하기 위해(즉 이미 충분히 쉽더라도 더 학습하도록 하기 위해) Soft Margin loss를 사용할 것을 권한다.
아무튼 이렇게 하니 당시의 통념을 깨고, 다양한 데이터셋에서 꽤 많은 성능의 향상을 이끌어낼 수 있었다고 한다.
E.O.D.