新闻中心

您当前的位置: 首页 > 新闻中心 > 公司新闻

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

发布时间:2024-09-09 12:50:02 浏览:

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

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


  • Require:学习率 \\epsilon_k 、初始参数 \\vec\	heta
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 计算梯度估计\\hat{g}\\leftarrow \\frac{1}{m}\
abla_\\vec{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\\vec{\	heta}, \\vec{y}^{(i)})
  • 参数更新\	heta \\leftarrow \	heta - \\epsilon \\hat{g}
  • end while

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

\\sum_{k=1}^\\infty \\epsilon_k=\\infty \\\\

并且

\\sum_{k=1}^\\infty \\epsilon_k^2 < \\infty \\\\

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


  • Require:学习率 \\epsilon_k 、动量参数 \\alpha 、初始参数 \\vec\	heta 、初始速度 \\vec{v}
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 计算梯度估计\\vec{g}\\leftarrow \\frac{1}{m}\
abla_\\vec{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\\vec{\	heta}, \\vec{y}^{(i)})
  • 计算速度更新: \\vec{v}\\leftarrow \\alpha \\vec{v}- \\epsilon \\vec{g}
  • 参数更新\\vec{\	heta}\\leftarrow \\vec{\	heta}+ \\vec{v}
  • end while

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


  • Require:学习率 \\epsilon 、动量参数 \\alpha 、初始参数 \\vec\	heta 、初始速度 \\vec{v}
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 参数临时更新: \	ilde{\	heta}\\leftarrow \\vec{\	heta}+ \\alpha\\vec{v}
  • 计算梯度(在临时点)\\vec{g}\\leftarrow \\frac{1}{m}\
abla_\	ilde{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\	ilde{\	heta}, \\vec{y}^{(i)})
  • 计算速度更新: \\vec{v}\\leftarrow \\alpha \\vec{v}- \\epsilon \\vec{g}
  • 参数更新\\vec{\	heta}\\leftarrow \\vec{\	heta}+ \\vec{v}
  • end while

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


  • Require:全局学习率 \\epsilon 、初始参数 \\vec\	heta 、小常数 \\delta (通常取 10^{-7} )
  • 初始化梯度累积变量 \\vec{r}=0
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 计算梯度\\vec{g}\\leftarrow \\frac{1}{m}\
abla_\\vec{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\\vec{\	heta}, \\vec{y}^{(i)})
  • 累积平方梯度: \\vec{r}\\leftarrow \\vec{r}+ \\vec{g}\\circ \\vec{g}
  • 计算更新: \\Delta \\vec{\	heta}\\leftarrow -\\frac{\\epsilon}{\\delta + \\sqrt{\\vec{r}}}\\circ \\vec{g} (这里的根号运算,是对向量逐元素开根号)
  • 参数更新\\vec{\	heta}\\leftarrow \\vec{\	heta}+ \\Delta \\vec{\	heta}
  • end while

其中, \\vec{x}\\circ \\vec{y}=(x_1*y_1, x_2*y_2, ...,x_n*y_n)

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


  • Require:全局学习率 \\epsilon 、衰减速率 \\rho 、初始参数 \\vec\	heta 、小常数 \\delta (通常取 10^{-6} )
  • 初始化梯度累积变量 \\vec{r}=0
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 计算梯度\\hat{g}\\leftarrow \\frac{1}{m}\
abla_\\vec{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\\vec{\	heta}, \\vec{y}^{(i)})
  • 累积平方梯度: \\vec{r}\\leftarrow \\rho\\vec{r}+ (1-\\rho)\\vec{g}\\circ \\vec{g}
  • 计算更新: \\Delta \\vec{\	heta}\\leftarrow -\\frac{\\epsilon}{\\sqrt{\\delta+\\vec{r}}}\\circ \\vec{g} (这里的根号运算,是对向量逐元素开根号)
  • 参数更新\\vec{\	heta}\\leftarrow \\vec{\	heta}+ \\Delta \\vec{\	heta}
  • end while

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


  • Require:全局学习率 \\epsilon 、衰减速率 \\rho 、动量系数 \\alpha 、初始参数 \\vec\	heta 、初始速度 \\vec{v}
  • 初始化梯度累积变量 \\vec{r}=0
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 参数临时更新:\	ilde{\	heta}\\leftarrow \\vec{\	heta}+ \\alpha\\vec{v}
  • 计算梯度\\vec{g}\\leftarrow \\frac{1}{m}\
abla_\	ilde{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\	ilde{\	heta}, \\vec{y}^{(i)})
  • 累积平方梯度: \\vec{r}\\leftarrow \\rho\\vec{r}+ (1-\\rho)\\vec{g}\\circ \\vec{g}
  • 计算速度更新: \\vec{v}\\leftarrow \\alpha \\vec{v}- \\frac{\\epsilon}{\\sqrt{\\vec{r}}}\\circ \\vec{g} (这里的根号运算,是对向量逐元素开根号)
  • 参数更新\\vec{\	heta}\\leftarrow \\vec{\	heta}+ \\vec{v}
  • end while

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


  • Require:全局学习率 \\epsilon 、矩估计指数衰减速率 \\rho_1\\rho_2 (建议0.9,0.999,区间[0, 1)内)、初始参数 \\vec\	heta 、小常数 \\delta (默认 10^{-8}
  • 初始化一阶和二阶矩变量 \\vec{s}=0, \\ \\vec{r}=0
  • 初始化时间步 t=0
  • while 停止准则未满足 do
  • 从训练集中采包含 m 个样本 \\{\\vec{x}^{(1)},...,\\vec{x}^{(m)}\\} 的小批量,其中 \\vec{x}^{(i)} 对应目标为 \\vec{y}^{(i)}
  • 计算梯度: \\vec{g}\\leftarrow \\frac{1}{m}\
abla_\	ilde{\	heta}\\sum_{i}L(f(\\vec{x}^{(i)};\	ilde{\	heta}, \\vec{y}^{(i)})
  • t\\leftarrow t+1
  • 更新有偏一阶矩估计: \\vec{s}\\leftarrow \\rho_1\\vec{s}+ (1-\\rho_1)\\vec{g}
  • 更新有偏二阶矩估计: \\vec{r}\\leftarrow \\rho_2\\vec{r}+ (1-\\rho_2)\\vec{g}\\circ \\vec{g}
  • 修正一阶矩的偏差\\hat{\\vec{s}}\\leftarrow\\frac{\\vec{s}}{1-\\rho_1^t}
  • 修正二阶矩的偏差: \\hat{\\vec{r}}\\leftarrow\\frac{\\vec{r}}{1-\\rho_2^t}
  • 计算更新: \\Delta \	heta\\leftarrow - \\epsilon\\frac{\\hat{\\vec{s}}}{\\sqrt{\\hat{\\vec{r}}}+\\delta} (这里的根号运算,是对向量逐元素开根号)
  • 参数更新\\vec{\	heta}\\leftarrow \\vec{\	heta}+ \\Delta\\vec{\	heta}
  • end while

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


完。

Copyright © 2012-2018 琳琅-琳琅娱乐餐具销售公司 版权所有 非商用版本  备案号:琼ICP备123123124号

搜索

平台注册入口