最新2019-梯度下降法-PPT课件
- 格式:ppt
- 大小:419.52 KB
- 文档页数:64
梯度下降法详解在学习、⽣活、科研以及⼯程应⽤中,⼈们经常要求解⼀个问题的最优解,通常做法是对该问题进⾏数学建模,转换成⼀个⽬标函数,然后通过⼀定的算法寻求该函数的最⼩值,最终寻求到最⼩值时的输⼊参数就是问题的最优解。
⼀个简单的例⼦,就是求解y=x2的最优解,也就是求当y取得最⼩值时x的取值。
这个问题初中⽣都会解,谁都知道,直接对函数求导得到导数y=2x,令y=2x=0解得x=0,这就是最优解。
然⽽,很多实际问题的⽬标函数是很复杂的,很难求出其导数表达式,这种情况下如果还想通过求导数表达式并令其等于0来求最优解就很困难了。
不过虽然导数表达式求解困难,但某⼀确定点的近似导数值还是⽐较容易求出来的,所以⼈们通常利⽤某⼀确定点的近似导数值来逼近最优解。
梯度下降法就是这样的⼀种算法,在⼀步⼀步逼近的过程中,⽬标函数值呈下降趋势,输⼊参数的值也⼀步⼀步逼近最优解,其整个迭代逼近过程如下图所⽰:下⾯将从数学的⾓度解释其原理。
假设函数f具有n个输⼊参数:x1,x2,…,x n,第k次逼近的⽬标函数值可以表达如下:对第k+1次逼近的⽬标函数进⾏泰勒展开,并忽略余项,得到下式:其中▽f为梯度向量,也即在该点处所有输⼊参数的偏导数组成的向量,△x为从第k次到第k+1次逼近时输⼊参数的变化向量。
我们知道,多维函数的偏导数的定义为:所以可以取⼀个很⼩的△x i值(⽐如0.0001)来近似计算x i的偏导数:向量的点乘可以转换为向量模与向量夹⾓的相乘:于是有:由上式可知,当向量夹⾓cosθ=-1时向量的点乘结果最⼩,也即函数值下降最多,此时向量夹⾓为180度,说明梯度向量与输⼊参数的变化向量⽅向相反。
所以要使下⼀次逼近时⽬标函数值尽可能地相对于当前次降低,也就是使⽬标函数值下降最快,就应该沿着梯度(偏导数)的负⽅向寻找下⼀个逼近点。
即:上式中,α为沿梯度负⽅向前进的步长,α取值过⼩会使逼近最优解的速度很慢,从⽽迭代次数增加,反之如果取值过⼤,则容易跳过最优解。
梯度下降法
梯度下降法(gradient descent)或最速下降法(steepest descent)是求解⽆约束最优化问题的⼀种最常⽤的⽅法。
梯度下降法是迭代算法,每⼀步需要求解⽬标函数的梯度向量。
假设f(x)是R n上具有⼀阶连续偏导数的函数,要求解的⽆约束最优化问题是
x*表⽰⽬标函数f(x)的极⼩点。
提梯度下降法是⼀种迭代算法。
选取适当的初值x(0),不断迭代,更新x值,进⾏⽬标函数的极⼩化,直到收敛。
由于负梯度⽅向是使函数值下降最快的⽅向,在迭代的每⼀步,以负梯度⽅向更新x的值,从⽽达到减少函数值的⽬的。
由于f(x)具有⼀阶连续偏导数,若第k次迭代值为x(k),则可将f(x)在x(k)附近进⾏⼀阶展泰勒开:
这⾥,为f(x)在x(k)的梯度。
求出第k+1次迭代值x(k+1):
其中,p k是搜索⽅向,取负梯度⽅向,λk是步长,由⼀维搜索确定,即λk使得:
梯度下降算法如下:
输⼊:⽬标函数f(x),梯度函数,计算精度ε;
输出:f(x)的极⼩点x*
(1)取初值x(0)∈R n ,置k=0
(2)计算f(x(k))
(3)计算梯度g k=g(x(k)),当||g k||<ε时,停⽌迭代,令x*=x k;否则,令p k=-g(x(k)),求λk,使
(4)置x(k+1)=x(k)+λk p k,计算f(x(k+1))
当||f(x(k+1))-f(x(k))||<ε或||x(k+1)-x(k)||<ε时,停⽌迭代,令x*=x(k+1)
(5)否则,置k=k+1,转(3)。
梯度下降公式梯度下降法公式,是在求解线性代数方程组时常用的一种简单有效的方法。
它的原理就像电路中电流随着电压而改变的规律一样。
这里,我们假设初始条件不变,方程组的所有系数矩阵都不相同。
我们把通过原点 O 的每一个矢量的梯度记作+ cosθ或-sinθ,并称之为加速度的正梯度(也可以写成δ);相反地,我们则把通过每个不同的标准方向的正梯度记作- cosθ或- sinθ,并称之为减速度的负梯度(也可以写成δ)。
梯度下降公式有许多推广,例如广义梯度下降、广义梯度下降等。
在此只介绍前两者。
梯度下降法适合于研究一些未知量随某个已知量变化的情况。
当题目比较复杂时,需要考虑使用其他方法来处理问题。
梯度下降法的基本思想是:对某一微小扰动,给予足够大的正(或负)梯度,将会使被研究的变量的值增大,从而达到预期的结果。
因此,当某一研究对象受到外界影响时,往往采取增大正梯度的办法,以便收到良好的效果。
如果将该微小扰动的作用看做是无穷小的,那么正梯度就是它的加速度。
而且,梯度越大,则该物体运动得越快。
为了更形象地说明梯度方向与加速度的关系,我们举个例子来说明。
有一块金属片,其上刻画着几条曲线。
你拿一支铅笔放在金属片的边缘上移动,发现金属片会沿着铅笔走过的痕迹向左偏转,这表示铅笔的作用力大小为 A,方向是从左到右。
然后你又拿起另一支铅笔在金属片上移动,发现金属片仍然按照刚才的轨迹偏转,但是移动方向却和第一次相反,这表示铅笔的作用力大小为 B,方向是从右到左。
最后你再拿起第三支铅笔在金属片上移动,发现金属片还是按照刚才的轨迹偏转,但是移动方向却和第二次相反,这表示铅笔的作用力大小为 C,方向是从左到右。
这时候你很容易发现:这四支铅笔对金属片产生的作用力大小均为 A,但是由于方向的不同,造成了它们的加速度不同,因此它们对金属片产生的作用力大小也不同。
即 A+ A= A,而 A+ B= A, A+ C= A, A+ D= A。
根据梯度的定义, A 的方向应该向左, B 的方向应该向右, A+ B+ C+ D= A。
各种梯度下降法及其特点原文链接文章目录•全量梯度下降/批梯度下降(BGD, Batch Gradient Descent)•o特点•随机梯度下降(SGD, Stochastic Gradient Descent)•o特点•小批量梯度下降(Mini-Batch Gradient Descent)•o特点•Momentum梯度下降法(动量梯度下降)•o特点•Adagrad梯度下降法•o特点o Adadeltao特点•Adam•o特点全量梯度下降/批梯度下降(BGD, Batch Gradient Descent) 就是正常的梯度下降ω = ω −λ∂ J ∂ω \omega = \omega-\lambda\frac{\partial J}{\partial\omega} ω=ω−λ∂ω∂J特点•每次更新都会朝着正确的方向进行, 最后收敛于极值点, 凸函数收敛于全局极值点, 非凸函数可能会收敛于局部极值点•缺点: 学习时间长, 消耗内存大随机梯度下降(SGD, Stochastic Gradient Descent) SGD每一轮只用一条随机选取的数据特点优点•每一次的学习时间很快•如果目标函数有盆地区域, SGD会使优化的方向从当前局部极小值点跳到另一个更好的局部最小值点•最终收敛于一个较好的极值店甚至是全局极值点缺点•每次更新可能并不会按照正确的方向进行, 参数具有高方差, 从而导致损害函数剧烈波动小批量梯度下降(Mini-Batch Gradient Descent)小批量梯度下降指的是从所有数据中选择一部分进行迭代特点优点•收敛速度比SGD更快, 更稳定•在最优解附近跳动不会太大, 容易得到更好的解Momentum梯度下降法(动量梯度下降)v = λ ∂ J ∂ω + v ∗ m o m e m t u m ω = ω− v m o m e m t u m 介于 0 和 1 之间 v = \lambda\frac{\partial J}{\partial\omega} +v * momemtum\\ \omega = \omega-v\\ momemtum介于0和1之间v=λ∂ω∂J+v∗momemtumω=ω−vmomemtum介于0和1之间特点•减少震荡, 大方向不变, 从而保证了效率和正确的收敛Adagrad梯度下降法d w = ∂ J ∂ω g r a d _ s q u a re d + = d w 2 ω = ω−λ ∗ dw g r a d _ s q u a r e d dw = \frac{\partial J}{\partial\omega}\\ grad\_squared += dw^2\\ \omega = \omega - \lambda * \frac{dw}{\sqrt{grad\_squared}} dw=∂ω∂Jgrad_squared+=dw2ω=ω−λ∗grad_squared dw特点•把每一维度的梯度的平方和记录下来,每次学习率都除以这个和•每一维度的学习率不一样,而且都在不断减小•在梯度大的维度,减小下降速度.在梯度小的维度, 加快下降速度•让学习率适应参数•无需手动调整学习率•缺点: 在训练过程中, 累加的和会持续增长, 这回导致学习率变小以至于最终变得无限小, 那么Adagrad将无法取得额外的信息Adadeltad w = ∂ J ∂ω g r a d _ s q u a re d = α∗ g r a d _ s q u a r e d + ( 1 −α ) ∗ d w 2 ω = ω−λ∗ d w g r a d _ s q u a r e d dw = \frac{\partial J}{\partial\omega}\\ grad\_squared = \alpha * grad\_squared + (1 - \alpha) * dw^2\\ \omega = \omega - \lambda * \frac{dw}{\sqrt{grad\_squared}} dw=∂ω∂Jgrad_squared=α∗grad_squared+(1−α)∗dw2ω=ω−λ∗grad_squared dw特点•在Adagrad的基础上进行扩展, 以处理Adagrad学习率单调递减的问题Adam特点d w = ∂ J ∂ω m o me n t 1 = β 1 ∗ m o m e n t 1 + ( 1 −β1 ) ∗ d w m o m e n t2 = β 2 ∗ m o m e n t 2 + ( 1 −β 2 ) ∗ d w2 b i a s 1 = m o m e n t 1 ÷ ( 1 −β 1 t ) b i a s 2 = m o m e n t 2 ÷ ( 1 −β 2 t ) w −= λ ∗ b i a s 1 ÷ b i s a 2 b i a s 为偏差 dw = \frac{\partial J}{\partial \omega}\\ moment_1 = \beta_1 *moment_1 + (1-\beta_1) * dw\\ moment_2 = \beta_2 * moment_2 + (1-\beta_2) * dw^2\\ bias_1 = moment_1 \div (1-\beta_1^t)\\ bias_2=moment_2 \div (1-\beta_2^t)\\ w -= \lambda * bias_1\div\sqrt{bisa_2}\\ bias为偏差dw=∂ω∂Jmoment1=β1∗moment1+(1−β1)∗dwmoment2=β2∗moment2+(1−β2)∗dw2bias1=mome nt1÷(1−β1t)bias2=moment2÷(1−β2t)w−=λ∗bias1÷bisa2bias为偏差•结合了Momentum和RMSprop的特点•自适应学习率b e t a 1 = 0.9 , b e t a 2 = 0.999 , λ =1 e − 3 或 5 e − 4 beta_1=0.9,beta_2=0.999, \lambda=1e-3或5e-4beta1=0.9,beta2=0.999,λ=1e−3或5e−4是许多模型的一个很好的起点本人博客:。
梯度下降法算法步骤
梯度下降法是机器学习中最常用的算法之一,用于优化模型参数。
其原理为通过求解模型参数的梯度,逐步更新参数,使损失函数的值
最小化,从而使模型更加准确。
梯度下降法的步骤如下:
1. 初始化参数:首先需要对模型参数进行初始化,可以随机初始
化或者使用已有的先验知识来初始化。
2. 计算损失函数:使用当前的模型参数进行模型训练,计算模型
的损失函数。
3. 计算梯度:计算当前模型参数的梯度,即对每个参数进行求偏
导数,得到参数的变化方向和大小。
4. 更新参数:根据计算得到的梯度和学习率,对每个参数进行更新。
学习率决定了每次更新的步长,过大会导致算法不稳定,过小会
导致算法收敛过慢。
5. 判断停止条件:重复上述步骤,直到损失函数的值收敛到一个
稳定值或者达到设定的迭代次数。
梯度下降法的优点是可以处理大规模的数据集,几乎适用于所有
类型的模型,具有比较高的效率。
但是也存在一些缺点,例如可能会
陷入局部最优解,需要进行多次运行以获取更好的结果。
总之,掌握梯度下降法的原理和步骤,可以帮助我们更好地理解和优化模型,提升机器学习的效果。
同时需要注意选择合适的学习率和停止条件,以便更快地收敛和避免过拟合。
梯度下降法中梯度的概念和下降的准则梯度下降法是一种常用于优化问题的迭代算法,通过迭代的方式逐渐减小目标函数的值,从而找到使目标函数最小化的参数值。
在梯度下降法中,梯度是一个向量,表示目标函数在一些点处的变化速率和方向。
下降的准则是通过梯度来确定迭代的方向和步长。
梯度的概念:梯度是一个向量,其分量是目标函数对各个参数的偏导数。
假设目标函数为f(x)(其中x是一个n维向量),梯度表示为∇f(x),是一个n维向量。
其中,第i个分量表示目标函数对第i个参数的偏导数,即∂f(x)/∂xi。
梯度的方向是参数变化最速的方向,梯度的大小表示了参数变化的速度。
在梯度下降法中,通过不断沿着负梯度的方向移动,可以逐渐减小目标函数的值。
具体来说,下降的准则可以分为两个方面:方向和步长。
1.方向:根据梯度的定义,梯度的方向是目标函数在特定点的变化最快的方向。
因此,在梯度下降法中,迭代的方向应该是梯度的负方向,即-w·∇f(x),其中w是一个正数。
这样选择的方向可以确保迭代过程中目标函数值的减小。
2.步长:步长决定了每次迭代中参数的变化量。
步长太大可能导致在极小值点附近发散,步长太小可能导致收敛速度过慢。
因此,在梯度下降法中,需要选择一个合适的步长,使得迭代可以快速收敛,并且不会发散。
一种常用的选择步长的方法是使用线技术,即在选择下降方向后,通过找到最优的步长。
常用的线方法包括固定步长、精确线和非精确线等。
总结:梯度下降法通过迭代不断地沿着梯度的负方向移动,并根据一定的准则来更新参数,以逐渐减小目标函数的值。
梯度表示了目标函数在其中一点的变化速率和方向,通过迭代梯度下降法可以找到目标函数的极小值点。
下降的准则包括选择梯度的负方向作为下降的方向,以及选择合适的步长来确保迭代的有效性和收敛性。