본문 바로가기
Dev

Metric Learning and Triplet Loss

by 호랑2 2021. 3. 28.

1. Transfer Learning

Transfer Learning 은 하나의 task 를 해결하기 위해 학습된 모델을 다른 task 해결을 위해 재사용 하는 것을 의미한다.
이는 사람이 새로운 지식을 습득하는 과정에서 기존에 습득한 지식들을 활용하는 것과 비슷한 개념이다.


참조 : https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a

 

A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning

Deep Learning on Steroids with the Power of Knowledge Transfer!

towardsdatascience.com

이때 Transfer Learning 을 위해 최초로 학습을 수행하는 task를 upstream task 라고 부르고, 

upstream task 를 학습하는 과정을 pre-train 이라고 부른다.

 

pre-train 이 끝난 모델을 가지고 실제 우리가 해결하고자 하는 task 를 학습해야 하는데,

이것은 downstream task 라고 부른다.

 

Transfer Learning 을 사용하면 모델의 학습 속도가 빨라지고, 새로운 task 를 수행하는 성능이 개선된다.

앞서 살펴본 few-shot learning  Transfer Learning 의 학습 방법 가운데 하나이다.

 

2. Metric Learning

Transfer Learning 을 진행하기 위해서는 pre-train 과정에서 general 한 모델을 완성해야 하는데,

이 과정에서 Metric Learning 을 사용한다.

 

Metric Learning 은 주어진 대상을 분류 하는 것이 아니라, 주어진 대상들의 특성이 같은지 다른지에 따라 거리를 구하는 방식이다.

 


참조 : FaceNet

 

유사한 대상일수록 거리가 가깝게 계산되며, 유사하지 않은 대상일수록 거리가 멀게 계산되기 때문에
기존과 같이 단순 분류를 하는 것이 아니라 유사한 대상끼리 클러스터를 잘 형성하는 것에 초점이 맞춰지게 되었다.

 

3. Triplet Loss

Metric Learning 을 수행하기 위한 손실함수로 구현된 것이 Triplet Loss 이다.
Triplet Loss 는 anchor를 기준으로 positive와 negative를 이용해 3개의 값으로 loss를 계산한다.

입력된 값이 true이면 positive를 minimized, 입력된 값이 false이면 nagative를 maximize하는 방식으로 학습한다.

'Dev' 카테고리의 다른 글

[colab] bash: Bad Substitution  (0) 2021.04.01
[colab] sh: Permission denied 오류  (0) 2021.03.29
Few-Shot Learning  (0) 2021.03.24
SENet  (0) 2021.03.22
Bottleneck layer  (2) 2021.03.20

댓글