单网站建设,1高端网站建设,网站设计网页首页介绍,电脑优化用什么软件好在我们没有办法得到解析解的时候#xff0c;我们可以用过梯度下降来进行优化#xff0c;这种方法几乎可以所有深度学习模型。 关于优化的东西#xff0c;我自己曾经研究过智能排班算法和优化#xff0c;所以关于如何找局部最小值#xff0c;以及如何跳出局部最小值的一些基…在我们没有办法得到解析解的时候我们可以用过梯度下降来进行优化这种方法几乎可以所有深度学习模型。 关于优化的东西我自己曾经研究过智能排班算法和优化所以关于如何找局部最小值以及如何跳出局部最小值的一些基本思想是有感触的随机梯度算法和其优化学起来倒也不难。 梯度下降算法 梯度下降法随机梯度下降法随机梯度下降算法的问题标准动量优化Nesterov动量优化 梯度下降法
梯度下降法是一个一阶最优化算法通常称为最速下降法是通过函数当前点对应梯度的反方向使用规定步长距离进行迭代搜索从而找到函数的一个局部最小值的算法最好的情况是找到全局最小值。
随机梯度下降法
但是直接使用使用梯度下降法的话每次更新参数都需要用到所有的样本样本总量太大的话就会对算法速度影响很大所以有了随机梯度下降算法。 它是对梯度下降算法的一种改进且每次只随机取一部分样本进行优化样本数量一般是2的整数次幂取值范围32~256以保证计算精度的同时提升计算速度是优化深度学习网络中最常用的一类算法。 其在训练中通常会使用一个固定的学习率进行训练即 g t ▽ θ t − 1 f ( θ t − 1 ) ▽ θ t − η ∗ g t 其中 g t 是第 t 步的梯度 η 是学习率 g_t▽_{θ_{t-1}}f(θ_{t-1})\\ ▽_{θ_t}-η*g_t\\ 其中g_t是第t步的梯度η是学习率 gt▽θt−1f(θt−1)▽θt−η∗gt其中gt是第t步的梯度η是学习率 随机梯度下降算法在优化时完全依赖于当前batch数据得到的梯度而学习率则是调整梯度影响大小的参数通过控制学习率η的大小一定程度上可以控制网络训练速度。
随机梯度下降算法的问题
随机梯度下降对大多数情况都很有效但还存在缺陷 1、很难确定合适的η且所有的参数使用同样的学习率可能并不是很有效。这种情况可以采用变化学习率的训练方式如控制网络在初期以大的学习率进行参数更新后期以小的学习率进行参数更新其实和遗传算法中的交叉变异概率似的大家可以去了解自适应遗传算法的思想道理都是一样的 2、更容易收敛到局部最优解而且当落入到局部最优解的时候不容易跳出。其实也和遗传算法可能遇到的问题类似当时是和模拟退火算法结合了解决了过早收敛问题实质思想就是增大变异概率变异了就很可能跳出局部最优了
标准动量优化
动量通过模拟物体运动时的惯性来更新网络中的参数即更新时在一定程度上会考虑之前参数更新的方向同时利用当前batch计算得到的梯度将两者结合起来计算出最终参数需要更新的大小和方向。 在优化时引入动量思想旨在加速学习特别是面对小而连续且含有很多噪声的梯度。利用动量不仅增加了学习参数的稳定性还会更快的学习到收敛的参数。 在引入动量后网络的参数更新方式 g t ▽ θ t − 1 f ( θ t − 1 ) m t μ ∗ m t − 1 g t ▽ θ t − η ∗ m t m t 为当前动量的累加 μ 属于动量因子用于调整上一步动量对参数的重要程度 g_t▽_{θ_{t-1}}f(θ_{t-1})\\ m_tμ*m_{t-1}g_t\\ ▽_{θ_t}-η*m_t\\ m_t为当前动量的累加\\ μ属于动量因子用于调整上一步动量对参数的重要程度 gt▽θt−1f(θt−1)mtμ∗mt−1gt▽θt−η∗mtmt为当前动量的累加μ属于动量因子用于调整上一步动量对参数的重要程度 在网络更新初期可利用上一次参数更新此时下降方向一致乘以较大的μ能够进行很好的加速在网络更新后期随着梯度逐渐趋于0在局部最小值来回震荡的时候利用动量使得更新幅度增大跳出局部最优解的陷阱。
Nesterov动量优化
Nesterov项Nesterov动量是在梯度更新时做出的校正以避免参数更新的太快同时提高灵敏度。在动量中之前累积的动量并不会影响当前的梯度所以Nesterov的改进就是让之前的动量直接影响当前的动量即 g t ▽ θ t − 1 f ( θ t − 1 − η ∗ μ ∗ m t − 1 ) m t μ ∗ m t − 1 g t ▽ θ t − η ∗ m t g_t▽_{θ_{t-1}}f(θ_{t-1}-η*μ*m_{t-1})\\ m_tμ*m_{t-1}g_t\\ ▽_{θ_t}-η*m_t gt▽θt−1f(θt−1−η∗μ∗mt−1)mtμ∗mt−1gt▽θt−η∗mt Nesterov动量与标准动量区别在于在当前batch梯度的计算上Nesterov动量的梯度计算是在施加当前速度之后的梯度。所以可以看成是在标准动量的方法上添加了一个校正因子从而提高算法更新性能。 在训练开始的时候参数可能离最最优质的较远需要较大学习率经过几轮训练后减小训练学习率 其实就是和自适应遗传算法的思想类似。因此也提出了很多自适应学习率的算法Adadelta、RMSProp及adam等。