谈机器学习,免不了要讲损失函数;讲损失函数,避不开梯度下降;运用梯度下降,必先确定梯度方向。为什么梯度方向是函数局部上升最快的方向?
这里首先引入泰勒公式:若函数f(x)在包含$x_0$的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点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 + \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)$,则内积定义为以下实数:$\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,即函数局部上升的量最大。所以梯度方向是函数局部上升最快的方向。
所以,在做梯度下降算法的时候,使用的是梯度方向的反方向!
本文内容转自冰部落,仅供学习交流,版权归原作者所有,如涉及侵权,请联系删除。 声明: 本平台/个人所提供的关于股票的信息、分析和讨论,仅供投资者进行研究和参考之用。 我们不对任何股票进行明确的买入或卖出推荐。 投资者在做出投资决策时,应自行进行充分的研究和分析,并谨慎评估自己的风险承受能力和投资目标。 投资有风险,入市需谨慎。请投资者根据自身的判断和风险承受能力,自主决策,理性投资。