AI100_机器学习日报 2017-10-08
@ 好东西传送门 出品,由@AI100运营, 过往目录 见 http://ai100.com.cn
订阅:关注微信公众号 AI100(ID:rgznai100,扫二维码),回复“机器学习日报”,加你进日报群
今日焦点 (5)
segmentfault:你只配娱乐 网页链接 2017-10-08 23:04
视觉 算法 自然语言处理
【咦?浏览器都能做人脸检测了?】Shape Detection API 的发布已经有一些时日,其主要的提供的能力是给予前端直接可用的特征检测的接口(包括条形码、人脸、文本检测)。本文将简单的对其进行介绍,对前端进行人脸检测进行普适性的讲解。(本文不讲算法~望轻拍) 1 背景与场景 人脸检测(Face Detection)算是老生常谈的课题了,在诸多行业应用广泛,例如金融、安防、电子商务、智能手机、娱乐图片等行业。其中涉及的技... http://hao.memect.cn/bm4cj
[img=20,20][/img] wx:孙奕帆 网页链接 2017-10-09 04:50
公告板 会议活动 入门 深度学习 视觉 算法 应用 资源 ICCV ICLR ICML PCA 崔立明 代码 会议 矩阵 可视化 课程 论文 社交网络 神经网络 推荐系统 张弛
「学界 | ICCV 2017 spotlight论文解读:如何提高行人再识别的准确率」AI科技评论按:本文作者孙奕帆,首发于知乎专栏「行人重识别」,AI科技评论获其授权转载。文章链接:https://arxiv.org/abs/1703.05693代码链接:https://github.com/syfafterzy/SVDNet-for-Pedestrian-Retrieval 一、背景简介近年来,行人再识别问题(Person-reID)研究热度逐渐上升。与人脸识别相比,它在采集图像时不需要行人主动配合,在安防等领域具有极大的应用潜力。基于深度学习的行人再识别方法,在近几年快速进步,在绝大部分公开数据集上,深度学习特征均超过了手工设计特征。这篇文章的工作主要围绕利用如何更好地学习的深度特征,提高行人再识别的准确率进行。然而,这篇文章实际上没有具体针对行人再识别的特有问题进行分析、优化,笔者认为该方法在小数据集问题上,该方法具有一般性意义,并且,该方法对CNN特征的物理意义开展了一些有趣的思考。 二、Motivation首先需要说明的是,SVDNet基于这样一个对CNN权向量的简单解读:假设CNN的一层网络,其输入是I,输出是O,权矩阵是W,那么O=W'*I运算是在做线性投影,而W中所含的权向量则是一组投影基向量。当训练一个用于提取re-ID问题中行人特征的深度卷积神经网络(CNN)时,与在其它所有典型的深度学习训练一样,通常所学到的权向量是“杂乱无章”的,这种杂乱无章体现在,网络同一层中的权向量,通常是存在较强的相关性(注意不是线性相关linear dependent)。这种相关性,对于特征表达可能会造成不必要甚至是非常有害的冗余。例如下图中,假设网络用于提取特征的特征层含有3个权向量,红色和粉色所代表的的权向量几何上更靠近,而蓝色的权向量相对较远,那么,当一个行人图像进入网络中后,它会最终投影到这3个权向量上,形成一个3维的特征,而在红色和粉色上的投影结果将会非常接近。这就使得,在蓝色上的投影结果相较之下无足轻重了,很有可能造成一些误判。因此,我们希望对于特征表达层(该层的输出作为行人图像的特征),它的权向量是正交的。这里说远一点关于深度学习中的正交约束。其实,正交约束在深度学习中近几年并不少见。例如ICLR2016年的Reducing Overfitting in Deep Networks by Decorrelating Representations(arXiv:1511.06068),以及同样ICCV2017年的一篇工作arXiv:1511.06068。此外,诸如whitened network,以及ICML2017年的generalized whitened network,也都可以认为利用了正交化在深度学习种可能带来的好处。不过,值得注意的是,这些工作都是让把feature不同维度的值当成一个变量,希望不同维度上的变量是相互独立的。而SVDNet这篇工作避开了这个做法,希望权向量是正交的。在paper中,出于严谨的考虑,没有解释这两种做法的差异。笔者认为,这样做实际上是有巧妙意义的。受限于深度学习的训练方式,对特征施加正交约束时,只能在一个minibatch里去求feature的协方差矩阵,并要求该矩阵是对角阵,这种做法本身是无奈之举。而SVDNet这种做法避开了这个困难,它其实借助了这样一个思想:每一个权向量,都是相应特征相应维度上的模板(exemplar)或者代理(agent)。这种解读在最近的很多工作中都有所体现。 三、训练方法RRI——如何在CNN训练中,对权向量施加正交约束先说怎么做的,后面再解释为什么这么做。做法非常简单,分为3步,称之为Restraint and Relaxation Iteration (RRI):1、去相关——每次训练模型收敛之后,对特征表达层的权矩阵W进行奇异值分解,即W=USV',然后,用US去取代原来的W,这时,W变成了一个正交阵(每个权向量彼此正交),且新的权向量是原来权矩阵WW'的本征向量。经过这样一次去相关之后,原本已经收敛的模型偏离原先的局部最优解、在训练集上的分类损失变大了。2、紧张训练(Restraint)——固定住步骤1中的W不更新,学习其它层参数,直至网络重新收敛。需要注意的是,在这种情况下,网络会收敛到一个次优解:因为它有一层的W是受限制。因此,在接下来,我们会取消这个限制,继续训练。3、松弛训练(Relaxation)——在步骤2之后,取消W固定的限制,这个时候,网络会发现对于拟合训练样本会这个目标会有一个更好的解:请注意,仅仅是针对拟合训练样本这个目标。我们实验发现,这个模型使用在训练集上(包含全新的ID)时,它的泛化能力是相对较弱的。而在步骤3之后,W里的权向量重新变的相关起来。因此,我们把这3步迭代起来,形成RRI,直最终收敛。 四、RRI中发生了什么?在RRI中,每个Restraint阶段后,权向量被去相关了、W变成了正交矩阵、ReID的准确度提升了;而在每个Relaxation阶段后,权向量重新相关起来,ReID的准确度停滞甚至略微降低(相较于上一个Restraint)。但是,比较Relaxation阶段,我们可以发现,W正交度S(W)在提升,而Reid的准确度也在提升,直到二者几乎同时达到了收敛状态。见下图:上图是本文最重要、最有趣的一张图,它对SVDNet这个方法的原理起到了一种“知其然、知其所以然“意义上的证明。图中S(W)——用来衡量W正交度的变量定义本文不再叙述,非常简单直观,关心的同学可以去查看论文。有趣的地方在于:紧张训练阶段,reID性能提升;而放松训练阶段,reID性能降低。这似乎与我们人类的学习规律类似:提倡张弛结合,紧张时进步,而交替地放松,是为了积累。 五、性能SVDNet 方法的性能,在2017年初接近当时的state of the art。而且,为了方法的纯粹性,SVDNet没有采用除了“镜像”之外的任何图像增强,输入图像也是采用baseline模型的默认尺寸。具体性能比较见论文,这里仅展示一下在market-1501数据集上的对比。采取时下常用的一些预处理及数据增强后,SVDNet水平进一步提高。例如在market-1501上,在采用256*128这样的图像尺寸之后,resnet-backboned SVDNet能够达到约84+%的rank-1准确度、65+%的mAP。进一步采用random crop数据增强后,能够达到88% R-1 accuracy和 68%的mAP。在DukeMTMC-reID数据集上,SVDNet的表现相对更为抢眼。另外,值得一提的是,SVDNet在caffenet这种老古董网络结构上也取得非常不错的性能。这个特点在其他方法中通常是难以做到的(当然,知识蒸馏等方法或许也能达到)。 六、有趣的关键——为什么用SVD来对W去相关关于为什么用SVD来对W进行去相关,文中简单做了一些证明:任意两个样本x1和x2,给定它们在EigenLayer之前的特征h,考察它们在线性投影后的距离,用W(=USV‘)和US作为线性投影层的权矩阵,两种情况下,样本间的距离是严格保持不变的。而用其它一些去相关方法,样本间的距离发生改变,且实验验证均降低了“去相关操作”后的reid性能。详细实验和推导证明见论文。文中关于上述保距去相关的证明公式非常明了,然而,“想”一个做法比“证明”一个做法远远要难的多。作者这个做法其实最早来自于一个直观解读:CNN的每个线性层把输入投影到了新的特征空间,CNN在训练过程中,学到了很有鉴别力的投影基向量,也就是W中的各个权向量。以及一个思考:如果CNN告诉我们,一组权向量非常好,但是,CNN有点语无伦次、重复累赘,能不能让CNN清晰地告诉我们,这组权向量所代表的那些投影基向量,其等效的本质(正交基)是什么?举个极端的例子,假设某一层的权向量有3个,并且是是2维的,分别是v1=(0,1),v2=(0,1),v3=(1,0),显然,这个权向量结果是不合理的,因为肯定只需要2个权向量就足够了,那么,问题来了,CNN认为(0,1)和(1,0)两个投影方向上的结果是否同样重要呢?我们是否可以简单地保留v1和v3,直接丢掉v2呢?我们直觉上会觉得,不是这样的,CNN试图告诉我们,在(0,1)上的投影结果更重要,SVDNet中的这个去相关方法,就是将CNN学到的投影向量转换到一组正交基上、并完全尊重、采纳CNN学到的知识本质的方法。PCA代替SVD,会更好吗?关于SVD去相关,还有另一个有趣的讨论,是在paper 得到初审结果之后,一位审稿人提出的,而这个问题,也被不少读者提出:那就是,如果对W进行PCA,也能得到一个正交的矩阵,而且在其它数据处理的地方,经验通常是:PCA总是优于SVD。那么,对W进行PCA到底行不行?用W进行PCA会不会更好?笔者认为这是一个非常棒的问题。首先,用PCA对权向量进行去相关,本身是完全可以的,正如文中对比的QR分解等方法一样。而且PCA去相关,同样可以嵌入到RRI之中,不断提高SVDNet的性能。笔者在rebuttal中,做了实验,用PCA代替SVD,能够获得仅仅轻微低于SVDNet方法的性能。但是,大家应该注意到,PCA和SVD虽然数学意义非常不同,但是,二者在具体运算上,是很相似的:PCA多一个0-均值化运算。而实际上,权向量本身是非常接近0均值的,因此,两种方法在最终效果上比较接近,其实是非常自然的。然而,笔者还想指出,在SVDNet的去相关操作中,只有使用SVD是严格的、具有数学意义的,而PCA不是。首先,简单地来看文中的公式:用US去替代W是保证替换权矩阵后、任意两个样本的距离不发生改变,因此保留了CNN原有的鉴别能力,这是非常严格的。更重要的是,PCA和SVD在去相关时的数学意义完全不同,看如下的示意图:假设CNN学到了一个2X2的权矩阵,即有2个权向量,分别是W1和W2。现在,我们分别用SVD和PCA对W这个矩阵进行处理,SVD会得到左边所示的两个绿色正交向量S1和S2,S1方向上的投影结果将会被乘以相对较大的权系数;PCA则会得到右图所示的两个红色正交向量(实际上,P1的向量长度会是0,即P1方向上的投影结果无足轻重)。在这个示意图中,显然,PCA是不合理的:如果CNN认为黑色的W1和W2是重要的投影方向,那么,直观上我们也能感受到,S1(或者P1)方向上的投影结果将是非常重要的。而且,PCA在得到P1和P2时,实际上不是把W1和W2当成两个向量来处理。PCA实际上是把W1和W2当成两个点的坐标,求这两个点散布最大的方向(P2>1),这样做是缺乏数学意义的。 七、另一个直观解读本文对CNN得权向量,除了做空间上的投影解读外,还暗示了一种解读,在文中受篇幅限制未能展示,那就是——权向量实际上是用于产生特征的模板。以caffenet为例,当我们采用FC7的输出作为特征时,实际上是在拿FC6的特征去与FC7的4096个模板进行相似性比较(向量内积运算),并将4096个相似值作为最终的特征。在这个意义上,SVDNet可以认为是让获取特征的模板变得更为丰富。利用Yosinski在2015年ICML[1311.2901] Visualizing and Understanding Convolutional Networks中提供的深度特征可视化工具,我们可以对最大激活指定神经元的输入进行可视化,从何直观感受一下这些潜在模板的真面目。上图中,第一行展现的是5个高度相关的权向量所代表的的神经元所对应的模板图像,第二行展现的是正常训练方法中,挑选出的5个不相关权向量所代表的神经元所对应的的模板图像,第三行则是通过SVDNet训练方法后,任意的5个权向量对应的模板图像。一个直观感受是:在baseline方法中,隐含了大量高度相似的模板图像,而经过SVDNet之后,所有的模板变得不相像,因此特征更加丰富了起来。 八、在其它视觉任务上的推广到这里,大家应该同意,SVDNet并没有专门针对行人的固有特点做量身定制的分析与优化。从上图,我们也可以直观感受到,SVDNet训练得到的神经元更加丰富,达到了的降低过拟合的作用。这种机制在其它视觉任务上或许也有一定的效果。我们还在探究之中。从目前的实验结果来看,SVDNet在分类任务上有一定的提高效果。在Cifar-10分类任务中,用resnet-20做baseline,rank-1 accuracy从91.8%提高到了93.5%。————— 给爱学习的你的福利 —————3个月,从无人问津到年薪30万的秘密究竟是什么?答案在这里——崔立明授课【推荐系统算法工程师-从入门到就业】3个月算法水平得到快速提升,让你的职业生涯更有竞争力!长按识别下方二维码(或阅读原文戳开链接)抵达课程详细介绍~———————————————————— via: http://mp.weixin.qq.com/s?__biz= ... e=0#wechat_redirect
爱可可-爱生活 网页链接 2017-10-08 13:46
深度学习 算法 代码 聚类
【PyTorch实现的多种降维/谱聚类方法】’PyTorch-Spectral-clustering - [Under development]- Implementation of various methods for dimensionality reduction and spectral clustering implemented with Pytorch' by Dimitris Kastaniotis GitHub: http://t.cn/RO4uSds
爱可可-爱生活 网页链接 2017-10-08 13:34
经验总结 算法 自然语言处理 Josh Gordon Marianne Linhares Monteiro Sara Robinson 博客 分类
【Keras文本分类简介:Stack Overflow帖子自动标记】《Intro to text classification with Keras: automatically tagging Stack Overflow posts | Google Cloud Platform》by Sara Robinson, Josh Gordon, Marianne Linhares Monteiro http://t.cn/RO4EQXh
技术头条 网页链接 2017-10-08 12:10
算法 自然语言处理 SVM 决策树 统计
【多种贝叶斯模型构建及文本分类的实现:本文针对四大模型之一的分类进行讨论。分类算法包括回归、决策树、支持向量机、贝叶斯等,显然,不少涉及机器学习的知识(随后会写些机器学习专题)。本文重点介绍贝叶斯分类,涉及朴素贝叶斯模型、二项独立模型... 详见:http://t.cn/RO4KIk2 分享自@技术头条
最新动态
爱可可-爱生活 网页链接 2017-10-08 08:08
深度学习 资源 Sebastian Raschka 课程 视频
【TensorFlow深度学习入门】《An Introduction to Deep Learning with TensorFlow - YouTube》by Sebastian Raschka http://t.cn/ROUYEZf GitHub: https ://github .com/rasbt/pydata-annarbor2017-dl-tutorial
爱可可-爱生活 网页链接 2017-10-08 07:18
深度学习 自然语言处理
【(TensorFlow)序列语义嵌入工具包】“SSE(Sequence Semantic Embedding) - an encoder framework toolkit for NLP related tasks and it's implemented in TensorFlow by leveraging TF's convenient DNN/CNN/RNN/LSTM etc.” by eBay GitHub: https ://github .com/eBay/Sequence-Semantic-Embedding
爱可可-爱生活 网页链接 2017-10-08 06:31
深度学习 算法 论文 神经网络
《Light Cascaded Convolutional Neural Networks for Accurate Player Detection》K Lu, J Chen, J J. Little, H He [National University of Defense Technology & University of British Columbia] (2017) http://t.cn/ROU0fJ9
大数据_机器学习 网页链接 2017-10-08 04:24
算法 KNN 聚类
机器学习之寻找KMeans的最优K >>>> 机器学习, KMeans, mahout, K-Means聚类算法是最为经典的,同时也是使用最为广泛的一种基于划分的聚类算法,它属于基于距离的无监督聚类算法。...算法简单实用,在机器学习算法中占有重要的地位。对于KMeans算法而言,如何确定K值,确实让人头疼的事情。 最近这几天...全文: http://m.weibo.cn/5291384903/4160432442198652
大数据_机器学习 网页链接 2017-10-08 02:24
R语言
R语言画曲线图 >>>> R, 画图,本文以1950年到2010年期间我国的火灾统计数据为例,数据如下所示: (0)加载数据data<-read.csv("E:\MyDocument\p\Data\1950~2010火灾情况.csv") x=t(data[1]) y=t(data[2]) z=t(data[3])w=t(data[4]) http://t.cn/RbDjrvp 来自 人工智能AI与大数据技术实...全文: http://m.weibo.cn/5291384903/4160402219287666
大数据_机器学习 网页链接 2017-10-08 01:44
算法 分类 聚类
机器学习 >>>> ER算法; 监督学习与无监督学习 机器学习按照训练数据是否有“先验知识”,一般划分为三类:1) 监督学习(supervised learning)2) 无监督学...共有几百种不同的机器学习算法。 机器学习算法类别 分类与聚类 Classification (分类)给定一堆样本数据以及这些数据所属的类别标签,...全文: http://m.weibo.cn/5291384903/4160392144540065
|