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
그림으로 표현하면 이렇다고 한다.
data를 이런 식으로 triplet을 만들어 학습하면, 차별화를 명확하게 한다고 한다. 단점은 학습과정이 느리고 트리플셋이 균형잡혀있어야 해서 데이터가 많이 필요하다고 한다.
출처 :
https://soobarkbar.tistory.com/43
+chatGPT4.0