梯度下降优化算法可视化

介绍

在多层感知器(MLPS)中,我们使用tanh或sigmoid函数作为激活函数来进行机器学习,而不是使用基于阈值步长函数的逻辑对McCulloch Pitts神经元的苛刻判断。MLPs为输入提供了平滑且有界的实际值输出函数,具有良好的定义导数的优点,使学习权重更容易。我们可以看到,学习这些权重和偏差的问题是一个优化问题,并对其应用不同的算法。假设这里的函数是损失为L (w, b)的sigmoid logistic函数。

梯度下降优化算法可视化

梯度下降优化算法可视化

损失函数,最小化(训练目标)

为这些算法提供视觉效果和它们的聚合方式将为设计师选择最佳选择提供深刻的见解。现在,假设我们没有学习权重的算法。我们将如何处理这个学习问题?随机猜测将是我们的方法,我们的大脑会有一些启发来确定w和b的值,使误差降到最低。让我们看看这样的过程,只需要训练两个数据点。

梯度下降优化算法可视化

W= -0.10的损失比第一次迭代W=0.50大。因此,用w和b的迭代更好的值来改变我们的方法。而且,在猜测工作中,知道随着“w”值的增加,行为接近阶跃函数,随着“b”值的增加,它向左移动是有帮助的。

显然,我们需要明确的方法来学习权重和逃避随机化方法。但为什么是梯度下降呢?为了理解它,我把我的矢量θ用∆θ检查损失是否变化。有效矢量可以从矢量加法的平行四边形法则写成θnew=θ+η·Δθ。现在,应该使用Δθ?让我们用泰勒级数来观察。η是学习率。

L(θ+ηu)= L(θ)+η* uT∇L(θ)[η通常较小,因此η2,η3,......→0]。因此选择这样的值,L(θ+ηu) - L(θ)<0即uT∇L(θ)<0。

设β是u T和∇L(θ)之间的角度。因此,当cos(β)= -1时,即当β为180°时,L(θ+ηu)-L(θ)= uT∇L(θ)= k * cos(β)将是最负的。因此,向梯度相反的方向移动。这里是梯度下降法的方程。现在,我们可以在此之后开始可视化。

梯度下降优化算法可视化

梯度下降法方程

梯度下降法方程。在一个epoch中,GD仅在考虑所有点的情况下计算一次。

可视化

理解误差曲面和等高线图的概念是必要的,然后我们很好地可视化不同的优化算法。让我们首先看一下误差曲面,其中'red'表示高误差,蓝色表示相反。

梯度下降优化算法可视化

梯度下降趋同

请注意,对于较陡峭的曲面,它会以较低的密集点表示收敛得更快。

3D表示可能很麻烦,并增加表示工作负载。相反,误差曲面的二维等高线图可以提供等效的表示能力。让我们分析一下上述误差曲面的等值线图的情况,相同的颜色表示该区域相同的误差值。此外,更陡的坡度或坡度的快速变化可以通过这张地图上的线的紧密度来分析。

梯度下降优化算法可视化

箭头表示误差值下降得更快。用恒定颜色区域表示的平面。

选择哪种梯度下降变体?

虽然Adam是许多深度学习模型的标准,但了解每个Gradient Descent优化变体的基本功能非常重要,因为根据误差曲面,不同的优化可能会表现得更好。比如,许多论文表明SGD具有momentum 加退火η也表现出色。本文的目的是通过可视化这些算法来理解,同时也试图保持简洁。在这篇文章中,只讨论了在大多数实际使用案例中观察到的一般情况和行为。

梯度下降优化算法可视化

让我们开始

现在,从上面的梯度下降可视化中可以清楚地看到,对于平坦表面来说行为缓慢,即需要更多的迭代才能在更平坦的表面上收敛。让我们考虑一个在未知区域内找到房屋的场景,同时询问地址,如果多个人指向同一个位置,我们将开始以更快的速度向相同的方向移动。

梯度下降优化算法可视化

基于Momentum 的梯度下降的方程

梯度下降优化算法可视化

指数加权平均

使用更早的surface,它肯定会表现得更好。现在,我们来看一个新的误差曲面它有一个更窄的极小曲面。

梯度下降优化算法可视化

它在最小的山谷中振荡。需要很多U形转弯,仍然比Vanilla GD更快收敛。

那么收敛有很多振荡,这意味着在相反的方向上多次切换sigmoid 函数。这是可以避免的。但是怎么做呢?

梯度下降优化算法可视化

x(2unit)-y(0.2unit)sigmoid函数图。基于Momentum 的梯度下降

Nesterov Accelerated Gradient比Momentum法更快收敛。移动一点,在那之后计算梯度,然后更新权重和偏差。

梯度下降优化算法可视化

类似的方程也适用于'b'

在这里观察一下,所有U形转弯都是在NAG的基于Momentum的方法的边界内进行的。因此,振荡减少了。校正过程要快得多。现在,我们手头有一个令人满意的解决方案,到目前为止可能不是最佳解决方案。例如,有多个最小值,它将很难以较小的振荡逃逸,但可以用不同的初始化来处理。因此,我们现在有一个令人满意的解决方案,让我们可以减少计算时间。

梯度下降优化算法可视化

比较b / w NAG(蓝色)v / s基于Momentum的方法(红色)

考虑到有大量的数据点,只有一个更新后,让我们说一百万个点将消耗太多时间。但是,仍然是通过上述证据找到的正确使用方法,即应当最小化对应于每个数据点的损失的梯度之和。为了在这种情况下的效率,可以应用概率方法的近似。

