深度学习-孪生网络
Siamese network 孿生神經網絡--一個簡單神奇的結構(入門)
https://zhuanlan.zhihu.com/p/35040994
對上面的博客的添加筆記版
https://www.cnblogs.com/Lee-yl/p/10113386.html
對上面網友的筆記的部分解讀:
5、Siamese network 的損失函數:
Softmax當然是一種好的選擇,但不一定是最優選擇,即使是在分類問題中。【分類問題用交叉熵】
傳統的siamese network使用Contrastive Loss【對比損失函數】。
對比損失函數如下:
- 其中Dw被定義為姐妹孿生網絡的輸出之間的歐氏距離。Dw歐式距離公式如下:
- 其中Gw是其中一個姐妹網絡的輸出。X1和X2是輸入數據對。
- Y值為1或0。如果模型預測輸入是相似的,那么Y的值為0,否則Y為1。
- max()是表示0和m-Dw之間較大值的函數。
- m是大于0的邊際價值(margin value)。有一個邊際價值表示超出該邊際價值的不同對不會造成損失。這是有道理的,因為你只希望基于實際不相似對來優化網絡,但網絡認為是相當相似的。
我們可以這樣理解,Dw是兩個網絡輸出的差值,當輸入的數據不相似,Y=0,那么損失函數只看左邊,右邊為零。網絡之間的差值即是loss,然后調整網絡權重。當輸入數據相似,Y=1,損失函數看右邊,左邊為零。然后看到這個max{0,m-Dw}^2,損失值只會是正數,如果相似的數據的差值很大,就是你設定m=5,然后Dw為100,相似的圖片之間的差別太大,但不應讓網絡因為相似數據的巨大差別而調整網絡權重,學習差異。這個m邊際價值在這里的作用就是忽略相似圖片的巨大差異。
?
這里多說一句,siamese可以用來降維,因為最后他的輸出是二維的,這樣直接把維度降下來了。下圖中左右兩個網絡輸出都是一個Gw,兩個值。
來自:https://blog.csdn.net/qq1483661204/article/details/79039702
總結
- 上一篇: ubuntu系统配置i3wm窗口管理器
- 下一篇: 嵌入式高手之路