一、深度学习兴起背景
1. BP(back propagation)算法 (1969)
论文:Learning representations by back-propagating errors
(David E. Rumelhart, Geoffrey E. Hinton & Ronald J. Williams,Nature 1986)
误差反向传播是一种通过不断的调整权重(relative strength of connection)来减小output实际值和期待值的差距的学习过程。它最简单本质的结构是一个层级表示方法:input layer--> intermediate layers-->output layer,其中隐含层(hidden unit)不直接与输入或输出相连,学习过程中应判断隐含层是否需被激活。
总误差:E = 1/2 ∑ (output-target)²
文章采用梯度下降法来减小loss值,使得实际输出和期望输出差距最小。若想知道某一参数,例如某权重,对E值大小产生的影响,则用E值对该权重做偏导。前向传播:输入通过激活函数sigmod()抵达输出层得到输出值,output: Yj = 1/[1+e^(-Xj)]----sigmod函数;Xj = ∑Wi*Xi + b。后向传播:对前向传播得到的输出值迭代处理,以梯度下降 Θj = Θi-α·[dJ(Θ0,Θ1,Θ2...)/dΘi] 的方法重新修改权重(微分及偏导链式推导)
此外还需检查一维input层的数组是否关于中点对称,为保证对称,文章引入了intermediate层。
学习过程的缺点:梯度下降找到的是local极小值 vs. global极小值 (Solution: 一般的找到的local极小值可以认为是global极小值;node之间不需要太多的connection)
【总结:本文是bp算法的开山之作,具体地用了sigmod函数推导了bp算法的公式,但是对梯度下降的描述不够,文章之后我自己做了一些公式推导,更细化的认识了学习率、步长等参数是如何调整并优化的】
2. BP实现多层神经网络
论文:Backpropagation applied to handwritten zip code recognition
(Y. LeCun ; B. Boser ; J. S. Denker ; D. Henderson ; R. E. Howard ; W. Hubbard ; L. D. Jackel,Neural Computation 1989)
BP算法首次被应用到了zip code数字图像识别上。文章详细介绍了实验的整个流程,从数据集训练集测试集的分配、给图片做线性变换的预处理,到神经网络的输入输出参数,还首次提出了“共享权重”的技术来去检测同一个特征。在网络结构中,本文也首次提出了feature map、hidden layers、full connection的概念。通过5×5卷积核后,第一个隐层由12个8×8的特状图、26个768connection和若干free parameters(i.e. bisas)构成。
通过当时的评价指标——error rate和MSE(Mean Square Error) 说明了训练集存在的低采样率、易混淆、难分割的误差;证明BP算法可以应用到大型任务中;也强调好的神经网络应采用更多的connections且采用更少的free parameters。
【总结:文章首次详细阐述了多层神经网络的层间参数的关系,我略读了本文的作者LeCun后来写过的Gradient-based learning applied to document recognition这篇文章,document recognition的实验中,基于本文中的网络细节和网络核心思想——local kernel、shared weight、nonlinear subsampled,以及Geoffrey Hinton的BP算法和梯度下降理念,LeCun首次提出了Convolutional Neuron Network的概念和LeNet-5的网络结构】
二、深度学习网络的发展 之 分类网络
1. Alexnet
论文:ImageNet Classification with Deep Convolution Neural Network
(Alex Krizhevsky; Ilya Sutskever ; Geoffrey E. Hinton,NIPS 2012)
Krizhevsky在2012年的ISLVRC上凭借Alexnet获得了冠军。此文采用了更大的数据集及网络,8个训练层包含5个卷积层和3个全连接层。基于以上结构,Alexnet首次采用了ReLU非饱和非线性函数做激活函数,比以往常用的tanh(x)和sigmod函数快6倍找到随机梯度下降的最优解,达到25%错误率。池化层中文章采用了overlap pooling,不易产生过拟合,且错误率下降。此外,Alexnet还采用了2个GPU进行并行作业。
作者采用了两种方法减少过拟合。一种是将数据集中的图像进行数据增量,此步骤在cpu上进行操作,所以不影响CNN的计算总量。另一种是“Drop off”,每次随机丢掉hidden layers中的connection,且每次丢弃点都不同。
文章还具体介绍了随即梯度下降的具体学习过程。用本文如此大的数据量的数据集训练时,采用随机梯度下降方法进行训练。初始时设置学习率为0.01,每当模型在当前学习率下的错误率不再降低时,就把学习率除以10。本实验共调整了三次,在2块NVIDIA 3G GPU上用120万张图片训练了6天。
我关注了一下网络参数:
【输入】 227×227×3 --> 通过96个11×11×3的卷积核,步长为4,zero padding为0 --> 【conv1输出】55×55×96(两个GPU: 55×55×48)。
【conv1】55×55×48 --> 通过128个5×5的滤波器,步长为2,zero padding为0 --> 【max pooling输出】27×27×128 。
--> ······ --> 【全连接层】1000分类 1×1000
由此可知,设输入为W1, 输出W2, 感受野尺寸F, zero padding为P, 步长S,则
W2 =(W1 - F + 2*P) ÷ S + 1
当池化层不考虑zero padding时,W2 =(W1 - F) ÷ S + 1
【总结:本实验做出了ISLVRC2012的最低错误率的结果,是当时的最优化结果。本文详细罗列了网络结构中各个层级的特点和做出的优化,还有多种降低过拟合、降低错误率的方法值得学习参考。】
2. ZFnet
论文:Visualizing and Understanding Convolutional Networks
(Matthew D Zeiler, Rob Fergus. CVPR2014.)
研究背景:Alex在2012年ILSVRC运用卷积神经网络获得冠军
研究目的:用一种可视的方法深入了解Alexnet网络内部各层次所发挥的功能
研究方法:如果想知道网络中某一层提取到了什么特征或学习到了什么,就在特征图后面接一个反卷积网络,然后通过:反池化、反激活、反卷积,把特征图放大回去得到一张与原始输入图片一样大小的图片。所以整个可视化网络就变成:输入图片-->卷积--> ReLU-->最大池化-->特征图-->反池化-->反卷积-->原始图片
研究数据结果:
从作者得到的还原的特征图来看,layer 1、layer 2学习到的特征是颜色、边缘等低层特征;layer 3学习到的是纹理特征,比如网格纹理;layer 4学习到的则是比较有区别性的特征,比如狗头;layer 5学习到的则是完整的关键特征。
另外,网络模型的架构也值得注意:原始图像大小224×224(RGB)为输入。然后用96个不同的大小为7×7的卷积核进行卷积,步长为2。在第一步得到96个55×55的特征图后,接着是ReLU层、大小为3×3步长为2的max pooling层、对比度标准化层。最后两层是全连接层,和c-classes SoftMax函数。
作者还额外研究了平移、缩放、旋转等transformation对准确率的变化。证明了越前面的层、对物理变化越敏感;最后一层几乎不受影响。并且证明了平移和缩放不改变学习到的特征,旋转会改变。
作者训练结果:ImageNet--用同样的Alexnet模型进行重构,top-1错误率从35.1%降低到33.1%。CIFAR-101准确率提高了5%。但是在多类的数据集PASCAL中,这个模型并没有明显的改变
【总结:这篇文章的实验结果对实际的目标检测准确率的提升没有太多的作用,因为当识别多类时,准确率不升反降。但是这篇文章所提到的反卷积却可以当作很好的研究可视化的工具和方法】
4.
网友评论