[1] 使用Relu替换之前的sigmoid/tanh作为激活函数。sigmoid一个很大的问题就是梯度饱和,当输入的数字较大(或较小)时,其函数值趋于不变,其导数变的非常的小;而ReLU有输出的部分,导数始终为1。Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
[2] 采用局部响应归一化。用激活函数将神经元的输出做一个非线性映射,tanh和sigmoid的值域是有范围的,但是ReLU激活函数得到的值域没有一个区间,所以对ReLU得到的结果进行归一化。
[3] 对原始数据进行一些变化进行数据扩充。神经网络训练的参数多,表现能力强,需要比较多的数据量,不然很容易过拟合。当训练数据有限时,可以通过一些变换从已有的训练数据集中生成一些新的数据,以快速地扩充训练数据。方法有翻转、随机裁剪、平移、颜色光照的变化。
[4] 进行重叠池化操作。在LeNet中池化是不重叠的,池化的窗口的大小和步长是相等的;在AlexNet中使用的池化是可重叠的,在池化的时候,每次移动的步长小于池化的窗口长度,论文中说,重叠的池化层更不容易过拟合。
[5] 采用Dropout抑制过拟合。对于某一层的神经元,通过定义的概率将随机将神经元置为0,这个神经元就不参与前向和后向传播。对于各个神经元的输出,要乘上训练时的删除比例再输出。
AlexNet阅读笔记
最新推荐文章于 2024-07-14 19:43:20 发布