zoukankan      html  css  js  c++  java
  • 梯度(转)

    1. 基本概念

        方向导数:是一个数;反映的是f(x,y)在P0点沿方向v的变化率。

        偏导数:是多个数(每元有一个);是指多元函数沿坐标轴方向的方向导数,因此二元函数就有两个偏导数。

        偏导函数:是一个函数;是一个关于点的偏导数的函数。

        梯度:是一个向量;每个元素为函数对一元变量的偏导数;它既有大小(其大小为最大方向导数),也有方向。

    2. 方向导数

        反映的是f(x,y)在P0点沿方向v的变化率。

        例子如下:

        

        

    2.0 方向导数计算公式

          

    2.1 偏导数

         

    2.2 二元函数偏导数的几何意义

         

         

    2.3 偏导函数

         偏导数与偏导函数的关系:

        偏导数是偏导函数在指定点的函数值,因此在求偏导数时,也可先求出偏导函数,然后再将点代入偏导函数,从而求出函数在此点的偏导数。

         

    3. 全微分

       

        

    4. 梯度

          梯度是一个向量;既有大小,也有方向。

        

          

    4.1 几何意义

        函数z=f(x,y)在点P0处的梯度方向是函数变化率(即方向导数)最大的方向。

        梯度的方向就是函数f(x,y)在这点增长最快的方向,梯度的模为方向导数的最大值。

        

    转自:http://blog.csdn.net/myarrow/article/details/51332421

    刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向变动,函数值下降最快,但是究其原因的时候,很多人都表达不清楚。所以我整理出自己的理解,从方向导数这个角度把这个结论证明出来,让我们知其然也知其所以然~

    下面我一开始不提梯度的概念,完全根据自己的理解进行下文的梳理,一步一步推出梯度的来历:

    • 导数

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

    将上面的公式转化为下面图像为:

    (来自维基百科)

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

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

    • 偏导数

    既然谈到偏导数,那就至少涉及到两个自变量,以两个自变量为例,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	heta i+sin	heta j的斜率,其中	heta 是此向量与x轴正向夹角.单位向量u可以表示对任何方向导数的方向.如下图:

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

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

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

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

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

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

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

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

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

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

    那么我们可以得到:

    D_{u}f(x,y)=Aullet I=left| A 
ight| *left| I 
ight| cosalpha (alpha 为向量A与向量I之间的夹角)

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

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

    我的理解是,本来梯度就不是横空出世的,当我们有了这个需求(要求一个方向,此方向函数值变化最大),得到了一个方向,然后这个方向有了意义,我们给了它一个名称,叫做梯度(纯个人理解~希望对大家理解有帮助)欢迎知友提出问题交流~

    转自:https://zhuanlan.zhihu.com/p/24913912

  • 相关阅读:
    使用NBU进行oracle异机恢复
    mycat偶尔会出现JVM报错double free or corruption并崩溃退出
    exp导出数据时丢表
    service_names配置不正确,导致dg创建失败
    XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
    HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
    java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
    【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
    java内部类深入详解 内部类的分类 特点 定义方式 使用
    再谈包访问权限 子类为何不能使用父类protected方法
  • 原文地址:https://www.cnblogs.com/shixisheng/p/7143270.html
Copyright © 2011-2022 走看看