梯度法

    xiaoxiao2021-09-14  118

    梯度下降法

    博客分类:数学与计算  

    一、基本概念

    梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法。最速下降法的一种简单形式是:x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较小的常数。g(k)是x(k)的梯度。

    二、导数

    (1)定义

     

    设有定义域和取值都在实数域中的函数 。若 在点 的某个邻域内有定义,则当自变量 在 处取得增量(点 仍在该邻域内)时,相应地函数 取得增量;如果 与 之比当 时的极限存在,则称函数 在点 处可导,并称这个极限为函数 在点 处的导数,记为,即:

     

    也可记作 、、或。

    对于一般的函数,如果不使用增量的概念,函数 在点 处的导数也可以定义为:当定义域内的变量 趋近于 时,

    的极限。也就是说,

     

     

     

     

    导数反应的变化率

    一个函数在某一点的导数描述了这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近。当函数的自变量在一点上产生一个增量时,函数输出值的增量与自变量增量的比值在趋于0时的极限如果存在,即为在处的导数,记作、或

     

    (2)几何意义:

     

     

     

    一个实值函数的图像曲线。函数在一点的导数等于它的图像上这一点处之切线的斜率,导数是函数的局部性质。不是所有的函数都有导数,一个函数也不一定在所有的点上都有导数。若某函数在某一点导数存在,则称其在这一点可导,否则称为不可导。如果函数的自变量和取值都是实数的话,那么函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率。

    具体来说:

    当函数定义域和取值都在实数域中的时候,导数可以表示函数的曲线上的切线斜率。如下图所示,设为曲线上的一个定点,为曲线上的一个动点。当沿曲线逐渐趋向于点时,并且割线的极限位置存在,则称为曲线在处的切线。

    若曲线为一函数的图像,那么割线(蓝色)的斜率为:

    当处的切线(红色),即的极限位置存在时,此时,,则的斜率为:

    上式与一般定义中的导数定义完全相同,也就是说,因此,导数的几何意义即曲线在点处切线的斜率 

     

    (3)导函数

     

     导数是一个数,是指函数 在点 处导函数的函数值,若函数 在其定义域包含的某区间 内每一个点都可导,那么也可以说函数在区间 内可导,这时对于 内每一个确定的值,都对应着 的一个确定的导数值,如此一来就构成了一个新的函数,这个函数称作原来函数 的导函数,记作:、或者,通常也可以说导函数为导数

     

     

     

     

     

     3、一元函数微分

    微分和导数是两个不同的概念。但是对一元函数来说,可微与可导是完全等价的概念。可微的函数,其微分等于导数乘以自变量的微分,换句话说,函数的微分与自变量的微分之商等于该函数的导数。因此,导数也叫做微商。于是函数的微分又可记作[

     

    (1)微分反应的变化率

    微分可以近似地描述当函数自变量的取值作足够小的改变时,函数的值是怎样改变的。当某些函数的自变量有一个微小的改变时,函数的变化可以分解为两个部分。一个部分是线性部分:在一维情况下,它正比于自变量的变化量,可以表示成和一个与无关,只与函数及有关的量的乘积;在更广泛的情况下,它是一个线性映射作用在上的值。另一部分是比更高阶的无穷小,也就是说除以后仍然会趋于零。当改变量很小时,第二部分可以忽略不计,函数的变化量约等于第一部分,也就是函数在处的微分,记作或。如果一个函数在某处具有以上的性质,就称此函数在该点可微。

    (2)定义

    设函数在某区间内有定义。对于内一点,当变动到附近的(也在此区间内)时。如果函数的增量可表示为(其中是不依赖于的常数),而是比高阶的无穷小,那么称函数在点是可微的,且称作函数在点相应于自变量增量的微分,记作,即,是的线性主部。[1]:141

    通常把自变量的增量称为自变量的微分,记作,即。

    (3)几何意义

     

    函数在一点的微分。其中红线部分是微分量,而加上灰线部分后是实际的改变量

     

     

     

    设是曲线上的点在横坐标上的增量,是曲线在点对应在纵坐标上的增量,是曲线在点的切线对应在纵坐标上的增量。当很小时,比要小得多(高阶无穷小),因此在点附近,我们可以用切线段来近似代替曲线段。

     

     

    (4)关于无穷小量

     

    A)

    如果一个序列 如果满足如下性质:

     

    用极限符号把上述性质简记为

    则序列 被称为 时的无穷小量[

    B)阶的比较

    设 , 为两个序列,而且都是时的无穷小量。虽然它们在 趋于无穷时都趋于零,但趋于零的速度是有区别的。可以用如下方式比较它们的速度:

    若对于任意正实数 ,存在正整数 使得

     

    在 时总是成立,则称 是 的高阶无穷小,记作

     

    其中的 有时也被省略不写。

    在上述定义中,也可以说无穷小量 a 的阶要比 b 的要高,或者说 a 比b 更快地趋于零

     

     4、多元函数微分

    (1) 欧几里得空间

     

    以表示实数域。对任意一个正整数n,实数的n元组的全体构成了上的一个n维向量空间,用来表示。有时称之为实数坐标空间。中的元素写作,这里的都是实数。作为向量空间,其运算是这样定义的:

     欧几里得空间,则是在上再添加一些内容:欧几里得结构。 为了做欧氏几何,人们希望能讨论两点间的距离,直线或向量间的夹角。一个自然的方法是在上,对任意两个向量、,引入它们的“标准内积”(一些文献上称为点积,记为):

    也就是说,中的任意两个向量对应着一个实数值。我们把及这样定义的内积,称为上的欧几里得结构;此时的也被称为n维欧几里得空间,内积"<,>"称为欧氏内积。

    利用这个内积,可以建立距离、长度、角度等概念:

    向量的长度:

    这里的长度函数满足范数所需的性质,故又称为上的欧氏范数。

    和所夹的内角以下列式子给出

    这里的为反余弦函数。

    最后,可以利用欧氏范数来定义上的距离函数,或称度量: 。

    这个距离函数称为欧几里得度量,它可以看作勾股定理一种形式。

    这里的仅指实数向量空间,而加入了如上定义的欧几里得结构后才称为欧氏空间;有些作者会用符号来标记之。欧氏结构使具有这些空间结构:内积空间、希尔伯特空间、赋范向量空间以及度量空间。

     

     

    (2)开集

    开集是指不包含自己边界点的集合。或者说,开集把它所包含的任何一点的充分小的邻域也包含在其自身之中。开集的概念一般与拓扑概念是紧密联系着的,通常先公理化开集,然后通过其定义边界的概念。

     

    函数分析

    在Rn中点集是开集,如果在这个集合的所有点P都是内部点。

     

     

    内点

    令 S 为欧几里得空间的子集。若存在以 x 为中心的开球被包含于 S,则x 是 S 的内点。

    这个定义可以推广到度量空间 X 的任意子集 S。具体地说,对具有度量 d的度量空间 X,x 是S 的内点,若对任意 r >0,存在 y 属于 S,且 d(x,y)< r

     点 x 是 S 的内部点,因为它包含在S 内并有一个开球围绕着它。点 y 在S 的边界上

     

    欧几里得空间

    n维欧几里得空间Rn的子集U是开集,如果给定任何在U中的点x,存在一个实数ε> 0使得,如果给定任何Rn中点y,有着从x到它的欧几里得距离小于ε,则y也属于U。等价的说,U是开集,如果所有U中的点有包含在U中的邻域。

     

     

    (3)定义

    设是从欧几里得空间Rn(或者任意一个内积空间)中的一个开集射到Rm的一个函数。对于中的一点及其在中的邻域中的点。如果存在线性映射使得对任意这样的,

    那么称函数在点处可微。线性映射叫做在点处的微分,记作。

    如果在点处可微,那么它在该点处一定连续,而且在该点的微分只有一个。为了和偏导数区别,多元函数的微分也叫做全微分或全导数。

    当函数在某个区域的每一点都有微分时,可以考虑将映射到的函数:

    这个函数一般称为微分函数

    全微分(英语:total derivative)是微积分学的一个概念,指多元函数的全增量的线性主部,记为。例如,对于二元函数,设f在点的某个邻域内有定义,为该邻域内的任意一点,则该函数在点的全增量可表示为

    其中,仅与,有关,而与,无关,。若是当时的高阶无穷小,则称此函数在点可微分,而即为函数在点的全微分,记作

    或。

    (4)邻域

    是拓扑空间中的基本概念。直觉上说,一个点的邻域是包含这个点的集合,并且该性质是外延的:你可以稍微“抖动”一下这个点而不离开这个集合。

     

    在平面上集合 V 是点 p 的邻域,如果围绕 p 小圆盘包含在V 中

     

     

    如果 X 是拓扑空间 而 p 是 X 中的一个点,p的邻域是集合V,它包含了包含 p 的开集U,

    注意 V 自身不必须是开集。如果 V是开集则它被称为开邻域。某些作者要求邻域是开集,所以注意约定是很重要的。

    一个点的所有邻域的集合叫做在这点上的邻域系统。

    如果 S 是 X 的子集,S的邻域是集合 V,它包含了包含S 的开集U。可得出集合 V 是 S 的邻域,当且仅当它是在 S中的所有点的邻域。

     

     

     

    在度量空间 M = (X,d) 中,集合 V 是点p 的邻域,如果存在以p 为中心和半径为 r的开球,

    它被包含在 V 中。

    V 叫做集合 S 的一致邻域,如果存在正数r 使得对于 S 的所有元素p,

    被包含在 V 中。

    对于 r>0 集合 S 的r-邻域 是X 中与 S 的距离小于 r 的所有点的集合(或等价的说 是以S 中一个点为中心半径为 r 的所有开球的并集)。

    可直接得出 r-邻域是一致邻域,并且一个集合是一致邻域当且仅当它包含对某个 r 值的r-邻域。

    平面上的集合 S 和 S 的一致邻域 V。

     

     

    五、梯度

    1、相关概念

    假如一个空间中的每一点的属性都可以以一个标量来代表的话,那么这个场就是一个标量场。

    假如一个空间中的每一点的属性都可以以一个向量来代表的话,那么这个场就是一个向量场

    标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。

    梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。

    2、计算

    一个标量函数的梯度记为:

    其中(nabla)表示矢量微分算子。

    在三维情况,该表达式在直角坐标中扩展为

     

     

    六、梯度下降法

    梯度下降法,基于这样的观察:如果实值函数 在点 处可微且有定义,那么函数在 点沿着梯度相反的方向 下降最快。

    因而,如果

    对于 为一个够小数值时成立,那么。

    考虑到这一点,我们可以从函数 的局部极小值的初始估计 出发,并考虑如下序列 使得

    因此可得到

    如果顺利的话序列 收敛到期望的极值。注意每次迭代步长 可以改变。

     1、值问题——求导解法:

       在理解梯度下降法之前,我们先来简单回顾下高中数学里面的极值问题:给定一个方程f(k),求解该方程的为极小值时,k的取值是多少?其中:

    按照高中的思路,我们对f(k)求导,然后令导数为0,求解的k值即为所求,如下所示:

    所以,当f(k)取极小值时,k=2,如图1所示:

    图1

    2、极值问题——迭代与梯度下降法求解

    在复杂的实际问题中,有时求导解法很难计算;迭代法通过从一个初始估计出发寻找一系列近似解来解决数学问题的过程,其一系列近似解会收敛到问题的精确解。其基本形式如下所示,其中a为学习速率:

    我们以第一部分的极值问题为例,f(k)最小时,k等于2. 假设初始化k0=0,如何一步步迭代让kt趋近最优解2?

    图2

    主观上分析,我们可知,要让k向最优值逼近,g(kt)要满足两个条件:

    (1) g(kt)要能使k向最优值方向逼近;

    (2) 当kt达到最优解的时候,g(kt)要等于0。

    对于第一点很好理解,第二点可能有点迷糊,我们简单分析下:当kt达到最优解的时候,我们期望下一步迭代不会跑出最优解之外,即kt+1要等于kt,即:

    下面的核心问题:即是寻找一个g(kt)满足上述两个要求。我们令g(kt)为f(k)的导数,即g(k)=2k-4看其是否满足(学习速率为0.3):

    (1)当k0=0时:

    (2)当k1=1.2时:

    (3)当k2=1.68时:

    图3

    我们发现:随着迭代过程的不断进行,g(kt)可以使k向最优值逼近,且当k离最优值越近时,g(kt)的绝对值越来越小,当达到最优值的时候,g(kt)等于0,满足条件。

    这里有个问题,读者可能会有一些疑问:学习速率a的取值为什么是0.3?实际上学习速率a可以取任意0到1之间的小数, 但是不同的取值对迭代的过程有不同的影响:

    (1)当a取值较大时,即梯度下降迭代的步长较大,梯度下降迭代过程较快,可以快速迭代到最优解附近,但是可能一直在最优解附近徘徊,无法计算出最优解;

    (2)当a取值较小时,即梯度下降迭代的步长较小,梯度下降迭代过程较慢,但是其迭代出的解精度相对(1)更高。

    具体的不同的实际问题可能需要不同的学习速率的取值。 

    没错,上述的迭代算法就是梯度下降法的过程。现在我们更加形式化的给出梯度下降法的定义:

    直白理解就是:求一个函数F(K)最小值所满足的参数K,我们用梯度下降法计算时,参数K按照梯度的方向(导数)不断迭代。

               (转自 点击打开链接   点击打开链接)
    转载请注明原文地址: https://ju.6miu.com/read-677600.html

    最新回复(0)