AI/주워들은 것들

Triplet loss란?

아인샴 2024. 4. 15. 05:42

contrastive loss와 같이 loss function 에 의한 발전에 속한다고 한다. (특히 val_loss에 해당)

 - Anchor(a), Positive(p),Negative(n) 세가지 input을 사용 

  L = max( d(a,p)-d(a,n) + margin,0) 

  • positive는 가깝고 negative는 멀어지게 되는데 margin이 더해져 있어서(?) negative를 멀리 보낸다고 한다. 

학습하면서 왼쪽이 오른쪽 되는 방식

 

Triplet mining 

 - Triplet loss에 따라 dataset의 카테고리를 3종류로 (Easy, Hard, Semi-hard) 나눌 수 있다. 

  • loss=0이면 easy triplet이다.  *) d(a,p)+margin < d(a,n)
  • negative가 positive보다 anchor에 가까우면 hard다. *) d(a,n) < d(a,p)
  • negative가 positive 보다 anchor에서 멀리떨어져 있긴 한데 margin 보다는 아닌, loss > 0인상태면 semi-hard다. 
    • d(a,p) < d(a,n) < d(a,p) + margin
    •  

그림으로 표현하면 이렇다고 한다.

negative의 거리는 anchor와 positive사이의 거리를 기준으로 잡힌다.

data를 이런 식으로 triplet을 만들어 학습하면,  차별화를 명확하게 한다고 한다. 단점은 학습과정이 느리고 트리플셋이 균형잡혀있어야 해서 데이터가 많이 필요하다고 한다. 

 

출처 : 

https://mic97.tistory.com/16

https://soobarkbar.tistory.com/43

+chatGPT4.0