深度学习的数学基础-梯度下降法的含义与公式

应用数学最重要的任务之一就是寻找函数取最小值的点。现在我们来考察一下著名的寻找最小值的点的方法——梯度下降法。梯度下降法是神经网络的数学武器。

下面主要通过两个变量的函数来展开讨论。在神经网络的计算中,往往需要处理成千上万个变量,但其数学原理和两个变量的情形是相同的。

注:同样,这里考察的函数是充分光滑的函数。

梯度下降法的思路

已知函数z=f(x, y),怎样求使函数取得最小值的x、y呢?最有名的方法就是利用“使函数z=f(x, y) 取得最小值的x、y满足以下关系”这个事实。
image.png

这是因为,在函数取最小值的点处,就像葡萄酒杯的底部那样,与函数相切的平面变得水平。

image.png

式(1) 的含义。在函数取最小值的点的附近,函数的增量为0。不过,这个式子终归只是必要条件。

然而,在实际问题中,联立方程式(1)通常不容易求解,那么该如何解决呢?梯度下降法是一种具有代表性的替代方法。该方法不直接求解式(1)的方程,而是通过慢慢地移动图像上的点进行摸索,从而找出函数的最小值。

我们先来看看梯度下降法的思路。这里我们将图像看作斜坡,在斜坡上的点P处放一个乒乓球,然后轻轻地松开手,球会沿着最陡的坡面开始滚动,待球稍微前进一点后,把球止住,然后从止住的位置再次松手,乒乓球会从这个点再次沿着最陡的坡面开始滚动。
image.png

将函数图像的一部分放大,并看作坡面。球沿着最陡的坡面(PQ方向)开始滚动。
这个操作反复进行若干次后,乒乓球沿着最短的路径到达了图像的底部,也就是函数的最小值点。梯度下降法就模拟了这个球的移动过程。

image.png

人按照乒乓球的移动轨迹来走的话,就会沿着最短路径R1到达图像的底部(最小值)。

在数值分析领域,梯度下降法也称为最速下降法。这个名称表示沿着图像上的最短路径下降。

近似公式和内积的关系

让我们依照前面考察过的思路来将梯度下降法正式化。

函数z=f(x, y)中,当x改变∆x, y改变∆y时,我们来考察函数f(x, y)的值的变化∆z。
∆z=f(x+∆x, y+∆y)-f(x, y)

根据近似公式image.png,以下关系式成立。
image.png
图中,根据近似公式,Δz=f(x+Δx,y+Δy)-f(x,y)与Δx、Δy之间的关系式(2)成立。

我们在上一文也提到过,式(2)的右边可以表示为如下两个向量的内积形式。
image.png

请大家注意这个内积的关系,这就是梯度下降法的出发点。
image.png
式(2)左边的Δz可以用式(3) 的两个向量的内积形式来表示。

向量内积的回顾

我们来考察两个固定大小的非零向量a、b。当b的方向与a相反时,内积a·b取最小值。
image.png
向量a、b的内积为|a||b|cosθ(b为两个向量的夹角)(左图)。b为180º时(即a、b方向相反),内积的值最小(右图)。

换句话说,当向量b满足以下条件式时,可以使得内积a·b取最小值。
image.png

内积的这个性质(4)就是梯度下降法的数学基础。

二变量函数的梯度下降法的基本式

当x改变∆x, y改变∆y时,函数f(x, y)的变化∆z为式(2),可以表示为式(3)的两个向量的内积。根据式(4),当两个向量方向相反时,内积取最小值。也就是说,当式(3)的两个向量的方向恰好相反时,式(2)的∆z达到最小(即减小得最快)。
image.png

当式(3)的两个向量方向相反时,式(2)的Δz最小,换言之,就是沿着图像最陡的坡度减小。

根据以上讨论我们可以知道,从点(x, y)向点(x+∆x, y+∆y)移动时,当满足以下关系式时,函数z=f(x, y)减小得最快。这个关系式就是二变量函数的梯度下降法的基本式。
image.png

注:希腊字母η读作ita,对应拉丁字母i。这里也可以像式(4)那样使用字母k,不过大多数文献中采用η。

利用关系式(5),如果
image.png

就可以从图像上点(x, y)的位置最快速地下坡。
image.png

当满足关系式(5)时,函数图像减小得最快。

式(5)右边的向量(∂f(x,y)/∂x,∂f(x,y)/∂y)称为函数f(x, y)在点(x, y)处的梯度(gradient)。这个名称来自于它给出了最陡的坡度方向。

