新闻中心
【基础算法】神经网络参数优化器
发布时间:2024-09-09 12:50:02 浏览: 次
神经网络以及机器学习在很多情况下都涉及优化,例如最小化损失函数,就有一系列的优化算法(SGD、Adam、Adagrad等)。本文着重整理各参数优化算法的公式。
以下公式全部选自书《Deep learning 深度学习》。
- Require:学习率
、初始参数
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 计算梯度估计:
- 参数更新:
- end while
多记录一点,保证SGD收敛的一个充分条件是
并且
随机梯度下降,就是在一个批次内使用梯度下降优化。这里不论batch_size是 1,还是一个正整数,都称为随机梯度下降。
- Require:学习率
、动量参数
、初始参数
、初始速度
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 计算梯度估计:
- 计算速度更新:
- 参数更新:
- end while
使用随机梯度下降优化算法时,会遇到梯度消失(陷入局部最小)的情况,带有动量的优化算法,就是利用“惯性”将当前点带出局部最小区域。
- Require:学习率
、动量参数
、初始参数
、初始速度
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 参数临时更新:
- 计算梯度(在临时点):
- 计算速度更新:
- 参数更新:
- end while
Nesterov动量和标准动量之间的区别体现在梯度计算上。Nesterov动量中,梯度计算在施加当前速度之后,该效果相当于在标准动量方法中添加了一个校正因子。
- Require:全局学习率
、初始参数
、小常数
(通常取
)
- 初始化梯度累积变量
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 计算梯度:
- 累积平方梯度:
- 计算更新:
(这里的根号运算,是对向量逐元素开根号)
- 参数更新:
- end while
其中,
AdaGrad算法可以自适应调整学习率。缺点:累积梯度平方导致学习率过早的减小。
- Require:全局学习率
、衰减速率
、初始参数
、小常数
(通常取
)
- 初始化梯度累积变量
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 计算梯度:
- 累积平方梯度:
- 计算更新:
(这里的根号运算,是对向量逐元素开根号)
- 参数更新:
- end while
RMSProp将梯度累积改为指数加权的移动平均,在非凸设定下效果更好。
- Require:全局学习率
、衰减速率
、动量系数
、初始参数
、初始速度
- 初始化梯度累积变量
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 参数临时更新:
- 计算梯度:
- 累积平方梯度:
- 计算速度更新:
(这里的根号运算,是对向量逐元素开根号)
- 参数更新:
- end while
RMSProp是一种有效且实用的深度神经网络优化器,被广泛使用的优化器之一。
- Require:全局学习率
、矩估计指数衰减速率
、
(建议0.9,0.999,区间[0, 1)内)、初始参数
、小常数
(默认
)
- 初始化一阶和二阶矩变量
- 初始化时间步
- while 停止准则未满足 do
- 从训练集中采包含
个样本
的小批量,其中
对应目标为
- 计算梯度:
- 更新有偏一阶矩估计:
- 更新有偏二阶矩估计:
- 修正一阶矩的偏差:
- 修正二阶矩的偏差:
- 计算更新:
(这里的根号运算,是对向量逐元素开根号)
- 参数更新:
- end while
Adam目前是最为公认的优秀自适应学习优化器,它不仅考虑了一阶动量更新,同时考虑了二阶动量。
完。