5. contrastive loss, triplet loss 알아보기(feat. Deep Metrice Learning)

안녕하십니까 다제입니다. 

오늘은 이미지 분야에서 사용되는 다양한 Loss에 대해서 알아보고자 합니다. 

이미지 분야에서 먼저 Deep Metric Learning이라는 표현이 자주 사용됩니다.

해당 용어가 무엇인지 찾아도 잘 안나오셨을텐데 이부분 먼저 살펴본 후 Arcface와 나머지 Loss들에 대해서 살펴보도록 하겠습니다. 

여기서 Metric은 거리를 의미하게 되고 수학에서 거리는 함수를 의미합니다. 

예를 들어, sin, cosin도 두 점 간의 거리를 수식으로 표현하는 것처럼 말이죠 

이러한 Metric function은 입력을 받고, 추력으로 0 ~ 무한대의 실수 값을 리턴해주며 아래와 같은 3가지 조건을 만족해야 거리함수가 됩니다. 

조건1 : distance(x, y) = 0 == x = y -> x와 y의 거리가 0이면, x,y는 같다. 

조건2 : distance(x, y) == distance(y, x)는 같다 

조건3 : distance(x,y) <= distance(x, z) +  distance(z, y)

이러한 metric function으로는 유클리디안 거리, 내적, 코사인 등이 있습니다. 

이러한 함수를 사용하게 되면 우리의 데이터들이 일정한 공간 내에 분포하고 있는 것을 알 수 있습니다. 

그렇다면, deep metric learning이란, 딥러닝 모델이 위와 같은 거리 공간을 학습하는 것을 의미합니다. 

이러한 거리를 딥러닝 모델에게 학습하기 위해 사용된 Loss는 크게 based softmax loss, based triplet loss로 나눌 수 있습니다. 

각각의 문제점이 있는데, 논문있는 표현을 그대로 인용하여 먼저 보여드리겠습니다. 

기존 문제점

-. the size of the linear transformation matric W ∈  ${R^{d x n}}$ increase linearly with the identities number ${n}$

-. learned features are separable for the closed-set classification problem but not discriminative enough for the open-set recognition problem.

 -> 클래수가 증가할 때마다 matric이 증가한다는 의미입니다. 

 -> 또한, open-set에서 좋은 성능을 보이지 못한다고 합니다. 

※ separable features : 적당히 구분 가능한 특징이 학습됨 

위와 같은 softmax loss의 단점을 보안하기 위해 아래와 같은 순서로 loss 함수들이 발전되었습니다.

하나씩 살펴보도록 하겠습니다. 

Constrative loss(2015CVPR) -> Triplet loss(2015CVPR) -> Center loss(2016ECCV) -> Additive angular margin loss(2019CVPR) 

1. Contrastive loss 

 -. metric learning에서 가장 간단하며 직관적인 손실함수

 -. 모델을 학습을 할 때 기존에는 하나의 이미지만 사용하였지만, 여기에서는 2개의 이미지를 사용하게 됩니다. 

 -. 데이터셋은 2개의 이미지와 두 이미지간의 유사도를 나타내는 정보를 나타내는 값을 함께 제공해줍니다. 

 -.  ${L_{constractive}}$(θ, ${X_{1}}$, ${X_{2}}$, ${Y_{similar}}$) = $Y_{similar}$(${D^{2}}$(${F_{θ}(X_{1})}$, ${F_{θ}(X_{2})}$) + (1-$Y_{similar}$)${max}$(0, ${m}$ – ${D^{2}}$(${F_{θ}(X_{1})}$, ${F_{θ}(X_{2})}$))

 -. 위 수식이 조금 어려워보일 수 있지만, ${X_{1}}$${X_{2}}$가 각가의 이미지이며, ${Y_{similar}}$가 두 이미지 간의 유사도를 나타냅니다.

 -. m은 하이퍼파라미터로써 두 이미지의 여백(마진)을 주기 위한 것입니다. 

 -. $Y_{similar}$(${D^{2}}$(${F_{θ}(X_{1})}$,${F_{θ}(X_{2})}$)에서는 값이 클수록 두 이미지가 가까워지는 것을 정의하고

 -. (1-$Y_{similar}$)${max}$(0, ${m}$ – ${D^{2}}$(${F_{θ}(X_{1})}$, ${F_{θ}(X_{2})}$))에서는 마진보다 거리가 크면 해당 값은 음수가 되고 max값으로 0이 나오게 됩니다.

 -. 이렇게 로스를 줄이는 식으로 학습이 진행되게 됩니다. 

2. Triplet loss 

1) 정의 및 특징 

 -. Deep metric learning에서 가장 유명하고 널리 활용되는 손실함수 

 -. 세개의 데이터를 사용하여 positive pair보다 negative pair의 거리가 더 멀어지도록 손실함수가 고안되었습니다. 

 -. 3장의 사진에서 가장 그 클래스를 대표하는 이미지를 Anchor라고 부르고, 비슷한 이미지를 positive라고 하고, 다른 이미지를 negative라고 합니다. 

 -. triplet loss의 궁극적인 목표는 anchor와 positive의 거리에 마진(m)을 더한 거리가 anchor와 negative의 거리보다 작아지게 학습을 진행하게 됩니다. 

 -. ${L_{triplet}}$(θ, ${X_{1}}$, ${X_{2}}$) = ${max}$(0,  ${D^{2}}$(${F_{θ}(X_{a})}$, ${F_{θ}(X_{p})}$ – ${D^{2}}$(${F_{θ}(X_{a})}$, ${F_{θ}(X_{n})}$ + ${m}$)

2) 문제점

 -. there is a combinatorial explosion in the number of face triplets especially for large-scale datset

 -. leading to a significant increase in the number of iteration step

 -> 공간이 커질 수록 이를 3개로 조합해야하는 수가 증가되게 되고

 -> 이때 따라 semi-hard를 분류하기 위해 더 많은 학습을 해야하기에 iteration이 증간한다고 이야기하고 있습니다. 

 -> 또한, 샘플을 하며 학습을 진행하게 되는데 easy negative만 샘플링되어 학습을 하면 Hard negative를 구분할 수 없겠죠?

image

위 그림에 대해 간략히 설명을 드리자면, 어떠한 클래스를 대표하는 이미지가 센터에 있다고 해보겠습니다. 

일반적으로 대표하는 이미지와 비슷한 이미지들을 positive라고 정의하고 다른 이미지를 negative라고 정의합니다. 

위 그림은 우리가 바라는 이상적인 데이터가 분포입니다. 그러나, center와 positive 경계 사이에 negative가 있을 수 있습니다. 

이러한 negative를 hard negative라고 부르고, positive와 negative 사이를 우리가 margin으로 정의할 것인데, 그 사이에 분포하는 negative데이터를 우리는 semi-hard라고 부릅니다. 

3. Additive angular margin loss 

도저히 손으로 쓸 엄두가 나지 않아서 유튜브에서 이미지를 캡쳐해왔습니다. 

유튜브 링크 : https://youtu.be/hH-UgJ–r_4

img

답글 남기기