反向傳播如何在孿生神經網絡中工作?
我一直在研究 Yann LeCun 和他的同事在 1994 年引入的用於識別簽名的孿生神經網絡的架構(“Signature verification using a siamese time delay neural network”.pdf,NIPS 1994)
我理解這種架構的總體思路,但我真的無法理解在這種情況下反向傳播是如何工作的。我無法理解神經網絡的目標值是什麼,這將允許反向傳播正確設置每個神經元的權重。
在這種架構中,算法計算兩個神經網絡的最終表示之間的餘弦相似度。論文指出:“當呈現真正的簽名時,所需的輸出是兩個子網絡(f1 和 f2)的輸出之間的小角度,如果其中一個簽名是偽造的,則角度很大”。
我無法真正理解他們如何使用二進制函數(兩個向量之間的餘弦相似度)作為目標來運行反向傳播。
孿生神經網絡中的反向傳播是如何計算的?
兩個網絡共享相似的架構,但它們被限制為具有與出版物在第 4 節 [1] 中描述的相同的權重。
他們的目標是學習特徵,當簽名是真實的時最小化它們的輸出向量之間的餘弦相似度,並在它們被偽造時最大化它(這也是反向傳播的目標,但沒有給出實際的損失函數)。
餘弦相似度兩個向量的, 是一種相似性度量,它為您提供它們之間角度的餘弦(因此,它的輸出不是二進制的)。如果您關心的是如何反向傳播輸出真假的函數,請考慮二進制分類的情況。
您不應該更改輸出層,它由經過訓練的具有線性值的神經元組成,並且它是您輸入的更高級別的抽象。整個網絡應該一起訓練。兩個輸出和通過一個輸出它們的餘弦相似度的函數(如果它們相似,並且如果不是)。鑑於此,我們有兩組輸入元組,你可能不得不訓練的最簡單的損失函數的一個例子可能是:
訓練好網絡後,只需輸入兩個簽名,然後將兩個輸出傳遞給函數,並檢查它們的相似性。
最後,為了保持網絡權重相同,有幾種方法可以做到這一點(它們也用於循環神經網絡);一種常見的方法是在執行梯度下降更新步驟之前平均兩個網絡的梯度。
[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf