论文笔记:孪生神经网络(Siamese Network)

Siamese Network
原文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification》

1、四个问题

  1. 要解决什么问题?
    • 用于解决类别很多(或者说不确定),然而训练样本的类别数较少的分类任务(比如人脸识别、人脸认证)
    • 通常的分类任务中,类别数目固定,且每类下的样本数也较多(比如ImageNet)
  2. 用了什么方法解决?
    • 提出了一种思路:将输入映射为一个特征向量,使用两个向量之间的“距离”(L1 Norm)来表示输入之间的差异(图像语义上的差距)。
    • 基于上述思路设计了Siamese Network。每次需要输入两个样本作为一个样本对计算损失函数。
      • 常用的softmax只需要输入一个样本。
      • FaceNet中的Triplet Loss需要输入三个样本。
    • 提出了Contrastive Loss用于训练。
  3. 效果如何?
    • 文中进行了一个衡量两张人脸的相似度的实验,使用了多个数据库,较复杂。
    • siamese network现在依然有很多地方使用,可以取得state-of-the-art的效果。
  4. 还存在什么问题?
    • contrastive loss的训练样本的选择需要注意,论文中都是尽量保证了50%的正样本对和50%的负样本对。

2、论文概述

2.1、问题的提出与解决方案

  • 分类问题:
    • 第一类,分类数量较少,每一类的数据量较多,比如ImageNet、VOC等。这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。
    • 第二类,分类数量较多(或者说无法确认具体数量),每一类的数据量较少,比如人脸识别、人脸验证任务。
  • 文中提出的解决方案:
    • learn a similar metric from data。核心思想是,寻找一个映射函数,能够将输入图像转换到一个特征空间,每幅图像对应一个特征向量,通过一些简单的“距离度量”(比如欧式距离)来表示向量之间的差异,最后通过这个距离来拟合输入图像的相似度差异(语义差异)。

2.2、网络结构概述

在这里插入图片描述

  • 数学符号描述
    • 输入数据: X 1 X_1 X1 X 2 X_2 X2 X 2 ′ X_2^{'} X2。其中 X 1 X_1 X1 X 2 X_2 X2属于同一类, X 1 X_1 X1 X 2 ′ X_2^{'} X2属于不同类。
    • 模型: G W G_W GW。其中 W W W表示模型参数, G W G_W GW的作用就是将输入数据 X X X转换为一组特征向量。
    • 距离(文中称其为energy function): E W E_W EW。用于衡量两个输入向量转换为向量之后,两个向量之间的距离。
      • 如果采用L1距离,则公式为: E W ( X 1 , X 2 ) = ∥ G W ( X 1 ) − G W ( X 2 ) ∥ E_W(X_1, X_2)=\| G_W(X_1) - G_W(X_2) \| EW(X1,X2)=GW(X1)GW(X2)

2.3、Contrastive Loss损失函数

在这里插入图片描述

  • Y Y Y表示 X 1 X_1 X1 X 2 X_2 X2是否属于同一类。为同类,则为0;不同类,则为1。
  • P P P表示输入的总样本数, i i i表示当前样本的下标。
  • L G L_G LG表示两个样本为同类时的损失函数, L I L_I LI表示两个样本未不同类时的损失函数。
  • 使用Contrastive Loss的任务主要是设计合适的 L G L_G LG L I L_I LI损失函数,当为同类时,使得 L G L_G LG尽可能小;当不同类时,使得 L I L_I LI尽可能大。文中给出的函数如下图,现在也不常用了,推导步骤略。

在这里插入图片描述

L = 1 2 N ∑ n = 1 N y d 2 + ( 1 − y ) m a x ( m a r g i n − d , 0 ) 2 L=\frac{1}{2N}\sum_{n=1}^Nyd^2+(1-y)max(margin-d,0)^2 L=2N1n=1Nyd2+(1y)max(margind,0)2

  • 20
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值