为什么梯度方向是函数局部上升最快的方向

谈机器学习,免不了要讲损失函数;讲损失函数,避不开梯度下降;运用梯度下降,必先确定梯度方向。为什么梯度方向是函数局部上升最快的方向? 这里首先引入[泰勒公式](https://baike.baidu.com/item/泰勒公式):若函数f(x)在包含\(x_0\)的某个闭区间[a,b]上具有n阶...

谈机器学习,免不了要讲损失函数;讲损失函数,避不开梯度下降;运用梯度下降,必先确定梯度方向。为什么梯度方向是函数局部上升最快的方向?

这里首先引入泰勒公式:若函数f(x)在包含\(x_0\)的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点x,成立下式:f(x)=f(x0)+f(x0)1!(xx0)+f(x0)2!(xx0)2+...+f(n)(x0)n!(xx0)n+Rn(x)f(x) = f(x_0) + \frac{f'(x_0)}{1!}(x - x_0) + \frac{f''(x_0)}{2!}(x - x_0)^2 + ... + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n + R_n(x)

其中,\(f^{(n)}(x)\)表示f(x)的n阶导数,等号后的多项式称为函数f(x)在\(x_0\)处的泰勒展开式,剩余的\(R_n(x)\)是泰勒公式的余项,是\((x-x_0)^n\)的高阶无穷小。

因此,根据泰勒公式有,f(x+Δx)f(x)f(x)TΔxf(x + \Delta x) - f(x) ≈ \nabla f(x)^T\Delta x

公式左边为“函数增量”,即“函数局部上升的量”,它在什么时候取最大值呢?

这里引入点积的几何定义:设二维空间内有两个向量\(\vec{a}\)和\(\vec{b}\),\(|\vec{a}|\)和\(|\vec{b}|\)表示向量\(\vec{a}\)和\(\vec{b}\)的大小,它们的夹角为\(\theta(0 ≤ \theta ≤ \pi)\),则内积定义为以下实数:ab=abcosθ\vec{a} \cdot \vec{b} = |\vec{a}||\vec{b}|\cos\theta

综上所述,结合梯度下降,可知\(\nabla f(x)^T\)和\(\Delta x\)都是向量,当梯度向量\(\nabla f(x)^T\)和\(\Delta x\)的方向相同时(\(\theta = 0\)),点积最大为1,即函数局部上升的量最大。所以梯度方向是函数局部上升最快的方向。

所以,在做梯度下降算法的时候,使用的是梯度方向的反方向!

转载须知

本文欢迎转载,但请务必保留原文链接,谢谢!

商业合作请联系邮箱:choibunbing@gmail.com