精华内容
下载资源
问答
  • 导数 导数的几何意义可能很多人都比较熟悉: 当函数定义域和取值都在实数域中时候,...直白来说,导数代表了在自变量变化趋于无穷小时候,函数值变化与自变量变化比值代表了导数,几何意义有该点切线...

    (本文转自于知乎https://zhuanlan.zhihu.com/p/24913912

    导数

    导数的几何意义可能很多人都比较熟悉: 当函数定义域和取值都在实数域中的时候,导数可以表示函数曲线上的切线斜率。 除了切线的斜率,导数还表示函数在该点的变化率

    几何意义

    直白的来说,导数代表了在自变量变化趋于无穷小的时候,函数值的变化与自变量变化的比值代表了导数,几何意义有该点的切线。物理意义有该时刻的(瞬时)变化率...

    注意在一元函数中,只有一个自变量变动,也就是说只存在一个方向的变化率,这也就是为什么一元函数没有偏导数的原因。

    偏导数

    既然谈到偏导数,那就至少涉及到两个自变量,以两个自变量为例,z=f(x,y) . 从导数到偏导数,也就是从曲线来到了曲面. 曲线上的一点,其切线只有一条。但是曲面的一点,切线有无数条。

    而我们所说的偏导数就是指的是多元函数沿坐标轴的变化率.

    f_{x} (x,y)指的是函数在y方向不变,函数值沿着x轴方向的变化率

    f_{y} (x,y)指的是函数在x方向不变,函数值沿着y轴方向的变化率

    图像如下

    几何意义

    • 偏导数f_{x} (x_{0},y_{0} )就是曲面被平面y=y_{0}所截得的曲面在点M_{0}处的切线M_{0}T_{x}对x轴的斜率
    • 偏导数f_{y} (x_{0},y_{0} )就是曲面被平面x=x_{0}所截得的曲面在点M_{0}处的切线M_{0}T_{y}对y轴的斜率

    可能到这里,读者就已经发现偏导数的局限性了,原来我们学到的偏导数指的是多元函数沿坐标轴的变化率,但是我们往往很多时候要考虑多元函数沿任意方向的变化率,那么就引出了方向导数.

    方向导数

    终于引出我们的重头戏了,方向导数,下面我们慢慢来走进它

    假设你站在山坡上,相知道山坡的坡度(倾斜度)

    山坡图如下:

    假设山坡表示为z=f(x,y),你应该已经会做主要俩个方向的斜率.

    y方向的斜率可以对y偏微分得到.

    同样的,x方向的斜率也可以对x偏微分得到

    那么我们可以使用这俩个偏微分来求出任何方向的斜率(类似于一个平面的所有向量可以用俩个基向量来表示一样)

    现在我们有这个需求,想求出u方向的斜率怎么办.假设z=f(x,y)为一个曲面,p(x_{0} ,y_{0} )f定义域中一个点,单位向量u =cos\theta i+sin\theta j的斜率,其中\theta是此向量与x轴正向夹角.单位向量u可以表示对任何方向导数的方向.如下图:

    那么我们来考虑如何求出u方向的斜率,可以类比于前面导数定义,得出如下:

    f(x,y)为一个二元函数,u =cos\theta i+sin\theta j为一个单位向量,如果下列的极限值存在

    \lim_{t \rightarrow 0}{\frac{f(x_{0}+tcos\theta ,y_{0}+tsin\theta )-f(x_{0},y_{0})}{t} }此方向导数记为D_{u}f

    则称这个极限值是f沿着u方向的方向导数,那么随着\theta的不同,我们可以求出任意方向的方向导数.这也表明了方向导数的用处,是为了给我们考虑函数对任意方向的变化率.

     

    在求方向导数的时候,除了用上面的定义法求之外,我们还可以用偏微分来简化我们的计算.

    表达式是D_{u}f(x,y)=f_{x}(x,y)cos\theta +f_{y}(x,y)sin\theta(至于为什么成立,很多资料有,不是这里讨论的重点)

    那么一个平面上无数个方向,函数沿哪个方向变化率最大呢?

    目前我不管梯度的事,我先把表达式写出来:

    D_{u}f(x,y)=f_{x}(x,y)cos\theta +f_{y}(x,y)sin\theta

    A=(f_{x}(x,y) ,f_{y}(x,y)),I=(cos\theta ,sin\theta )

    那么我们可以得到:

    D_{u}f(x,y)=A\bullet I=\left| A \right| *\left| I \right| cos\alpha(\alpha为向量A与向量I之间的夹角)

    那么此时如果D_{u}f(x,y)要取得最大值,也就是当\alpha为0度的时候,也就是向量I(这个方向是一直在变,在寻找一个函数变化最快的方向)与向量A(这个方向当点固定下来的时候,它就是固定的)平行的时候,方向导数最大.方向导数最大,也就是单位步伐,函数值朝这个反向变化最快.

    好了,现在我们已经找到函数值下降最快的方向了,这个方向就是和A向量相同的方向.那么此时我把A向量命名为梯度(当一个点确定后,梯度方向是确定的),也就是说明了为什么梯度方向是函数变化率最大的方向了!!!(因为本来就是把这个函数变化最大的方向命名为梯度)

    展开全文
  • 第二张Photo在说为啥梯度下降方法会有效: 这两张图片里面都提到了一个说法负梯度方向是 f(x)f(x)f(x)减小最快的方向, 可是我们有想过这是为啥吗? 这背后竟然会有泰勒的身影, 所以第二部分就来看看这个问题, ...

    1. 写在前面

    这篇文章, 再来对梯度下降算法进行一个小的回顾, 梯度下降算法是求解无约束多元函数极值最常用的数值方法, 很多机器学习常用算法和神经网络都是以它作为算法框架进行优化参数。 所以这个算法非常重要。

    这篇文章会有两大部分组成, 第一部分是一些概念的介绍, 第二部分是一个说法背后的原因, 围绕着下面的两张Photos进行一些细节的补充:

    在这里插入图片描述
    这张Photos里面提到了几个概念, 第一个就是凸函数的概念, 第二个是导函数的概念, 第二个是梯度的概念, 当然再加一个方向导数的概念作为第一部分, 也就是概念方面的介绍。 第二张Photo在说为啥梯度下降方法会有效:

    在这里插入图片描述
    这两张图片里面都提到了一个说法负梯度方向是f(x)f(x)减小最快的方向, 可是我们有想过这是为啥吗? 这背后竟然会有泰勒的身影, 所以第二部分就来看看这个问题, 简单推导一下为啥是负梯度方向。

    大纲如下

    • 概念简单介绍
    • 负梯度方向下降最快的原因
    • 几种常见的梯度下降法

    2. 概念的简单介绍

    2.1 凸函数

    在第一张图片中, 我们看到了一些概念, 这里进行简单的回归, 第一个就是凸函数, 之前看到一个公式: AI问题 = 模型 + 优化。 任何一个优化问题(参数求解过程), 都可以写成如下的形式:

    这个东西在统计学习方法的公式推导中, 可是非常常见的, 很多机器学习模型都是先有个目标函数, 然后下面加一些约束, 基于这些构造拉格朗日函数, 然后试图去求参数, 再涉及到稍微复杂一些的还会把拉格朗日函数的形式转换一下等, 当然这里面往往也是会要求函数f0(x)f_0(x)要是一个凸函数, 满足KKT条件等, 才能进行求解。

    那么, 什么样的函数是凸函数呢? 在介绍凸函数之前, 得先了解一个概念叫做凸集

    假设对于任意x,yCx, y \in C并且任意参数α[0,1]\alpha \in[0,1], 我们有αx+(1α)yC\alpha x+(1-\alpha)y\in C, 则集合为凸集。

    这是在说啥呢? 其实,就是假如我们有一个很大的集合, 在里面任意找两个点, 只要在这两点之间的连线上的所有点都在这个集合里面, 那么这个集合就是凸集。比如:
    在这里插入图片描述
    当然, 两个凸集的交集也会是凸集, 凸集的例子非常常见。 有了凸集之后, 我们就可以定义凸函数了:

    函数的定义域是凸集, 对于定义域里面的任意x,yx, y, 函数满足f(θx+(1θ)y)θf(x)+(1θ)f(y)f(\theta x+(1-\theta) y) \leq \theta f(x)+(1-\theta) f(y),则函数是凸函数

    这个就是凸函数的定义, 这个公式说的啥意思呢?
    在这里插入图片描述
    后面那部分就是那条蓝色的线上的而所有点, 而前面那部分是蓝色下面黑色的曲线上的所有点, 因为我们知道表示直线的话可以写成这种形式θ(x)+(1θ)y\theta(x)+(1-\theta)y,表示的是xy这两点之间的这条直线上的所有点, 而加上f()f()之后, 代表的就是xyxy两点间的点的函数值, 也就是黑色曲线上的点。 所以这个函数就是在说在函数的xx轴上任取两个点x,yx,y, 他们之间连线上的任何一点的函数值都小于或者等于f(x)f(y)f(x)和f(y)两点连线之后线上的某一点的值。这时候的函数就是凸函数。 注意这里凸函数的定义和我们数学书上的凸函数定义正好相反, 不要混了
    典型凸函数: ex,logx,xlongxe^x, -logx, xlongx

    上面是凸函数的定义, 下面给出两个证明函数是凸函数的定理:

    假设ff: Rn>RR^n->R是可导的, 则ff为凸函数, 当且仅当f(y)f(x)+(x)T(yx)f(y) \geq f(x)+\nabla(x)^{T}(y-x)对于任意x,ydomfx,y\in domf

    这个式子表达的意思就是我在函数的某个点上画条切线, 这条切线永远在函数的下方。函数的一阶导数满足这个条件, 就是凸函数。Like this:
    在这里插入图片描述
    如果是从二阶导数的角度来看的话, 如果f:Rn>Rf: R^n->R是两次可导的, 则ff是凸函数, 当且仅当:2f(x)0\nabla^{2} f(x) \geq 0对于任意的x,ydomfx,y \in domf

    线性回归函数是凸函数, 故这个就可以使用梯度下降法进行参数的更新。 有了凸函数的概念, 我们基于这个再看看导数。

    2.2 导数与偏导数

    关于导数,刻画的是一元函数在某一点处的函数变化率, 设函数y=f(x)y=f(x)x0x_0某个邻域内有定义,如果当ΔyΔx\frac{\Delta y}{\Delta x}在当Δx>0\Delta x->0的极限存在, 则称函数在x0x_0可导, 这个极限就是函数在点x0x_0的导数
    f(x0)=limΔx0ΔyΔx=limΔx0f(x0+Δx)f(x0)Δxf^{\prime}\left(x_{0}\right)=\lim _{\Delta x \rightarrow 0} \frac{\Delta y}{\Delta x}=\lim _{\Delta x \rightarrow 0} \frac{f\left(x_{0}+\Delta x\right)-f\left(x_{0}\right)}{\Delta x}
    在几何上, 导数其实有三层含义, 简单了解一下:
    在这里插入图片描述
    第一个含义就是在点x0x_0处的斜率。 第二个含义是夹角的tan值, 第三个就是变化率。

    而偏导数, 是在多元函数当中, 也就是自变量不是单纯的只有xx的时候, 这时候,设函数z=f(x,y)z=f(x,y)在点(x0,y0)(x_0,y_0)的某一邻域有定义, 但yy固定与y0y_0, 而xxx0x_0处有增了Δx\Delta x, 相应的函数有增量f(x0+Δx,y0)f(x0,y0)f\left(x_{0}+\Delta x, y_{0}\right)-f\left(x_{0}, y_{0}\right), 如果
    limΔx0f(x0+Δx,y0)f(x0,y0)Δx\lim _{\Delta x \rightarrow 0} \frac{f\left(x_{0}+\Delta x, y_{0}\right)-f\left(x_{0}, y_{0}\right)}{\Delta x}
    存在, 则称该极限为z=f(x,y)z=f(x,y)在点(x0,y0)(x_0, y_0)处对xx的偏导数。

    在这里插入图片描述

    • 偏导数fx(x0,y0)f_x(x_0,y_0)就是曲面被平面y=y0y=y_0所截的曲线在M0M_0处切线M0TxM_0T_xxx轴的斜率
    • 偏导数fy(x0,y0)f_y(x_0,y_0)就是曲面被平面x=x0x=x_0所截的曲线在点M0M_0处切线M0TyM_0T_yyy轴的斜率

    2.3 方向导数

    定义导数、偏导数、方向导数都是说如果说某条件下极限存在,导数的本质是极限及代表函数的变化率,偏导数反映的是函数沿坐标轴方向的变化率,有所限制,所以引入方向导数表示沿任意一方向的变化率

    定义: 设llxOyxOy平面以P0(x0,y0)P_0(x_0,y_0)为始点的一条射线, ei=(cosα,cosβ)e_i=(cos\alpha,cos\beta)是以射线同方向的单位向量:
    在这里插入图片描述
    射线ll的方程:
    {x=x0+tcosα,t0y=y0+tcosβ,t0\left\{\begin{array}{l} x=x_{0}+t \cos \alpha, \quad t \geq 0 \\ y=y_{0}+t \cos \beta, \quad t \geq 0 \end{array}\right.
    如果函数增量f(x0+tcosα,y0+tcosβ)f(x0,y0)f\left(x_{0}+t \cos \alpha, y_{0}+t \cos \beta\right)-f\left(x_{0}, y_{0}\right)PPP0P_0的距离PP0=t|PP_0|=t比值, 当点PP沿着ll趋于P0P_0(t>0+t->0^+)时的极限存在, 则称此极限为函数在点P0P_0沿着方向ll的方向导数:
    fl(x0,y0)=limt0+f(x0+tcosα,y0+tcosβ)f(x0,y0)t\left.\frac{\partial f}{\partial l}\right|_{\left(x_{0}, y_{0}\right)}=\lim _{t \rightarrow 0^{+}} \frac{f\left(x_{0}+t \cos \alpha, y_{0}+t \cos \beta\right)-f\left(x_{0}, y_{0}\right)}{t}
    而如果函数f(x,y)f(x,y)在点P0(x0,y0)P_0(x_0,y_0)可微分, 那么这个方向导数还可以进一步化简为:
    fl(x0,y0)=fx(x0,y0)cosα+fy(x0,y0)cosβ\left.\frac{\partial f}{\partial l}\right|_{\left(x_{0}, y_{0}\right)}=f_{x}\left(x_{0}, y_{0}\right) \cos \alpha+f_{y}\left(x_{0}, y_{0}\right) \cos \beta
    这个的具体推导过程可以看下面给出的链接, 由全微分的公式化简得到的。

    上面这是方向导数, 注意方向导数的本质是个数值,可能现在有些懵逼了, 讲这些概念到底在说啥, 不是梯度下降嘛? 还差一个梯度的概念, 就能把这一串知识串起来了。

    2.4 梯度

    在平面上确定某一点可能存在无数个方向导数,我们怎样找到其中一个方向导数来描述函数最大变化率?

    设函数f(x,y)f(x,y)在平面区域DD内具有一阶连续偏导数, 对于每一点P0(x0,y0)DP_0(x_0,y_0)\in D, 都可以给出一个向量fx(x0,y0)i+fy(x0,y0)jf_{x}\left(x_{0}, y_{0}\right) i+f_{y}\left(x_{0}, y_{0}\right) j, 其中i,ji,jx,yx,y轴上的方向向量, 我们把上面这个表示称为函数在P0(x0,y0)P_0(x_0,y_0)的梯度, 记为:
    gradf(x0,y0)=fx(x0,y0)i+fy(x0,y0)j\operatorname{grad} f\left(x_{0}, y_{0}\right)=f_{x}\left(x_{0}, y_{0}\right) i+f_{y}\left(x_{0}, y_{0}\right) j
    当然, 坐标表示的话就是(fx(x0,y0),fy(x0,y0))\left(f_{x}\left(x_{0}, y_{0}\right), f_{y}\left(x_{0}, y_{0}\right)\right), 这个就是梯度了, 如果我们的自变量不止两维的话, 在机器学习中参数往往会有很多(特征的个数), 那么梯度就是一个向量, 每个元素就是ff对每个自变量的偏导数

    由梯度的定义可以发现, 梯度的方向是确定的, 如果点PP的坐标确定, 那么梯度的大小也会确定。 那么根据上面方向导数的那个公式, 就可以再进一步化简:

    如果函数f(x,y)f(x,y)在点P0(x0,y0)P_0(x_0,y_0)可微分, el=(cosα,cosβ)e_l=(cos \alpha, cos \beta)是方向ll的方向向量,则:
    fl(x0,y0)=fx(x0,y0)cosα+fy(x0,y0)cosβ=gradf(x0,y0)el=gradf(x0,y0)cosθ\left.\frac{\partial f}{\partial l}\right|_{\left(x_{0}, y_{0}\right)}=f_{x}\left(x_{0}, y_{0}\right) \cos \alpha+f_{y}\left(x_{0}, y_{0}\right) \cos \beta=\operatorname{grad} f\left(x_{0}, y_{0}\right) \cdot e_{l}=\left|\operatorname{grad} f\left(x_{0}, y_{0}\right)\right| \cos \theta
    其中θ\theta是向量gradf(x0,y0)grad f(x_0,y_0)与向量ele_l的夹角:

    • θ=0\theta=0, 方向ele_l与梯度gradf(x0,y0)grad f(x_0,y_0)同向, 函数f(x,y)f(x,y)增加最快, 函数在这个方向的方向导数达到最大值\midgradf(x0,y0)f\left(x_{0}, y_{0}\right)|
    • θ=π\theta=\pi, 方向ele_l与梯度方向相反, 函数减小最快。

    所以可以用沿梯度方向的方向导数来描述是函数最大变化率,即梯度方向是函数变化率最大的方向,在梯度定义的时候就已经赋予了它这个特性。但是, 为什么会有这样的一个特性呢?

    下面我们来简单的推导一下。

    3. 负梯度方向下降最快的原因

    这里我们假设函数f(θ)f(\theta)是一个多元函数, 那么我们由泰勒把这个函数进行展开至一阶导数的位置, 就会得到:
    f(θ)f(θ0)+(θθ0)f(θ0)f(\theta) \approx f\left(\theta_{0}\right)+\left(\theta-\theta_{0}\right) \cdot\nabla f\left(\theta_{0}\right)
    我们知道这里的f(θ),f(θ0)f(\theta), f(\theta_0)是个值,也就是标量, 而加号后面那两个是向量, 但是点积之后就成了标量。我们可以令θθ0=ηv\theta-\theta_0=\eta v, 即一个向量可以分解为一个长度和一个方向的乘积, 这里的η\eta表示步长, 这里的vv表示方向, 那么就可以对上面式子进行化简:
    f(θ)f(θ0)+ηvf(θ0)f(\theta) \approx f\left(\theta_{0}\right)+\eta v \cdot \nabla f\left(\theta_{0}\right)
    再进行化简:
    f(θ)f(θ0)ηvf(θ0)<0f(\theta)-f\left(\theta_{0}\right) \approx\eta v \cdot \nabla f\left(\theta_{0}\right) <0
    因为我们这是在执行梯度下降, 所以新得到的这个f(θ)f(\theta)要比原来的f(θ0)f(\theta_0)小才符合我们的预期。 所以上面这个是我们所希望的, 即
    ηvf(θ0)<0\eta v \cdot \nabla f\left(\theta_{0}\right) <0
    这里面的步长大于0, 而梯度如果给了确定的点之后, 就不变了, 所以这里面的变量之后vv, 也就是方向, 所以我们可以把预期写成下面这样:

    vf(θ0)=vΔf(θ0)cos(θ)<0 v \cdot \nabla f\left(\theta_{0}\right) = ||v||\cdot||\Delta f(\theta_0)||\cdot cos(\theta)<0

    这里的θ\theta是两个向量的夹角。 所以根据这个等式我们可以得出vv首先也和梯度方向的夹角大于90度且小于270度的时候, 才能保证小于0, 而要达到最快, 或者这个vΔf(θ0)v\cdot \Delta f(\theta_0)最小, 只有当两者的夹角是180度的时候, 也就是沿着负梯度方向进行下降的时候。 这才有了前面所说的沿着梯度相反方向进行下降是最快的, 也是负梯度这个说法的来历。

    那么方向有了, 每一次要走多远呢? 这个就是η\eta控制了, 所以在进行梯度下降的时候, 我们才有了那个梯度更新公式:
    θ=θ0ηf(θ0)\theta=\theta_{0}-\eta \nabla f\left(\theta_{0}\right)
    这里的方向是Δf(θ0)-\Delta f(\theta_0)(负梯度), η\eta表示步长, θ0\theta_0表示初始值, 下面就开始走吧。

    4. 几种常见的梯度下降法

    明白了梯度下降算法的原理, 下面补充几种常见的梯度下降算法, 主要是

    • 批梯度下降(Batch Gradient Descent, BGD)
    • Mini-batch梯度下降(Mini-batch Gradient Descent, MBGD)
    • 随机梯度下降(Stochastic Gradient Descent, SGD)

    4.1 批梯度下降法

    批量梯度下降法(Batch Gradient Descent,简称BGD)是梯度下降法最 原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新,也就是方程中的m表示样本的所有个数。更新公式如下:

    J(Θ)θj=1ni=1n(hθ(x(i))y(i))xj(i)\frac{\partial J(\Theta)}{\partial \theta_{j}}=\frac{1}{n} \sum_{i=1}^{n}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}
    这里可以清楚地看到,批量梯度下降法计算梯度时,使用全部样本数据,分别计算梯度后除以样本个数(取平均)作为一次迭代使用的梯度向量。伪代码:

    for i in range(max_iters):
        grad = evaluate_gradient(loss_functiion, data, initial_params)
        params = params - learning_rate * grad
    
    • 优点: 全局最优解; 易于并行实现
    • 缺点: 样本数目很多时, 训练过程会很慢

    4.2 随机梯度下降法

    由于批梯度下降每跟新一个参数的时候,要用到所有的样本数,所以训练速度会随着样本数量 的增加而变得非常缓慢。随机梯度下降正是为了解决这个办法而提出的。

    它的具体思路是在更新每一参数时都使用一个样本来进行更新,也就是以上批处理方程中的n等于1。每一次跟新参数都用一个随机选择的样本,更新很多次。如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次,这种更新方式计算复杂度太高。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。 更新方式如下:
    J(Θ)θj=(hθ(x(i))y(i))xj(i)\frac{\partial J(\Theta)}{\partial \theta_{j}}=\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}

    for i in range(max_iters):
        np.random.shuffle(data)
        for sample in data:
            grad = evaluate_gradient(loss_functiion, sample, initial_params)
            params = params - learning_rate * grad
    
    • 优点:训练速度快
    • 缺点:准确度下降, 并不是每一步全局最优, 不易于并行实现

    4.3 小批量梯度下降

    我们从上面两种梯度下降法可以看出,其各自均有优缺点,那么能不能在两种方法的性能 之间取得一个折衷呢?即,算法的训练过程比较快,而且也要保证最终参数训练的准确率, 而这正是小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD)的初衷。

    小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD):它的具体思路是在更 新每一参数时都使用一部分样本来进行更新,也就是批处理方程中的n的值大于1小于所有 样本的数量。为了克服上面两种方法的缺点,又同时兼顾两种方法的优点。
    J(Θ)θj=1kii+k(hθ(x(i))y(i))xj(i)\frac{\partial J(\Theta)}{\partial \theta_{j}}=\frac{1}{k} \sum_{i}^{i+k}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}

    小批量梯度下降法使用一部份样本数据(上式中为k个)参与计算,既降低了计算复杂度,又保证了解的收敛性。

    for i in range(max_iters):
        np.random.shuffle(data)
        for batch in get batches(data, batch_size=50):
            grad = evaluate_gradient(loss_functiion, batch, initial_params)
            params = params - learning_rate * grad
    

    4.4 三种方法比较

    在这里插入图片描述
    如果样本量比较小,采用批量梯度下降算法。如果样本太大,或者在线算法,使用随机梯 度下降算法。在实际的一般情况下,采用小批量梯度下降算法。

    参考

    展开全文
  • 方向导数与梯度

    2020-12-18 20:53:56
    沿不同方向变化率就是方向导数问题,而下降的最快方向就是梯度问题。 顾名思义,方向导数就是某个方向上导数。 什么是方向? 我们知道: 函数f(x,y)A点在这个方向上也是有切线,其切线斜率就是方向导

    一、由具体问题引出方向导数和梯度的概念

    问题:一块长方形的金属板,受热产生如图温度分布场。设一个小虫在板中逃生至某处,问该虫应沿什么方向爬行,才能最快到达凉快的地点?
    在这里插入图片描述

    问题答案:应沿由热变冷变化最剧烈的方向爬行。
    这就需要我们计算温度分布场中各点沿不同方向的温度变化率,从而确定出温度下降的最快方向。沿不同方向的变化率就是方向导数问题,而下降的最快方向就是梯度问题

    顾名思义,方向导数就是某个方向上的导数。什么是方向
    在这里插入图片描述
    我们知道:
    在这里插入图片描述
    下图看出,函数f(x,y)的A点在这个方向上也是有切线的,其切线的斜率就是方向导数。
    在这里插入图片描述
    下面正式讨论方向导数。

    二、方向导数

    设函数z= f(x,y)在点P(x,y)的某一邻域U内有定义,自点P引射线l。设x轴正向到射线l的转角为φ ,并设P’(x +△x,y + △y)为l上的另一点P’∈U。
    在这里插入图片描述
    |PP’I= ρ=√(△x)^2 +(△y)^2,且△z= f(x+△x,y +△y)- f(x,y),考虑△z/p,当P’沿着l趋于P时,
    在这里插入图片描述

    上述极限是否存在?如果存在,则称这极限为函数在点P沿方向l的方向导数。

    定义:函数的增量f(x + △x,y+ △y)- f(x,y)与PP’两点间的距离ρ=√(△x)2+(△y)2之比值,当P’沿着l趋于P时,如果此比的极限存在,则称这极限为函数在点P沿方向l的方向导数。
    记为:
    在这里插入图片描述
    方向导数计算公式:
    在这里插入图片描述
    其中φ为x轴到方向l的转角。

    三、梯度

    定义:设函数f(x, y)在平面区域D内具有一阶连续偏导数,则对每一点P(x^0,y0)∈ D,都可以定出一个向量fx(x0, y0)i十fy(x0, y0)j称为f(x, y)在点P处的梯度,记作gradf(x0, y0)。
    梯度是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数。
    在这里插入图片描述

    四、例题解析

    在这里插入图片描述
    最优化方法期末复习入口最优化方法期末复习

    展开全文
  • 下降最快方向导数最小 故目标是找当方向导数为最小值时的方向 方向导数其实是梯度在这个方向上的投影的长度,根据定理,方向导数和梯度之间有如下计算公式: 方向导数 = 梯度*该方向向量的方向余弦 = 梯度的模*...

    下降最快即方向导数最小 故目标是找当方向导数为最小值时的方向

    方向导数其实是梯度在这个方向上的投影的长度,根据定理,方向导数和梯度之间有如下计算公式:

    方向导数 = 梯度*该方向向量的方向余弦 = 梯度的模*梯度的方向余弦*方向向量的方向余弦

    梯度的模是常量,方向余弦是为单位向量,两个单位向量点乘的结果最大为1(两个向量相同),最小为-1(两个向量相反),故负梯度方向上方向导数最小,多元函数下降最快

    展开全文
  • 2.梯度下降法也是从这里来,当我们在求解时候没办法直接得到优解,只能不断逼近优解,而逼近时候又想尽可能的快,那么只能沿着函数变化剧烈方法(也就是梯度方向)方向走。这里顺便提一下梯度上升法,...
  • 很多机器学习训练算法都是利用梯度下降,朝着梯度方向变动,函数值下降最快导数导数可以表示函数曲线上切线斜率。 除了切线斜率,导数还表示函数在该点变化率。导数代表了在自变量变化趋于无穷小...
  • 转载自 为什么梯度反方向是函数下降最快的方向 为什么梯度反方向是函数下降最快的方向? 刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着...
  • 面试遇到的问题:刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的...参考在梯度下降法中,为什么梯度的负方向是函数下降最快的方向?为什么梯度反方向是函数值下降最快的方向?进行整...
  • 看下面的知乎的回答要理解 ①为什么平行时方向导数最大 ...②为什么函数值朝这个反方向...基于理解上文内容,|A|是正值,所以是上升最快的方向,要是负梯度的方向,就是A和I的夹角是180时,这时是梯度下降最快的方向 ...
  • 梯度方向指向数值增长最快的方向,大小为变化率。通过这个性质也说明梯度是有方向和大小的矢量。通过梯度的定义我们发现,梯度的求解其实就是求函数偏导的问题,而我们高中所学的导数在非严格意义上来说也就是一元的...
  • 刚接触梯度下降这个概念时候,是在学习机器学习算法时候,很多训练算法用就是梯度下降,然后资料和老师们也说朝着梯度方向变动,函数值下降最快,但是究其原因时候,很多人都表达不清楚。所以我整理出...
  • 为什么梯度反方向是函数值下降最快的方向1. 版本一用泰勒公式展开式解释1.1. 什么是梯度?1.2 梯度下降算法1.3 一阶泰勒展开式1.4 梯度下降数学原理1.5总结2.版本二用方向导数解释2.1 导数2.2. 偏导数2.3 方向导数 1...
  • 刚接触梯度下降这个概念时候,是在学习机器学习算法时候,很多训练算法用就是梯度下降,然后资料和老师们也说朝着梯度反方向变动,函数值下降最快,但是究其原因时候,很多人都表达不清楚。所以我从方向...
  • 刚接触梯度下降这个概念时候,是在学习机器学习算法时候,很多训练算法用就是梯度下降,然后资料和老师们也说朝着梯度方向变动,函数值下降最快,但是究其原因时候,很多人都表达不清楚。所以我整理出...
  • 转自:为何梯度反方向是函数值下降最快的方向 刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向变动,函数值下降最快,但是究其...
  • 推荐阅读时间:8min~15min主要内容:为什么梯度的负方向是局部下降最快的方向?刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向...
  • 假设我们站在山坡上,想知道怎么下山最快,有一种方法就是在每次下坡都走下坡最快的一步,也就是每一步都走斜率最大的方向,这种方法即为梯度下降法。 山坡图如下: 我们用函数z=f(x,y)z=f(x,y)z=f(x,y)表示山坡,...
  • 摘要SGD(Stochastic Gradient Descent, 梯度下降法)是求解优解问题时常用优化器, 其核心思想是, 每次迭代时沿着负梯度(梯度方向)前进, 经过多次迭代后到达一个较小函数值参数点处. 为什么是沿着负梯度方向...
  • 刚接触梯度下降这个概念时候,是在学习机器学习算法时候,很多训练算法用就是梯度下降,然后资料和老师们也说朝着梯度方向变动,函数值下降最快,但是究其原因时候,很多人都表达不清楚。所以我整理出...
  • 一.梯度 定义:设函数在平面区域内... 性质:梯度的方向是函数值增大最快的方向。相应的,负梯度的方向是函数值减小最快的方向。=&gt; 梯度下降法求函数极小值。 二.方向导数 定义:设函数在点的某一邻域内有...
  • 梯度:矢量,方向指向数值增长最快的方向,大小为变化率。 导数:常量,两者应该有本质的区别,而导数的正负也反映了函数值的大小变化,而不是一直指向数值增大的方向。 其实一元函数肯定也有梯度,我们经常不...
  • 刚接触梯度下降这个概念时候,是在学习机器学习算法时候,很多训练算法用就是梯度下降,然后资料和老师们也说朝着梯度方向变动,函数值下降最快,但是究其原因时候,很多人都表达不清楚。所以我整理出...
  • (大写的问号)梯度的负方向当然就是函数值下降最快的方向啊,这还用问??你居然还问我为什么??好吧,那就证明一下吧!!!先解释一下什么是梯度吧?百度百科中的解释:梯度的本意是一个向量(矢量),表示某一...
  • 一、了解什么是导数。1、导数是变化率,是切线,是瞬时速度,是加速度(一元函数中)。...方向导数的几何意义:就是某一方向上垂直平面截线在该方向斜率 。u微量所在平面且垂直于xoy面平与z=f...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 219
精华内容 87
关键字:

下降最快的方向导数