您当前的位置:首页 > IT编程 > TensorFlow
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:【基础算法】神经网络参数优化器

51自学网 2020-01-11 23:32:23
  TensorFlow
这篇教程【基础算法】神经网络参数优化器写得很实用,希望能帮到您。

【基础算法】神经网络参数优化器

 

神经网络以及机器学习在很多情况下都涉及优化,例如最小化损失函数,就有一系列的优化算法(SGD、Adam、Adagrad等)。本文着重整理各参数优化算法的公式。

以下公式全部选自书《Deep learning 深度学习》。

 

一、随机梯度下降(SGD)

  • Require:学习率 [公式] 、初始参数 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 计算梯度估计[公式]
  • 参数更新[公式]
  • end while

多记录一点,保证SGD收敛的一个充分条件是

[公式]

并且

[公式]

随机梯度下降,就是在一个批次内使用梯度下降优化。这里不论batch_size是 1,还是一个正整数,都称为随机梯度下降。

 

二、使用动量的随机梯度下降

  • Require:学习率 [公式] 、动量参数 [公式] 、初始参数 [公式] 、初始速度 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 计算梯度估计[公式]
  • 计算速度更新: [公式]
  • 参数更新[公式]
  • end while

使用随机梯度下降优化算法时,会遇到梯度消失(陷入局部最小)的情况,带有动量的优化算法,就是利用“惯性”将当前点带出局部最小区域。

 

三、使用Nesterov动量的随机梯度下降

  • Require:学习率 [公式] 、动量参数 [公式] 、初始参数 [公式] 、初始速度 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 参数临时更新: [公式]
  • 计算梯度(在临时点)[公式]
  • 计算速度更新: [公式]
  • 参数更新[公式]
  • end while

Nesterov动量和标准动量之间的区别体现在梯度计算上。Nesterov动量中,梯度计算在施加当前速度之后,该效果相当于在标准动量方法中添加了一个校正因子。

 

四、AdaGrad

  • Require:全局学习率 [公式] 、初始参数 [公式] 、小常数 [公式] (通常取 [公式] )
  • 初始化梯度累积变量 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 计算梯度[公式]
  • 累积平方梯度: [公式]
  • 计算更新: [公式] (这里的根号运算,是对向量逐元素开根号)
  • 参数更新[公式]
  • end while

其中, [公式]

AdaGrad算法可以自适应调整学习率。缺点:累积梯度平方导致学习率过早的减小。

 

五、RMSProp

  • Require:全局学习率 [公式] 、衰减速率 [公式] 、初始参数 [公式] 、小常数 [公式] (通常取 [公式] )
  • 初始化梯度累积变量 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 计算梯度[公式]
  • 累积平方梯度: [公式]
  • 计算更新: [公式] (这里的根号运算,是对向量逐元素开根号)
  • 参数更新[公式]
  • end while

RMSProp将梯度累积改为指数加权的移动平均,在非凸设定下效果更好。

 

六、使用动量的RMSProp

  • Require:全局学习率 [公式] 、衰减速率 [公式] 、动量系数 [公式] 、初始参数 [公式] 、初始速度 [公式]
  • 初始化梯度累积变量 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 参数临时更新:[公式]
  • 计算梯度[公式]
  • 累积平方梯度: [公式]
  • 计算速度更新: [公式] (这里的根号运算,是对向量逐元素开根号)
  • 参数更新[公式]
  • end while

RMSProp是一种有效且实用的深度神经网络优化器,被广泛使用的优化器之一。

 

七、Adam

  • Require:全局学习率 [公式] 、矩估计指数衰减速率 [公式][公式] (建议0.9,0.999,区间[0, 1)内)、初始参数 [公式] 、小常数 [公式] (默认 [公式]
  • 初始化一阶和二阶矩变量 [公式]
  • 初始化时间步 [公式]
  • while 停止准则未满足 do
  • 从训练集中采包含 [公式] 个样本 [公式] 的小批量,其中 [公式] 对应目标为 [公式]
  • 计算梯度: [公式]
  • [公式]
  • 更新有偏一阶矩估计: [公式]
  • 更新有偏二阶矩估计: [公式]
  • 修正一阶矩的偏差[公式]
  • 修正二阶矩的偏差: [公式]
  • 计算更新: [公式] (这里的根号运算,是对向量逐元素开根号)
  • 参数更新[公式]
  • end while

Adam目前是最为公认的优秀自适应学习优化器,它不仅考虑了一阶动量更新,同时考虑了二阶动量。


[python] 安装TensorFlow问题 解决Cannot uninstall 'wrapt'. It is a distutils installed project
数值优化(Numerical Optimization)学习系列-概述
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。