深度学习(七)~神经网络常见优化方法
神经网络常见优化方法
1. 神经网络为什么要优化?
①网络结构多样性
②高维变量的非凸优化
2. 优化什么?
最优化算法有三要素:变量(Decision Variable)、约束条件(Constraints)和目标函数(Objective function)。
优化分为参数优化和超参数优化
参数: 模型f(x;Θ)中的Θ称为模型的参数,可以通过优化算法进行自动学习得到
超参数: 用来定义模型结构或优化策略
3. 梯度下降的方法
(1). 梯度下降
对所有训练样本求平均损失函数,进行优化
α是步长,也称学习率
缺点:
- (1) 对于非完全凸函数极容易陷入局部最优
- (2) 对于大数据集时计算量很大
- (3) 在接近最优区域时收敛速度非常慢,因为此时的梯度非常小
- (4) 学习率难以自适应。一般前期要加速下降,后期要抑制振荡。
常见处理方式:
随机梯度下降(随机抽取一个样本,用其求梯度并作为本次下降的梯度,但一般随机梯度下降很难收敛到最小值),或者小批量梯度下降(从样本中取小批量来求梯度,用平均值来作为本次的梯度下降)。
(2). 随机梯度下降(也称增量梯度下降法)
每次对单个样本求损失函数,进行优化
(3). 小批量梯度下降
每次对K个样本求损失函数求平均,进行优化
4. 批量大小的选择
在小批量梯度下降法中,批量大小(Batch Size)对网络优化的影响也非常大。
- 一般而言批量大小不影响随机梯度的期望,但会影响随机梯度的方差。批量越大,随机梯度的方差越小,引入的噪声越小,训练越稳定,此时可以设置较大的学习率。
- 学习率通常随着批量的增大而设置得越大.
- 批量越大,loss下降越明显;适当小的批量会更快收敛。
- 批量越大,越有可能收敛到尖锐的最小值;批量越小越有可能收敛到平坦最小值。
5. 自适应学习率调整
(1). Adagrad算法
学习速率会在一开始比较大,当靠近最优点时,学习速率会变的很小,慢慢的去收敛到最小值。
缺点: 经过一定次数的迭代依然没有找到最优点时,由于这时学习率已经非常小,很难再继续找到最优点。
(2). RMSprop算法
避免Adagrad算法中学习率不断单调下降以致过早衰减
(3). Adadelta算法
6. 梯度估计修正
(1). 动量法
动量法模拟物体的惯性来加速下行
其中vt-1表示之前累计动量,γ是动量的衰减值,通常取0.9
(2). Nesterov加速度
是动量法的改进,也称Nesterov动量法
(3). Adam算法
(4). 梯度截断
按值截断
按模截断
7. 常用优化算法小结
先放在这里后续再更新