深度学习 - 训练技巧 - 初始化、Dropout 和 BN

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37352167/article/details/88952380

深度学习 - 训练技巧

参数初始化

  1. 不能以全 0 初始化参数

    考虑全连接的深度神经网络,同一层中的神经元的结构都是相同的,如果参数也相同则意味着每个神经元完全一样。那么前向与反向传播的取值都是一样的,学习将是对称的,同一层中的各个参数始终都是相同的。

  2. 随机生成小的随机数

  3. 标准初始化

    初始化参数为取值范围 ( 1 d , 1 d ) (-\frac{1}{\sqrt{d}},\frac{1}{\sqrt{d}}) 的均匀分布, d 是一个神经元接受的输入维度。

  4. 偏置初始化

    可以设置为 0 或 较小的数,不会导致参数对称问题。

Dropout

Dropout 是指在训练中,以一定的概率临时随机让部分神经元关闭。例如:当值设置为 0.5,则意味着每次训练中将会有一半的神经元关闭,那么两次训练才会将所有神经元训练完成,相当于每次迭代都在训练不同结构的神经网络。

类比于 Bagging 方法,Dropout 可被视为神经网络的模型集成方法。

Dropout 中要给每一个神经元赋予一个概率系数,训练阶段中会以概率系数 P 随机生成一个取值为 0 或 1 的向量,代表每个神经元是否要丢弃。如果取值为 0 ,则该神经元不参与此次迭代。测试阶段则是前向计算,每个参数要乘以概率系数 P,以恢复神经元。

Batchnormalization(BN)

神经网络训练的本质是学习数据分布,如果训练数据与测试数据的分布不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数进行归一化处理。

机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢?BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

如果实例集合 <X,Y> 中的输入值 X 的分布总变,则不符合 IID假设,网络模型很难稳定的学规律。

详细介绍可见 Batchnormalization

①不仅仅极大提升了训练速度,收敛过程大大加快;

②还能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果;

③另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。

猜你喜欢

转载自blog.csdn.net/weixin_37352167/article/details/88952380