笔记:Deep fried convnets

来源:互联网 发布:sql创建存储过程语句 编辑:程序博客网 时间:2024/06/04 18:10

这是ICCV15的一篇文章。文章用kernel approximation的fastfood方法,来对CNN中的全连接层进行替换,从而减少CNN中参数的个数,减少内存的消耗。调整后的网络结构在文章中用下图表示:
deep fried convnet
总体而言,Fastfood是通过一系列简单矩阵的乘法来代替大而幂的矩阵与向量的乘积,从而减少时间和空间上的代价,这一点两篇文章没有区别。不同之处在于,在文章Fastfood-approximation kernel expansions In loglinear time中,简单矩阵通过一些规则来一次性的生成,后面不会再进行调整。而文章中的fastfood层是自适应的,通过反向传播对生成的矩阵进行调整,多了一个学习的过程。所以文章的算法主要分为两个主旨:
1)用fastfood层替换原来CNN中的全连接层;
2)通过反向传播对fastfood层进行调整。
具体而言,可以从下面几步对本文的算法进行理解:
1)fastfood:Hadamard和高斯对角阵结合后可以表现出与非稀疏的高斯随机矩阵相似的性质,相比后者,hadamard矩阵以及高斯对角阵在存储与计算的代价方面都更加小。基于这点,在对kernel进行估计的random kitchen sinks中,可以将高斯随机矩阵Z用下面矩阵V表示,V是一系列简单矩阵的乘积。相当于把一个复杂的random projection用多个简单的projection进行了替换。这样的效果是将计算从O(nd)减少为O(nlogd)(具体分析请移步fastfood原文)。
feature map
V
具体而言,组成V的简单矩阵中:
B:二进制尺度矩阵(binary scaling matrix),同时是一个对角阵,对角线是随机的{1,-1}元素。
Π:随机的序列矩阵。
H:walsh-hadamard矩阵,它的构造如下图所示:
walsh-hadamard
G:高斯尺度矩阵(Guassian scaling matrix),它也是对角阵,它的每个对角线元素都是从高斯分度独立随机的。
S:随机尺度矩阵。对于不同的kernel构造S对角线元素的方式也不同。一般意义下,大的对角线元素对应高复杂度的基函数(basis function),小的对角线元素对应简单的基函数并且低的协方差。
然后就可以将V用于计算feature map:
feature map
2)全连接层:卷积网络中的全连接层输入是一个d维的向量,输出是一个n维的向量,从第l层到第l+1层的信息传播可以看成下面矩阵乘法:
这里写图片描述
也就是对向量的一个映射。W通常是一个复杂的映射,对应的矩阵W也就是个稠密而且大规模的矩阵。之前就有文章讨论过通过随机权重来构造神经网络,并且得到了许多进展。基于这种随机的可行性,与1)中的情况类似,这个随机映射也可以通过一系列简单映射来代替,从而将复杂矩阵的乘法转换为多个简单矩阵的乘法。
3)自适应(adaptive)的fastfood:通过fastfood方法用多个简单矩阵之间的运算来替换全连接层的稠密大规模矩阵后,作者在充分利用监督信息反馈上进一步提出了自适应的fastfood层。它主要的想法是通过反向传播来对那些简单的矩阵进行一些调整,实验也证明这种基于监督信息的矩阵调整对于模型的准确性有不小的帮助。在ILSVRC上调整后错误率最多可以降低4%,同时也会超过reference model的性能。与原始的(standard)fastfood不同在于:标准的fastfood中的简单矩阵(指上面介绍的B,Π,H,G,S)通过规则生成后便不会改变,可以说完全是随机生成;而adaptive fastfood中,三个对角矩阵S,G,B在初始化后会通过网络的标准误差的导数反向传播过程(standard error derivative backpropagation)进行迭代调整。对于S,G,B三个矩阵的含义,文章这样分析:
调节B:有效的实现了特征相关性的自动判别;
调节S:学习到正确的kernel类型;
G:控制核的宽度以及它谱的不相关性。
同时作者也给出了计算反向传播算法的有效实现过程,具体可以参考原文。
随后文章从random projection以及 kernels对于本文的fastfood进行了说明。通过实验对比了CNN、CNN+Fastfood(将全连接层用fastfood层替换),CNN+Adaptive Fastfood(将全连接层用adaptive fastfood替换)这几种方案的效果,说明了adaptive fastfood方案不仅能比标准的CNN减少大量冗余的网络的参数,而且比标准fastfood能更好的利用监督信息从而提高网络性能。最后,这个网络只是替换了全连接层,它还是一个端对端的网络。

个人笔记,敬请指教~

1 0
原创粉丝点击