反向传播如何在孪生神经网络中工作?

机器算法验证 神经网络
2022-02-04 12:58:32

我一直在研究 Yann LeCun 和他的同事在 1994 年引入的用于识别签名的孪生神经网络的架构(“Signature verification using a siamese time delay neural network”.pdf,NIPS 1994)

我理解这种架构的总体思路,但我真的无法理解在这种情况下反向传播是如何工作的。我无法理解神经网络的目标值是什么,这将允许反向传播正确设置每个神经元的权重。

图片来自 Chen Liu(多伦多大学,2013 年)的“Probabilistic Siamese Network for Learning Representations”。

在这种架构中,算法计算两个神经网络的最终表示之间的余弦相似度。论文指出:“当呈现真正的签名时,所需的输出是两个子网络(f1 和 f2)的输出之间的小角度,如果其中一个签名是伪造的,则角度很大”。

我无法真正理解他们如何使用二进制函数(两个向量之间的余弦相似度)作为目标来运行反向传播。

孪生神经网络中的反向传播是如何计算的?

1个回答

两个网络共享相似的架构,但它们被限制为具有与出版物在第 4 节 [1] 中描述的相同的权重。

他们的目标是学习特征,当签名是真实的时最小化它们的输出向量之间的余弦相似度,并在它们被伪造时最大化它(这也是反向传播的目标,但没有给出实际的损失函数)。

余弦相似度两个向量是相似度的度量,它为您提供它们之间角度的余弦(因此,它的输出不是二进制的)。如果您关心的是如何反向传播输出真假的函数,请考虑二进制分类的情况。cos(A,B)=ABABA,B

您不应该更改输出层,它由经过训练的具有线性值的神经元组成,并且它是您输入的更高级别的抽象。整个网络应该一起训练。输出都通过函数传递,该函数输出它们的余弦相似度(如果它们相似,则为)。鉴于此,并且我们有两组输入元组,您可能必须训练的最简单的可能损失函数的示例可能是:O1O2cos(O1,O2)10XForged,XGenuine

L=(xA,xB)XForgedcos(xA,xB)(xC,xD)XGenuinecos(xC,xD)

训练好网络后,只需输入两个签名,然后将两个输出传递给函数,然后检查它们的相似性。cos(O1,O2)

最后,为了保持网络权重相同,有几种方法可以做到这一点(它们也用于循环神经网络);一种常见的方法是在执行梯度下降更新步骤之前平均两个网络的梯度。

[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf