流行的机器学习优化算法
机器学习中的优化是在给定一组输入的情况下找到正确预测的迭代过程。在每次迭代中,目标是减少预测值与实际值之间的误差范围,也称为真实值。深度学习中的优化有几种实现方式。一个好的损失优化方法应该尽可能收敛到一个全局最小值,并避免像高原、鞍座和局部最小值(如果有的话)这样的陷阱。前向传递后需要优化算法来更新模型权重。梯度下降是上述优化的一个流行例子。梯度下降的一些实现包括 Momentum 或 AdaMax。一些梯度下降方法是:
A saddle in a function space which could cause problems for optimization since there are several minimas . Nicoguaro, CC BY 3.0, via Wikimedia Commons
香草梯度下降
普通梯度下降对于简单的凸函数非常有效,但是它们往往会卡在高原或可能的局部最小值附近,因为所有边的梯度都不会进一步减小。下降也不是平滑的,有时会以锯齿形移动,这会减慢收敛速度。其他实现有助于规避其中一些问题。
公式:
- delta = — learning_rate * 梯度
- theta += 增量
Gradient Descent
势头
动量是对普通梯度下降的一种修改,其中一些动量被添加到函数的步骤中。这种势头有助于克服某些高原和局部最低点。这是通过将上一步的移动添加到当前计算的步骤来实现的。这个想法类似于将碗滚下碗,而不是停在底部,而是根据其初始动量滚过中心,然后慢慢地落到碗的底部。动量有助于减少梯度下降的振荡并平滑向最小值的移动。衰减率与前面的步骤相乘有助于衡量有多少前面的步骤要添加到当前步骤中。衰减率为 0 类似于具有大量摩擦的香草网络,而衰减率为 1 总是添加上一步是没有摩擦的永无止境的运动。通常使用 0.8 到 0.9 的衰减率值,这通常会给运动带来一些摩擦,并提供足够的动量来加快步伐但逐渐稳定下来。
公式:
- sum_of_gradient = 梯度 + previous_sum_of_gradient * decay_rate
- delta = -learning_rate * ** sum_of_gradient**
- θ += ** 三角洲**
动量公式的另一个版本是添加 (1-decay_rate) 来缩放梯度:
- sum_of_gradient = (1-decay_rate) * 梯度 + previous_sum_of_gradient * decay_rate
无论选择何种公式版本,都必须选择适当的学习率超参数,以使梯度以更平滑的方式向最小值移动。
AdaGrad(自适应梯度)
动量的问题在于,它可能很容易通过最小值,或者可能先走最陡的路径而忽略其他可能的路径,尽管最陡的路径不一定是到达最小值的最快路径。 AdaGrad 通过引入梯度平方和来惩罚沿同一方向探索下降。探索的特征梯度越多,它的平方和就越高,最终它的步长就越小。这对于稀疏特征来说非常有用,否则这些特征可能只有很小的下降步骤。每个特征参数都有自己的下降学习率,因此该算法不会严重依赖学习率超参数。由于平方和得分的快速增加,Adagrad 的缺点是最终减速到可以忽略不计的下降。
公式:
- sum_of_gradient_squared = previous_sum_of_gradient_squared + 梯度²
- delta = -learning_rate * 梯度 ** / sqrt(sum_of_gradient_squared)**
- θ ** += 增量**
RMSProp(均方根传播)
RMSProp 是 Adagrad 的改进版本,它在平方梯度总和中添加了一个衰减因子。它优先考虑当前梯度步骤,同时减少过去梯度的累积影响。这有助于加快收敛速度,因为与 Adagrad 相比,下降速度不断增加。例如,0.9 的衰减率将对当前的平方梯度应用 (1–0.9) 比例,与 Adagrad 相比,该梯度增加了 10%。
公式;
- sum_of_gradient_squared = previous_sum_of_gradient_squared * decay_rate+ gradient² * (1- decay_rate)
- 三角洲 ** =** -learning_rate ** * 梯度 / sqrt(sum_of_gradient_squared)**
- θ ** += 增量**
ADAM(自适应矩估计)
Adam 优化器使用了下降方法中最好的部分,是目前最流行的选择。它实现了 Momentum(速度)和 RMSProp 算法(稀疏特征下降)。衰减参数 - beta1 应用于通常设置为大约 0.9 的梯度总和(一阶矩)。第二个衰减参数 — beta2 也适用于梯度平方和,通常设置为 0.999 左右。
公式:
- sum_of_gradient = previous_sum_of_gradient * beta1 + 梯度 * (1 — beta1) [势头]
- sum_of_gradient_squared = previous_sum_of_gradient_squared * beta2 + gradient² * (1- beta2) [RMSProp]
- delta = -learning_rate * ** sum_of_gradient** / 平方( ** sum_of_gradient_squared** )
- theta += 增量
结论
我希望这篇文章为您提供一些基本的解释,帮助您找到适合您的机器学习模型的优化技术。请在评论部分留下您的想法和问题。谢谢
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/1354/13272818
标签:机器,gradient,梯度,sum,squared,rate,下降,算法,优化 From: https://www.cnblogs.com/amboke/p/16633316.html