用随机方法逼近:该算法将对每个点进行更新,它将在一个epoch内为百万点进行百万次更新。同样,这是一个令人满意的解决方案,因为近似并不能保证在每一步中损失都会减少,就像投掷硬币一样。

梯度下降优化算法可视化

许多振荡与Greedy decision

许多振荡与Greedy decision。因为,每个点将参数推向最有利于它的方向。几乎像数据点相互竞争。

Greedy decision将参数推向该实例的最期望的方向,这可能是不可取的。对于narrow surfaces,这种行为会随着更多的振荡而放大。只有在观察到一定数量的点之后,我们才能通过创建批次和更新参数来解决振荡问题。此方法称为Mini Batch Gradient Descent。对于大型数据集,它会更快地收敛。实际上,k的典型值是16,32,64。

梯度下降优化算法可视化

对于k = 2本身,可以看到较少的振荡

此外,GD方法在一个epoch只需要一步。随机GD在一个时代中采取N步。用于Mini Batch GD优化的N / B步骤。NAG相对于基于Momentum的方法的相对优势仍然存在于概率方法中。而且,它们都比随机梯度下降更快。同样,这些小批量实现可以实现更小的振荡和更好的性能。

考虑调优学习率超参数的场景。在讨论了所有的算法变量之后,这个变量就被忽略了。我们不能有大的学习率,因为它会放大梯度,即使是平坦的错误表面,事实上,学习率值的逐渐变化将是一个好主意,以结束我们的分析。我们的第一个粗略的方法是尝试不同的随机学习速率,并在命中和尝试之后匹配最好的。大脑的启发式方法不是一个好的战略解决方案。其他方法可以是退火,如阶跃衰减,指数衰减,1 / t衰减可以是另一种选择。退火Momentum可以是一种更快收敛的方法,再次逃避极小值将是一个问题。

Line Search,在序列中选择一堆学习率并计算梯度以获得相对更好的η值。更新'w'和'b'以获得不同的η值并保留最佳值。它从平缓的斜坡上快速移动,而不是粘在上面。振荡取决于学习速率集的选择。但是,每一步的计算都增加。我们需要更少的计算!!解决方案是什么?让我们讨论更多。

梯度下降优化算法可视化

比Vanilla GD方法更快

小振荡,不同于Momentum和NAG。

自适应学习率,这背后的思想是我们可能需要不同的学习速率来适应不同的特征。为什么这样?变量可能是稀疏的,但如果没有正确更新或获得足够的更新,模型将无法做出正确的预测,这可能非常重要。

因此,结果方法将与其更新历史成比例地衰减。更多,更新意味着更多的衰退。

梯度下降优化算法可视化

Adagrad更新规则,类似于'b'

让我们考虑一个沿'b'初始化的情况,'w'轴上的移动很少。这意味着我们假设'w'在本质上是稀疏的,它经历了更少的更新。现在比较GD的不同变体。这里,GD是黑色,Momentum是红色,NAG是蓝色,Adagrad是绿色。

梯度下降优化算法可视化

它确保'w'具有更大的学习率以获得更多更新。对于'b',学习率随着分母的增长而降低。

从上面的可视化来看,Adagrad在接近收敛时陷入困境,不再能够朝'b'方向移动。在Adagrad中,衰减率太高,因此频繁的参数将开始接收非常小的更新。为了防止这种快速增长,我们可以通过使分数为β及其补数的总和来减少分母项。RMSprop使用此属性并在频繁变量中进行较少的激励衰减。

梯度下降优化算法可视化

以上是RMSprop的更新规则,类似的方程式存在偏差。此外,它积累了历史,但没有快速衰减。这里,“v”是用指数衰减的平均值计算的,而不是梯度的总和。

梯度下降优化算法可视化

在这里,在Adagrad的绿色上方添加的新洋红色线是RMSprop

在先前讨论的RMSprop逻辑中,省略了Momentum,可以通过考虑步骤历史来添加Momentum。将其考虑在内的方法是Adam优化方法。它适用于CNN,大型sequence-to-sequence模型。

梯度下降优化算法可视化

m(hat)是偏差校正。为什么需要进行偏差校正?

与上面讨论的方法相比,收敛通常更快。Adam似乎或多或少是现在的默认选择(β1= 0.9,β2= 0.999和?epsilon = 1e-8)。一些工作表明在某些情况下不会收敛。但它是初学者入门的绝佳选择。

我们将梯度的运行平均值取为“mt”。我们这样做的原因是我们不想过多地依赖于当前的梯度,而是依赖于在许多时间步长的梯度的总体行为。梯度的期望值是有意义的,而不是在t时刻的单点估计。而不是计算E[∇wt]我们计算太指数移动平均线。理想情况下,我们希望E(mt)等于E[∇wt)。用数学方法处理这个问题。

梯度下降优化算法可视化

Derived From m(t) = β1 ∗ m(t−1) + (1 − β1 ) ∗ g(t) | Let ∇wt as gt

在表达式两边都取期望。此外,假设所有gi的来自同一分布即E [gi] = E [g]∀i。然后应用GP与β作为common ratio。

Expectation both sides | After assumption of E[gi ] = E[g]

梯度下降优化算法可视化

Expectation both sides | After assumption of E[gi ] = E[g]

梯度下降优化算法可视化

作为M tt的期望值的偏差校正与GT的期望值相同

我希望上面的所有分析和可视化清除所有与优化算法相关的主要概念,需要开发更新的,直观的理解在哪里使用。

相关推荐