两个网络共享相似的架构,但它们被限制为具有与出版物在第 4 节 [1] 中描述的相同的权重。
他们的目标是学习特征,当签名是真实的时最小化它们的输出向量之间的余弦相似度,并在它们被伪造时最大化它(这也是反向传播的目标,但没有给出实际的损失函数)。
余弦相似度两个向量是相似度的度量,它为您提供它们之间角度的余弦(因此,它的输出不是二进制的)。如果您关心的是如何反向传播输出真假的函数,请考虑二进制分类的情况。cos(A,B)=A⋅B∥A∥∥B∥A,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