4.5 面部验证与二分类(Face verification and binary classification)

另一个训练神经网络的方法是选取一对神经网络,选取Siamese网络,使其同时计算这些嵌入,比如说128维的嵌入(编号1),或者更高维,然后将其输入到逻辑回归单元进行预测,如果是相同的人,那么输出是1,若是不同的人,输出是0。这就把人脸识别问题转换为一个二分类问题,训练这种系统时可以替换Triplet loss的方法

最后的逻辑回归单元怎么处理:

比如说sigmoid函数应用到某些特征上,输出y^\hat y会变成:

y^=σ(k=1128wif(x(i))kf(x(j))k+b)\hat y = \sigma(\sum_{k = 1}^{128}{w_{i}\| f( x^{( i)})_{k} - f( x^{( j)})_{k}\| + b})

把这128个元素当作特征,然后把他们放入逻辑回归中,最后的逻辑回归可以增加参数wiw_{i}bb,就像普通的逻辑回归一样。然后在这128个单元上训练合适的权重,用来预测两张图片是否是一个人

y^\hat y的另外一种表达式为:

y^=σ(k=1Kwk(f(x(i))kf(x(j))k)2f(x(i))k+f(x(j))k+b)\hat y=\sigma(\sum_{k=1}^Kw_k\frac{(f(x^{(i)})_k-f(x^{(j)})_k)^2}{f(x^{(i)})_k+f(x^{(j)})_k}+b)

这个公式也被叫做χ2\chi^{2}公式,也被称为χ\chi平方相似度

上面神经网络拥有的参数和下面神经网络的相同(编号3和4所示的网络),两组参数是绑定的,这样的系统效果很好

如果这是一张新图片(编号1),当员工走进门时,希望门可以自动为他们打开,这个(编号2)是在数据库中的图片,不需要每次都计算这些特征(编号6),可以提前计算好,当一个新员工走近时,使用上方的卷积网络来计算这些编码(编号5),和预先计算好的编码进行比较,然后输出预测值y^\hat y

总结:把人脸验证当作一个监督学习,创建一个只有成对图片的训练集,不是三个一组,而是成对的图片,目标标签是1表示一对图片是一个人,目标标签是0表示图片中是不同的人。利用不同的成对图片,使用反向传播算法去训练Siamese神经网络

Last updated