这两个网络共享相似的体系结构,但它们的权重与出版物第4节[1]中描述的相同。
他们的目标是学习在签名真实时将其输出向量之间的余弦相似性降至最低的特征,以及在伪造伪造时的输出向量之间的余弦相似度最大化(这也是反向传播目标,但未提供实际的损失函数)。
余弦相似度两个向量是相似度的度量,它为您提供它们之间的夹角的余弦值(因此,其输出不是二进制的)。如果您关心的是如何反向支持输出true或false的函数,请考虑二进制分类的情况。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