热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论文阅读理解-DeepMetricLearningviaLiftedStructuredFeatureEmbedding

DeepMetricLearningviaLiftedStructuredFeatureEmbeddingPaperCaffe-Code摘要-提出一种样本间距离度量方法,其出发点

Deep Metric Learning via Lifted Structured Feature Embedding

Paper

Caffe-Code

摘要 - 提出一种样本间距离度量方法,其出发点在于,(一)学习样本语义特征嵌入,使得在语义嵌入空间中,相似样本映射距离更接近,不相似样本映射距离更远. (二)更好的利用网络训练中 batch 训练的优势,提出将一个 batch 内样本的成对距离向量升级为成对距离矩阵(lifting the vector of pairwise distances within the batch to the matrix of pairwise distances). 问题被转化为了一个 multiclass label 问题.

1. Introduction

度量学习和降维技术,旨在学习语义距离度量和嵌入,以使相似的样本被映射为流形中邻近点,不相似的样本被映射为距离较远的点.

给定输入图像的标签标注信息,通过训练神经网络结构,直接学习输入图像到低维嵌入之间的非线性映射函数. 网络的优化目标是将不同类的样本间的距离变大,相同类的样本间的距离变小. 判别地训练的网络模型对特征表示和语义嵌入联合训练,对类间变化更加鲁棒.

现有方法不能充分利用网络 mini-batch SGD 训练中 training batches 的优势. 主要是首先随机采样 pairs 或 triplets,以构建 training batch,再对 training batch 中各独立的 pairs 或 triplets 计算 loss.

本文方法将 training batch 内的成对距离向量转化为成对距离矩阵,并设计一种新的结构化损失函数.

首先回顾了基于判别性网络训练来学习语义嵌入的方法.

1.1 Contrastive embedding

对比嵌入是在成对数据 (xi,xj,yij) 上进行训练的.

contrastive training 最小化相同类别的成对样本间的距离,惩罚 negative 成对距离小于边缘参数 α .

代价函数[1,2]定义:

J=1mm/2(i,j)yi,jD2i,j+(1yi,j)[αDi,j]2+

其中,

m - batch 内图片数,即batchsize.

f() - 网络输出的特征嵌入.

Di,j=||f(xi)f(xi)||2

yi,j0,1 - 表示一对样本 (xi,xj) 是否是同类样本.

[]+ - 表示 hinge 函数 max(0,) 操作.

1.2 Triplet embedding

三元组嵌入是在三元组数据 {(x(i)a,x(i)p,x(i)n)} ,其中 {(x(i)a,x(i)p} 是相同类, {(x(i)a,x(i)n)} 是不同类. {(x(i)a} 是一个三元组中的参考项(anchor).

triplet training 寻找一个语义嵌入,使得 {(x(i)a,x(i)n)} 间的距离大于 {(x(i)a,x(i)p} 间的距离加上一个边缘参数 α .

代价函数[3]定义:

J=32mm/3i[D2ia,ipD2ia,in+α]+

其中,

Dia,ip=||f(xai)f(xpj)||

Dia,ip=||f(xai)f(xni)||

Figure 2. 六个样本的 training batch 的不同训练例示. 红色线和蓝色线分别表示相似和不相似的样本. 对比而言,Lifted structured embedding 能够考虑 batch 内所有的成对距离.

Figure 3. 不同嵌入方法的训练网络例示. m 表示 batch 内图片数,即batchsize. 绿色框表示一个 batch 的一个样本.

(a) 网络采用二值labels作为输入;

(b) 网络不需要 label 输入,anchor , positive 和 negetive 的顺序编码了 label 信息;

(c) 网络采用 multiclass label 作为输入.

Figure5. 随机对 training batch 采样,采用contrastive loss 和 triplet loss 失败的情况. 这里以三类为例,分别对应棕色圆、绿色方块和紫色棱形. 虚线灰色弧线表示在 hinge loss 中的边界(超出边界后,loss变为0). 品红色箭头表示对于 positives 的 negative 梯度方向.

(a)当随机采样的 negative (xj) 与其它类的样本共线时,Contrastive embedding 会失败;

(b)当随机采样的 negative (xn) 相对于 positive (xp) 和 anchor (xa) ,在边界内时,Triplet embedding 会失败;

2. Lifted structured feature embedding

基于训练集中的所有 positive 和 negetive 样本定义 loss 函数:

其中,

Pˇ - 训练集中的 positive 样本对 集合

Nˇ - 训练集中的 negative 样本对 集合

该 loss 函数面临的计算上的挑战:

  • 非平滑
  • 函数的估计和其 subgradient 的计算需要对所有的样本对进行多次最小化.

解决方案:

  • 1 - 对函数的平滑上边界进行优化;
  • 2 - 采用随机(stochastic)方法对大数据集处理.

启发点:

  • 1 - 偏向于对“困难”样本对,正如 Ji,j 的 subgradient 计算 采用的接近的 negative pairs. (it biases the sample towards including “difficult” pairs, just like a subgradient of Ji;j would use the close negative pairs).
  • 2 - 对一次采样的 mini-batch 内的所有样本信息进行利用,而不仅是单独的样本对.

key idea:

  • 加速 mini-batch 的优化,以充分利用 batch 内的全部 O(m2) 对样本信息 .

给定 batch 的 c 维特征 XRm×c ,及batch内各元素的二次方范数列向量 xˇ=[||f(x1)||22,...,||f(xm)||22]T

即可构建 密集平方距离对矩阵(dense pairwise squared distance matrix):

D2=xˇ1T+1xˇT2XXT

D2ij=||f(xi)f(xj)||22

需要注意的是,随机采样的样本对的 negative edges 具有有限的信息.

这里提出的方法并不是完全随机采样的,而是引入重要性采样元素. 随机的采样一些 positive 样本对,再对其添加一些 difficult neighbors 来训练 mini-batch. 这种处理添加了 subgradient 采用的相关信息.

Figure 4. 对于各 positive pairs的每个样本,找出其左右的 hard negative edge. batch内有 6 个样本,x3 和x4 分别与所有的其它 negative edges进行比较,以找到 hardest negative edge.

由于采用嵌套的 max 函数来寻找单个 hardest negative 往往导致网络收敛到一个 bad 局部最优解. 因此,这里采取优化其平滑上界 Jˇ(D(f(x))) . 针对各 batch, loss 函数定义如下:

BP计算过程:

其中,

3. Results

成功的:

失败的:

Reference

[1] - Learning visual similarity for product design with convolutional neural networks

[2] - Dimensionality reduction by learning an invariant mapping

[3] - Facenet: A unified embedding for face recognition and clustering


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
author-avatar
曾吾翰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有