没有多少看论文的经验,也知道论文笔记非常重要。但是对于如何看和如何记录没有特别清晰的认识和了解,网上也找了很多相关的资料,但从看论文的思路到论文笔记的结构都因人而异各不相同。这是我第一篇论文笔记,方便查询和供各位参阅和探讨,里面也包括了笔者对论文的一些个人意见。虽然各路说法不一,还是先尝试再慢慢形成自己的套路,这是开端,是探索,笔者本着学习的态度完成这篇笔记,望一同学习和进步。
AlexNet就是由Hinton和他的两位学生发表的,该模型取得了ILSVRC2012冠军,并在这之后掀起CNN研究的热潮。
AlexNet 一开始在 ILSVARC-2010 数据集(带标签)上训练,在 top-1 和 top-5 错误率分别取得 37.5% 和 17.0% 的成绩,比以往的所有成绩都高。该网络使用了 60 million 参数和 650000 个神经元。模型使用非饱和神经元(ReLU)和应用GPU来加速训练,在全连接层使用 dropout 方法来减轻过拟合。该模型在 ILSVAC-2012 (没有标签)比赛中取得第一名的成绩, 15.3% 的 top-5 成绩比第二名的 26.2% 要好得多,也因此让深度学习开始被广泛关注。
原文图如上,使用了两个GPU进行训练,Ng将此网络介绍如下:
网络输入图像为 224 X 224 X 3 。网络顺序如下:
input -> Conv1 (LRN) -> Pool1 -> Conv2 (LRN) -> Pool2 -> Conv3 -> Conv4 -> Conv5 -> Pool5 -> Fc6 (dropout) -> Fc6 (dropout) -> Fc7 (dropout) -> Fc8 -> 输出 1000 类
其中 ReLU 在每个 Conv 和 Fc 的后面都设置有。
网络细节可以参考附录。
公式: f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
实验证明使用4层卷积网络,使用 ReLUs 达到 25% 训练误差的速度要比相同情况下使用 tanh 要快 6 倍。ReLU 加速了网络的训练。
笔者补充:
加速的原因可能因为ReLU的线性,x>0 时梯度不衰减,缓解了梯度消失的问题,加速网络收敛。
另外,ReLU简单容易计算也是其另一个优点。
ReLU也要不好的地方,x<0 出现硬饱和,神经元输出变为0,梯度自然而然为0,使得 ReLU神经元难以再更新,这也是“ReLU神经元死亡”问题,也叫“Dead ReLU Problem”,当然,有人说永久失活,私以为死亡的ReLU神经元可能通过其他同层的未死亡的神经元对梯度的反向传播来更新 W,更新的 W 重新让已死亡的 ReLU 神经元激活。所以说永久失活应该是个概率问题,即大概率或者说长时间情况下死亡的 ReLU 神经元都会保持其“死亡”的状态。
ReLU的输出不是0均值分布的,这可能会有一定的影响。
由于当时 GTX580 GPU 3GB显存的限制,作者使用两个 GPU 来进行并行训练。
公式如下图所示
其中 b x , y i b_{x,y}^i bx,yi 表示第 i 个通道上位置为 (x,y) 的值。其中 N 表示通道数,n 为设定的维度之间的关联范围。 n , k , α , β n,k,\alpha,\beta n,k,α,β 均为自定义的,文章中设定 k = 2 , n = 5 , α = 1 0 − 4 , β = 0.75 k=2,n=5,\alpha=10^{-4},\beta=0.75 k=2,n=5,α=10−4,β=0.75。累加的方向为维度(通道)方向。总结一下,LRN就是将某一元素与相邻通道相同位置的其他元素相互抑制,公式里体现在除法上。
作者将该层放在 ReLU 之后,使得 top-1 和 top-5 错误率分别下降 1.4% 和 1.2%。
笔者补充: LRN 参考了神经生物的“侧抑制”。其指被激活的神经元抑制相邻神经元。归一化的目的就是“抑制”,而LRN 就是借鉴侧抑制的思想来实现局部抑制的,据说在用 ReLU 时侧抑制很管用,不过还没有一些证明,后期读到相关论文再来补充。
参考: https://blog.csdn.net/hduxiejun/article/details/70570086
作者使用大小为3,步长为2的池化方法。和大小为2步长为2的方法比,这个方法在 top-1 和 top-5 分别减少 0.4% 和 0.3% 的错误率,同时作者发现这个方法可以阻止过拟合。
两种扩充数据的方法。
该方法就是使得全连接层的神经元以 50% 的概率随机失活。作者认为更利于学习更加鲁棒且有用的特征。
笔者补充: Ng对dropout有如下解释
在 ILSVRC-2010 上结果比当时的 best performance 要好很多,错误率如下图:
其中,论文的模型在top-5中达到 18.2% 错误率。作者做了其他工作。使用5个类似结构的CNN预测并对结果取平均,获得 16.4% 的结果;在CNN模型的最后一个池化层中添加第六个卷积层,事先训练过整个 ImageNet 2011秋 的数据集,并在 ILSVRC-2012 上进行微调获得 16.6% 的结果,将事先训练的两个CNN与前面说的 5 CNNs 模型的预测值取平均获得 15.3% 的结果。
另外,作者还对 ImageNet 2009 数据集进行训练,将其按训练集测试集对半分。模型采用论文中的模型再加上第六个卷积层,在 top-1 和 top-5 上分别获得 67.4% 和 40.9% 的错误率结果,也比当时最好的结果要好。
附录: