AlexNet学习笔记
1.网络结构
1.1.结构
5个卷积层,3个全连接层,共6千万个参数(其中绝大部分来着全连接层,卷积层其实是很少的)。分成上下两部分,因为可以利用两个GPU同时训练,从而缩短训练时间。
AlexNet的输入是224*224RGB图像,输出是softmax层,1000个数表示属于1000个物体类别的可能性。
1.2.Relu
Relu虽然现在已经被大家所熟知,但它首先是在AlexNet中提出的,而以往常用的激活函数是sigmoid和tanh。这两个激活函数的弊端就是在x的绝对值较大时,导数趋近于0,使得梯度也趋近于0,也就是说它们的梯度只在x的一个很小范围内才存在(或者说能发挥作用、引起参数的显著改变)。因此使用sigmoid和tanh激活函数的模型,训练速度是比较比较缓慢的,因为大部分时候梯度都非常小。
这两个激活函数的根本问题就在于梯度在大部分区域都为0,而Relu可以解决这个问题,在x大于0的一侧,导数恒为1,因此不仅计算梯度的时间花费少,而且梯度是一个有效值,可以使参数发生改变,从而“学习”。所以使用Relu激活函数的模型,训练速度是要比sigmoid和tanh要快的,大概只需要tanh的1/4时间。
疑问:Relu为何左边的取0?难道激活值不需要负数?Relu左边的导数不也全为0?不也梯度消失?
1.3多个GPU训练
AlexNet使用了两个GPU进行训练,做法就是将卷积层中的卷积核以及全连接层中的神经元对半分在两个不同的GPU上,同时进行运算,并且在特定的层中才合并在一起,如结构图。
1.4.Local Response Normalization
LRN(局部响应归一化)是一个标准化操作,看得懂怎么操作,但是没能理解为什么要这样操作。原理似乎是生物学中的“活跃的神经元对相邻神经元的抑制现象”。
它的操作是相对于同一层神经元而言的。在某个卷积层的输出中,第(x,y)位置上第i个通道的激活值为a(x,y,i),它归一化后的值为b(x,y,i),计算公式大概就是该神经元与相邻的N个神经元的函数(N是超参数,相邻是通道方向上的相邻,仍保持在(x,y)的位置上)。
1.5.overlapping pooling
难道AlexNet之前池化不是重叠形式的?
2.过拟合问题
2.1.数据增强
(1)将256*256的图像随机裁剪成224*224
AlexNet的输入是224*224,但把图像down-sampled成256*256,是因为想在训练时再从256*256中随机crop 224*224,从而达到了数据增强的效果。对于ImageNet不是256*256尺寸的图片,先将其整体缩放使其短边为256,然后再对其长边截取中间的256。
(2)改变RGB通道的强度(没看懂)
对于某个像素Ixy,它的三个通道的值变为如下:
2.2.Dropout
posted on 2020-07-24 22:23 ZhicongHou 阅读(133) 评论(0) 编辑 收藏 举报