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