요약
Quadruplet loss은 Triplet loss에서 같은 클레스끼리 더 응집할 수 있도록 제약을 추가한 손실함수이다. Quadruplet loss함수를 기반으로 딥러닝 네트워크를 만든 것이 Quadruplet loss이다. 이 Quadruplet loss을 이용하면 같은 클레스(Intra-class)는 더 응집력 있게 임베딩이 되며, 다른 클레스(Inter-class)끼리는 더 거리가 멀어지게 임베딩할 수 있게 학습을 한다. 또한 Quadruplet network에서는 학습을 더 잘할 수 있게, 이미 구별이 어려운 데이터포인터들을 먼저 학습할 수 있게하는 전략도 함께 구사한다(=어려운 문제를 잘 풀다보면 쉬운 문제를 잘 푸는 것과 같은 이치)
Quadruplet loss
Quadruplet loss의 핵심은 아래의 손실함수의 정의이다 (식3). $x_{i}$의 의미는 Anchor에 해당하는 데이터 포인터이다. (즉 쿼리에 해당하는 데이터포인터임). $x_{j}$은 $x_{i}$의 클레스와 같은 클레스를 지닌 데이터포인터이다(=Positive sample이라고도 한다). 한편, $x_{k}$은 $x_{i}$와 다른 클레스를 지닌 데이터포인터이다. 여기까지가 Triplet loss의 정의를 위한 과정인데, Quadruplet은 $x_{l}$이라는 다른 데이터포인터의 고려사항을 두는데, $x_{k}$랑은 다른 클레스의 negative sample을 의미한다. 식 3에서의 마지막 s들은 class을 의미한다.
식(3)에서의 g(x1, x2)은 무엇인가? g()함수는 "learned metric"이라고 영어로 표현한다. 쉽게 말하면, 딥러닝 네트워크에서 뱉어주는 유사도에 해당한다. learned metric에서 여기서 쓰는 g(x1, x2)은 두 이미지(x1, x2)사이의 유사도를 의미한다. g(x1, x2)가 크면 클수록 이미지가 다른 것을 의미하며, 유사한 이미지일수록 같은 클레스의 이미지일 것이라고 학습시킨 것이다.
다시 돌아와서, 식(3)을 그림으로 표현하면 다음과 같다. 식(3)에서의 첫 번째 term은 아래의 그림의 좌측에 해당하고, 두 번째 term은 아래의 그림의 우측에 해당한다. 좌측그림을 보면, $x_{i}, x_{j}$은 같은 클레스이다. 따라서 두 클레스의 유클리디언 공간에서의 위치는 유사해야하기에, 두 거리에 해당하는 g(x1, x2)은 가까워야한다(=0에 수렴). 반대로 $x_{k}$은 고양이 이다. 따라서, $x_{i}, x_{k}$은 멀어져야 의미론적으로 임베딩이 되었다고 할 수 있다. 즉, 첫 번째 Term은 같은 클레스의 그림은 가깝게, 다른 클레스의 그림은 멀게 표현하라는 제약을 둔 것이다.
반대로, 우측의 이미지를 첫항에 해당하는 $x_{i}, x_{j}$은 같은 클레스이다. 따라서 두 클레스의 유클리디언 공간에서의 위치는 유사해야하기에, 두 거리에 해당하는 g(x1, x2)은 가까워야한다(=0에 수렴). 그 다음항은 $x_{l}, x_{k}$이다. $l$은고래이다. $k$와도 다르고 $x_{i}$와도 다르다. 즉, negative samples의 클레스 사이끼리도 거리가 멀어야한다는 것을 의미한다.
Quadruplet network
그리고 나서, 아래의 그림과 같이, 모델을 구성하여 학습한다. 아래의 그림중, 흰색배경에 해당하는 부분은 Triplet network (withtriplet loss)으로 구성과 동일한 부분이다. 빨간색 쉐딩이 되어있는 부분은 본 연구에서 추가한 항목이다. 좌측의 입력(Quadruplet)부터보면 Ref와 Pos은 같은 이미지이다. Neg은 흰색옷을 입은 Ref와 다른 이미지이다. 그리고, 마지막 Neg2은 Neg1과도 다르고, Ref와도 다르다. 그리고, 뉴럴네트워크를 이미지 4개를 한번에 입력값으로 받는다.이 뉴럴네트워크는 (Shared)라고 표기한 것처럼, 가중치를 공유한다. 즉, 단일 네트워크를 각각 학습시키는 것이 아닌, 동시에 같은 네트워크를 학습시키는 것이다. 그 후, g(x1, x2)에 해당하는 FC8을 통과하여 이미지의 유사도에 해당하는 벡터를 반한다. (주의할 것은 triplet에서 적용한 g(x1, x2)은 상수를 반환하고, 본 연구에서 반환하는 것은 2차원 vector을 반환한다). 벡터를 반환시, 벡터의 첫원소는 두 이지의 유사도를 의미할 것이라고 가정하여 softmax을 취한 normalization값을 얻는다(=0과 1사이). 그 후에 quadruplet loss을 적용한다.
Margin-based online hard negative mining
문제는 이 이미지 4개를 어떤 조합으로 넣을지, 어떤 순서로 넣을지이다. 본 연구에서는 Margin-based online hard negative mining이라는 방법으로 학습방법을 정의했다. 직관적으로 해석하면, 구분하기 쉬운문제-> 구분하기 어려운문제로 학습하는 것보다, 애초에 구분하기 어려운문제부터 학습하는 것이 더 좋을 것이라는 직관에 해당한다. 또한, 얼마나 멀어야 구분하기 어려운지(margin)을 정의하기는 어렵다. 여기서는 다음의 방법을 이용했다.
마진은 $\alpha$로 표현하는데, Anchor와 negative class와의 learn metric(=g(x1, x2), 유사도)의 평균과 Anchor와 positive class의 learned matrix의 차이를 이용한다 (식 4). 아래의 각 $\mu_{n}, \mu_{p}$은 Anchor와 negative class와의 learn metric의 평균, Anchor와 positive class의 learned matrix을 의미한다. 여기서의 $x_{l}$은 등장하지 않는다. 본문에는 등장하지 않지만, $l$보다는 $i, j, k$와의 마진을 구현하기 위하기 위함일 것이다.
실제로 이렇게 구하는 $alpha$은 각각 식(3)에 다시 할당이되어야 한다.문제는 식(3)에서 에서 $alpha_{1}, alpha_{2}$을 각각 구하기위해서는 식4와 같이 N까지의 모든 샘플을 구해야한다는 것인데, 각 iteraion마다 g(x1, x2)의 파라미터가 바뀌니, $alpha$도 각 이터레이션마다 업데이트해주어야한다. 즉, 모든 샘플에 대해서 1회 이터레이션당 $\mu_{n}, \mu_{p}$을 계산해야한다는 것이다. 본 연구에서는이를 간단하게 해결하기위해서, N개의 이미지쌍을 구현하는 것이 아니라, 배치사이즈 M을 이용하기로했다. 학습할 때, 1회업데이트에 쓰이는 배치사이즈(M)에 대해서만 계산한다는 것이다. 즉, $N_{p}=M, N_{n}=2M$이 된다.
또한, 파라미터의 최적화를 위해서, 스토케스틱 그레디언트 디센트(SGD)을 계산에서도 $\alpha$가 껴있기 때문에 계산이 어려울 수 있으니 아래의 식을 이용한다.
'Best Paper review > Others' 카테고리의 다른 글
[5분 이해] Understanding Black-box Predictions via Influence Functions (0) | 2022.08.13 |
---|---|
[XAI] RandomForest의 Feature importance의 해석 (0) | 2022.08.01 |
Fasttext: Enriching Word Vectors with Subword Information 5분 컷 리뷰 (0) | 2021.12.07 |
SVP(Supervised Paragraph Vector) 해석: 5분 컷 이해 (0) | 2021.11.22 |
자연어처리의 고전 BERT, 5분 컷 이해 (0) | 2021.10.25 |