神经网络优化算法总结

由于本文公式较多,简书不支持公式渲染,公式完整版请移步个人博客参考专栏

优化算法框架

优化算法的框架如下所示:
$$
w_{t+1} = w_t - \eta_t \
\eta_t = \cfrac{\alpha}{\sqrt{V_t}} \cdot m_t
$$
其中,$w_i$为i时刻的权值,$\eta_i$为i时刻的优化量;$\alpha$为学习率,$m_t$为一阶动量,$V_t$为二阶动量。一阶动量和二阶动量都与梯度有关,如下所示:
$$
m_t = M_1(g_1,g_2,...,g_t) \
V_t = M_2(g_1,g_2,...,g_t) \
g_t = \nabla f(w_t)
$$
一阶动量和二阶动量均是历史梯度和当前梯度的函数

优化算法

固定学习率优化算法

学习率固定的优化算法均有一个特点:不考虑二阶动量(即$M_2(g_i) = I$)

随机梯度下降(SGD)

随机梯度下降时最简单的优化算法,有:$m_t = g_t,V_t = I$,带入公式有优化公式为:$\eta_t = \alpha \cdot g_t$

带动量的随机梯度下降(SGD with Momentum)

随机梯度下降加上动量项,即考虑梯度累积,有:
$$
g_t = \nabla f(w_t) \
m_t = \beta \cdot m_{t-1} + (1-\beta)\cdot g_t \
\eta_t = \alpha \cdot m_t
$$

SGD with Nesterov Acceleration

在计算梯度的时候向前考虑一步,即计算梯度的时候,计算再沿着上一次更新方向更新一次的权值的梯度,有:
$$
g_t = \nabla f(w_t + \alpha \cdot m_{t-1}) \
m_t = \beta \cdot m_{t-1} + (1-\beta)\cdot g_t \
\eta_t = \alpha \cdot m_t
$$

自适应学习率优化算法

自适应学习率的优化算法考虑二阶动量,一般来说,一阶动量决定优化方向,二阶动量自适应学习率

AdaGrad

二阶动量取梯度平方和:$V_t = \sum\limits^t_{i=1} g^2_i$,此时,$\eta_t = \cfrac{\alpha}{\sqrt{V_t}} \cdot m_t$,可以将$\cfrac{\alpha}{\sqrt{V_t}}$视为自适应的学习率:梯度不断累积,学习率单调下降。且梯度累积越快,学习率下降越快。

AdaDelta/RMSProp

二阶动量取梯度在一定范围内的平方和:
$$
V_1 = g^2_1 \
V_t = \beta \cdot V_{t-1} + (1-\beta) \cdot g_t^2
$$

Adam

Adam综合使用了一阶动量项和二阶动量项,即:
$$
g_t = \nabla f(w_t) \
m_1 = g_1,V_1 = g_1^2 \
m_t = \beta_1 \cdot m_{t-1} + (1-\beta_1)\cdot g_t \
V_t = \beta_2 \cdot V_{t-1} + (1-\beta_2) \cdot g_t^2
$$

Nadam

Nadam为使用了Nesterov和Adam的结合,有:
$$
g_t = \nabla f(w_t + \cfrac{\alpha}{\sqrt{V_{t-1}}} \cdot m_{t-1}) \
m_1 = g_1,V_1 = g_1^2 \
m_t = \beta_1 \cdot m_{t-1} + (1-\beta_1)\cdot g_t \
V_t = \beta_2 \cdot V_{t-1} + (1-\beta_2) \cdot g_t^2
$$

混合方法:Adam+SGD

很多论文指出Adam虽然收敛较快,但效果不如SGD,因此,《Improving Generalization Performance by Switching from Adam to SGD》提出了一种算法,前期使用Adam算法,后期使用SGD,如下图所示:

7241055-14c9c72390061e8a.jpeg
adam_sgd.jpeg

参考

内容参考自机器学习炼丹记:Adam那么棒,为什么还对SGD念念不忘

相关推荐
摘要:数据的上界和下界概念在人工智能领域中使用得非常普 遍,在粗糙集理论中尤为明显,随着粗集理论的不断发展, 上下边界的概念得到更大范围内的应用。本文将经典的神经 网络和粗集理论有机地结合,提出了一种基于粗集理论的神 经网络,并应用神经网络的粗糙模式建立预测模型。在粗糙 模式下每个神经网络的输入值不是一个单值而是一对值,即 上下边界数据,经典的神经网络在预测模型中采用的是单值 数据作为输入值,但是在一些应用中会产生问题,如医院要 对病人进行病情的跟踪观察,并希望对其未来的情况进行预 测,这时经典的神经网络就难以适用了,对于一个病人来 说,心跳次数,脉搏次数,血压值,体温等项指标在一天当 中需要进行几次测试,问题在于对于同一项指标每次测量值 也是不同的,因此得到的是一组数据而非单个数据,由于经 典的神经网络对于外界的信息的传导需要的是单值输入,究 竟应该取测量值中的哪个值作为输入就难以确定,通常的方 法是将测量数据进行数学平均,以均值作为网络的输入,但 是这可能导致具有重要性质数据的泛化,而粗糙集理论则可 以很好地解决这个问题,粗糙集数据的上下边界可以将病人 一天的各项指标测量值的上界和下界数据作为粗糙神经元的 输入。
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页