1.介绍
这篇文章主要说如果高效的训练深层的神经网络。对于现存的模型,由于一些限制,比如梯度消失的情况,只能限于训练一些比较浅层的网络。而且这种模型的效率并不高。所以作者就提出来一种可以高效训练深层网络的方法。具体的是:训练过程当中引入辅助变量,通过更新辅助变量,来达到某一层的局部最优解。通过实验发现,这种方法可以训练64个隐藏层,每层1024个节点的网络,而训练的时间在3个小时左右。
2.Very Deep Supervised Hashing 方法
对于 N 个结合的数据 X={
xi}Ni=1∈Rd×N ,目标是通过学习获得一系列的 K bit的HashCode,
为了学习这些HashCode,我们把模型假设为 F(x,Θ) ,可以认为这个就是所要学习的模型表示。然后对于这个输出进行二值化就能够得到所要的HashCode。二值化的方式:
bi=sgn(F(xi,Θ)),sgn(x)={
1−1x⩾0x<0
下面是对于作者的特定的任务,来进行损失函数的目标函数的定义
什么样的Hash Code,才是好的Hash Code呢?
作者假设,如果学习到的HashCode,能够在后面的任务当中产生好的结果,比如对于分类任务,分类的准确性更高,那么就认为学习到的Hash Code是较为理想的。下面作者就把学习Hash Code和分类任务结合在一起,放到一个过程当中来进行学习。
损失函数的定义:
对于学习到的Hash Code,通过一个线性分类器就能够得到一个分类的结果。
假设需要分类的类别共有 C 类,每一条数据的标签为
假设这个线性的分类器的参数是: W=[w1,w2⋯wC]
那么对于学习到的一条数据的分类结果可以使用如下的公式来表示:
yi~=WTbi=[wT1bi,w