例题
设∆x、∆y为微小的数。在函数image.png中,当x从1变到1+∆x、y从2变到2+∆y时,求使这个函数减小得最快的向量(∆x, ∆y)。


根据式(5), ∆x、∆y满足以下关系:
(∆x, ∆y)=-η(∂z/∂x,∂z/∂y)(η为正的微小常数)
因为∂z/∂x=2x,∂z/∂y=2y,依题意可知x=1, y=2,于是有
(∆x, ∆y)=-η(2, 4) (η为正的微小常数)

梯度下降法及其用法

为了弄清梯度下降法的思路,前面我们考察了乒乓球的移动方式。由于在不同的位置陡坡的方向也各不相同,通过反复进行“一边慢慢地移动位置一边寻找陡坡”的操作,最终可以到达函数图像的底部,也就是函数的最小值点。

下山的情形也是一样的。最陡的下坡方向在每个位置各不相同。因此,要想通过最短路径下山,就必须一边慢慢地下坡一边在每个位置寻找最陡的坡度。

在函数的情况下也完全一样。要寻找函数的最小值,可以利用式(5)找出减小得最快的方向,沿着这个方向依照上述(6)稍微移动。在移动后到达的点处,再次利用式(5)算出方向,再依照上述(6)稍微移动。通过反复进行这样的计算,就可以找到最小值点。这种寻找函数f(x, y)的最小值点的方法称为二变量函数的梯度下降法

image.png

从初始位置P0出发,利用式(5)、(6)求出最陡坡度的点P1,然后从P1出发,利用式(5)、(6)进一步求出最陡坡度的点P2,即反复利用式(5)、(6),最终得以最快速地到达最小值点。这就是梯度下降法。

将梯度下降法推广到三个变量以上的情况

二变量函数的梯度下降法的基本式(5)可以很容易地推广到三个变量以上的情形。当函数f由n个自变量x1, x2, …, xn构成时,梯度下降法的基本式(5)可以像下面这样进行推广。

设η为正的微小常数,变量x1, x2, …, xn改变为x1+∆x1, x2+∆x2, …, xn+∆xn,当满足以下关系式时,函数f减小得最快。

image.png

这里,以下向量称为函数f在点(x1, x2, …, xn)处的梯度。
image.png

与二变量函数的情况一样,利用这个关系式(7),如果
image.png

就能够沿着函数减小得最快的方向移动。因此,反复依照上述(8)来移动,就能够在n维空间中算出坡度最陡的方向,从而找到最小值点。这就是n变量情况下的梯度下降法。

此外,由于式(7)、(8)是n维的,难以在纸上画出其图像。大家可以利用二变量情况下的式(5)、(6)来直观地理解。

哈密顿算子▽

在实际的神经网络中,主要处理由成千上万个变量构成的函数的最小值。在这种情况下,像式(7)那样的表示往往就显得十分冗长。因此我们来考虑更简洁的表示方法。

在数学的世界中,有一个被称为向量分析的领域,其中有一个经常用到的符号∇。∇称为哈密顿算子,其定义如下所示。
image.png

利用这个符号,式(7)可以如下表示。

image.png

注:∇通常读作nabla,来源于希腊竖琴的形象。

例1
对于二变量函数f(x, y),梯度下降法的基本式(5)如下所示。
(∆x, ∆y)=-η∇f(x, y)

例2
对于三变量函数f(x, y, z),梯度下降法的基本式(7)如下所示。
(∆x, ∆y, ∆z)=-η∇f(x, y, z)

其中,左边的向量(∆x1, ∆x2, …, ∆xn) 称为位移向量,记为∆x。

∆x=(∆x1, ∆x2, …, ∆xn)
利用这个位移向量,梯度下降法的基本式(7)可以更简洁地表示。
image.png

η的含义以及梯度下降法的要点

到目前为止,η只是简单地表示正的微小常数。而在实际使用计算机进行计算时,如何恰当地确定这个η是一个大问题。

从式(5)的推导过程可知,η可以看作人移动时的“步长”,根据η的值,可以确定下一步移动到哪个点。如果步长较大,那么可能会到达最小值点,也可能会直接跨过了最小值点(左图)。而如果步长较小,则可能会滞留在极小值点(右图)。
image.png

在神经网络的世界中,η称为学习率。通过反复试验来寻找恰当的值。

遗留问题:是否可以研究确定η方法的明确的标准?