机器学习笔记:triplet loss
1 Triplet loss
????????Triplet Loss,即三元組損失,其中的三元是Anchor、Negative、Positive。
????????通過Triplet Loss的學習后使得Positive元和Anchor元之間的距離最小,而和Negative之間距離最大。( 其中Anchor為訓練數據集中隨機選取的一個樣本,Positive為和Anchor屬于同一類的樣本,而Negative則為和Anchor不同類的樣本。)
? ? ? ? 換句話說,通過學習后,使得同類樣本的positive樣本更靠近Anchor,而不同類的樣本Negative則遠離Anchor。
1.2 目標函數
1.2.1 函數符號解釋
| ||。。。|| | 歐氏距離 | ||||
| Positive元和Anchor之間的歐式距離度量 | |||||
| Negative和Anchor之間的歐式距離度量 | |||||
| α | Positive元和Anchor之間的歐式距離? ?和? ?Negative和Anchor之間的歐式距離? 之間的最小差距 | ||||
| 式子最后的“+” | “[。。。]”內的值大于零的時候,就取“[。。。]”內的值 “[。。。]”內的值小于零的時候,就取0 ——>
|
?1.3?margin取值
? ? ? ? triplet loss?目的就是使 loss 在訓練迭代中下降的越小越好,也就是要使得 Anchor 與 Positive 越接近越好,Anchor 與 Negative 越遠越好。
????????當 margin 值越小時,loss 也就較容易的趨近于 0,于是AP距離不需要拉的太近,AN距離不需要拉的太遠,就能使得 loss 很快的趨近于 0。——>這樣訓練得到的結果,不能夠很好的區分和Anchor相似&和Anchor不同的圖像。
????????當margin越大時,就需要使得網絡拉近 AP距離,拉遠 AN距離。如果 margin 值設置的太大,很可能最后 loss 保持一個較大的值,難以趨近于 0 。
????????因此,設置一個合理的 margin 值很關鍵,這是衡量相似度的重要指標。
????????換言之,margin 值設置的越小,loss 很容易趨近于 0 ,但很難區分相似的圖像。margin 值設置的越大,loss 值較難趨近于 0,甚至導致網絡不收斂,但可以較有把握的區分較為相似的圖像。
1.3.1 為什么要加margin
我們希望 A和P的距離越近越好,A和N的距離越遠越好,于是如果沒有margin的話,我們希望:
?但是這會導致一個問題,就是平凡解:
?于是我們加了margin 來避免平凡解:
?也即:
?
1.4 Triplet 梯度? ? ? ?
?
?
?參考文獻:Triplet Loss及其梯度_jcjx0315的博客-CSDN博客
總結
以上是生活随笔為你收集整理的机器学习笔记:triplet loss的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch笔记:VGG 16
- 下一篇: MAS 714课程笔记12: 线性规划