1.问题描述
第一次接触这个问题是在大一暑假的小学期项目上,我们组的课题是一个优化问题,其中一个小问题就是证明为什么梯度的负方向是函数下降的最快方向。(全程用法语写的论文233)当时没有多大感触,后来接触到了机器学习,突然发现当时好像已经证明了这个问题。当然,数学这门学科太过庞大而复杂,我的证明仅仅是在我所认知的数学范围内的证明,尤其是对于机器学习这样一个偏工程应用的领域,希望我的证明可以给初学者一点直观的认识。因为本人能力有限,各位有发现纰漏错误之处,希望不吝赐教。
联系方式:
微信:302566290
邮箱:[email protected]
2.概念引入
需要了解的数学知识有导数,偏导数(这里就不展开了)。
我们引入梯度的概念。假设定义空间是n维的,我们现在有一个从这个n维空间映射到p维空间的函数:
p⃗ =f(x⃗ ) p → = f ( x → )
需要注意的是,这里的p⃗ 是p维的,x⃗ 是n维的。我们设
x⃗ =(x1,x2,...,xn) x → = ( x 1 , x 2 , . . . , x n )
梯度实质上是一个n维的向量(和x的维度相同)梯度的每一个维度又是什么呢?梯度的每一个维度是该函数关于这个维度的偏导数。我们将梯度记为 g⃗ radf g → r a d f ,将上面这段话公式化就是:
g⃗ radf=(∂f∂x1,∂f∂x2,...,∂f∂xn) g → r a d f = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x n )
.举一个例子,假设:
f(x,y)=(x−2)2+(y+3)2 f ( x , y ) = ( x − 2 ) 2 + ( y + 3 ) 2
.这是一种比较特殊的情况,在这种情况下,我们有n=2,p=1.那么怎么计算梯度呢?我们需要根据自变量的每一维度分别计算函数的偏导数,然后把他们组成一个向量就好了。
∂f∂x=2×(x−2) ∂ f ∂ x = 2 × ( x − 2 )
∂f∂y=2×(y+3) ∂ f ∂ y = 2 × ( y + 3 )
因此,这个函数的梯度就是
g⃗ radf=(2x−4,2y+6) g → r a d f = ( 2 x − 4 , 2 y + 6 )
然后,对于每一个给定的(x,y)我们都可以求出函数在这个点的梯度的数值(带入就可以了)。
3.证明
接下来,我们来证明我们的目标:为什么上面定义的梯度是函数在该点上升最快的方向呢?换句话讲,就是为什么函数在该点下降最快的方向是梯度的负方向呢?现在,让我们假设一个下降的方向,这个方向是随机的,我们设这个方向是
l⃗ =(l1,l2,...,ln) l → = ( l 1 , l 2 , . . . , l n )
什么意思呢?就是说我们现在处于函数的一个点上,这个点的坐标是
x⃗ =(x1,x2,...,xn) x → = ( x 1 , x 2 , . . . , x n )
我们在这点的函数值是
f(x⃗ ) f ( x → )
我们想要去到这个函数更低的地方去,这个低在数学上的体现就是函数值变小。在机器学习当中,就是我们的误差函数变小。那么我们沿着l⃗ 下降的意思就是,我们下一步将来到
f(x⃗ +l⃗ ) f ( x → + l → )
当然,由于我们的 l⃗ 方向是完全随机的,所以实际上我们并不能得知函数值到底是增大还是减小,然而这并不影响我们的证明。
根据多元函数的一阶泰勒展开公式,我们有:
f(x⃗ +l⃗ )=f(x⃗ )+∑k=1n∂f∂xk×lk+o(||x||n) f ( x → + l → ) = f ( x → ) + ∑ k = 1 n ∂ f ∂ x k × l k + o ( | | x | | n )
这个公式的证明就不在这里展开了。
我们发现,
f(x⃗ +l⃗ )−f(x⃗ ) f ( x → + l → ) − f ( x → )
就是我们沿着
l⃗ l → 方向移动前后,函数值的变化量。也就是说,只要这个值小于零,我们的函数值就在变小;而只要我们可以证明当
l⃗ l → 取到梯度的负方向时这个值小于零且绝对值最大,那么我们就证明了我们的目标。而我们知道,这个值等于(就是移项)
∑k=1n∂f∂xk×lk+o(||x||n) ∑ k = 1 n ∂ f ∂ x k × l k + o ( | | x | | n )
又因为,当我们的自变量变化值极小的时候( ||l⃗ || | | l → | | 极小),我们是可以忽略
o(||x||n) o ( | | x | | n )
这一项的。在机器学习当中,这个条件很容易被满足,因为只要我们取得的学习速率α 很小的时候,我们可以近似认为这个条件已经被满足。因此,我们现在仅剩的问题就是如何找到一个方向,使得
∑k=1n∂f∂xk×lk ∑ k = 1 n ∂ f ∂ x k × l k
小于零且绝对值最大。我们观察这一项可以发现,它其实是两个向量的数量积(scalar product),也就是
<g⃗ radf,l⃗ > < g → r a d f , l → >
(这个表示
g⃗ radf g → r a d f 和
l⃗ l → 的数量积)
根据 柯西-施瓦兹不等式,我们可以得知当且仅当这两个向量方向相同时,该数量积的绝对值取得最大值。注意,这里只是绝对值最大。我们已经胜利了一半,而最后一个小于零的条件很容易满足,我们只需要让
l⃗ =−g⃗ radf l → = − g → r a d f
这样的话,对于这两个向量来说,他们的每一个维度都互为对方的相反数,因此他们的数量积一定不可能大于零,在实际情况下,他们甚至一直小于零,到这里,我们就证明了当且仅当
l⃗ l → 的方向是负梯度方向时,函数值下降最快。