5.参数更新
5.1 简表
概念 | 寻找能使损失函数最小的参数矩阵w的过程 |
主体思路 | 迭代优化 |
常见方法 | 梯度下降,SGD,Momentum, NAG,AdaGrad,RMsprop,Adam… |
如 torch下: |
torch.optim.Adam
5.2 学习率
目的: 加快收敛速度
常用方法:
1)先用一个大的值,等损失不在下降再用一个小的值
2)为每一个参数使用不同的学习率
3)或使用二阶导数
5.3 小批量
过程:
- 先选择n个训练样本(n<N,N为整个训练集样本总数)
- 分别训练n个样本得到n个梯度
- 对n个样本加权平均求和作为这次小批量的下降梯度
- 重复上面直到周期完整数据集都输入网络
迭代:指一个周期中小批量的数目
小批量大小:超参数 可以是 32,64,128 (一般为2的幂)
5.4 寻优方法
5.4.1 SGD系列
- 批量梯度下降(Batch Gradient Descent)
- 随机梯度下降(Stochastic Gradient Descent)
- 以及小批量梯度下降(Mini-Batch Gradient Descent)
N个样本,当小批量大小n
n=N时为BGD
n=1时为SGD
n>1,n<N时为小批量
用当前位置的负梯度方向作为搜索方向
w 梯度来自小批量
缺点:
- 可能是嘈杂的导致参数更新慢,且易收到局部最优点或者鞍点的干扰。
- 在梯度为0时,梯度详见会被卡住
5.4.2 Momentum(动量)
为随机梯度下降增加一个动量项
将梯度估计值加到原来速度上,沿着速度方向走而不是梯度方向
、分别表示本次和上次参数更新的速度,E损失函数,为摩擦常数,通常设置为0.9,会使当前速度衰减。
5.4.3 NAG (Nesterov Acceleration Gradient)
动量计算前瞻梯度,并将其与速度混合
可减少无用迭代,把梯度计算放在对参数施加当前速度之后
6. 批归一化 Batch Normalization
对每一批数据进行归一化处理,通常放在激活函数前
做法:让数据通过一个模块进行预处理,使其服从标准高斯分布,实现层面在全连接或卷积层与激活函数之间添加一个批归一化层,也叫BN层。
输入:小批量输入
输出:BN层输出
— 均值
— 方差
— 归一化
为避免除数为0使用的微小整数,尺度因子,平衡因子,训练自己学到
当=,且=时,BN层无效
BN层作用:
①增加了增个网络的梯度流
②支持更高的学习率,可以更快的训练网络
③减少算法对合理初始化的依赖性
④正则化作用
7. 正则化
不适定问题,指解不存在或解不唯一,或解的条件多,求解不适定问题方法
用一组与原不适定问题相邻近的适定问题的解去逼近原问题的解,这种方法叫正则化
过拟合:过于完美的训练数据反而不能有效的预测新样本
常用正则化方法:
①为损失函数增加正则化惩罚项
②数据增强
③随机失活
④模型集成
⑤其他,弹性正则化,随机失联,最大范数约束等
7.1 惩罚项
其中:正则化强度
正则化,其中 W第l层中第k个参数
正则化,
会使得网络稀疏,W中一些参数为0
通过对所有参数平方来抑制大数值的参数,对大参数给予高惩罚,会使参数矩阵w取值更平均。
7.2 数据增强
水平翻转、随机选择图像、截图、颜色抖动、随机旋转、伸缩变换
7.3 随机失活
每次训练只有一部分发挥作用,减少了每次训练过程中涉及参数数目,降低了训练时的网络表达能力,只用于训练过程中
7.4 模型集成
分别训练几个独立的神经网络,在测试时平均所有神经网络的预测结果。可将准确率提升几个百分点
方法:
a. 训练过程中保持神经网络的多个快照集成
b. 不同的初始化集成
c. 训练过程中不同时间点的集成
文章出处登录后可见!