【机器学习】最优化方法:梯度下降法

29 篇文章 37 订阅
订阅专栏
26 篇文章 15 订阅
订阅专栏

1. 概念

梯度下降法(Gradient Descent)又称最速下降法(Steepest descent)是一种常用的一阶优化方法,是一种用于求解无约束最优化问题的最常用的方法。它选取适当的初始值{x^{\left( 0 \right)}},并不断向负梯度方向迭代更新x,实现目标函数的极小化,直到收敛。

2. 梯度下降的直观解释

以下山法作为类别,我们想要从山的某个位置下山,但我们并不知道山脚的位置,只能走一步算一步。从当前位置出发,往当前位置的负梯度方向走一步,即往最陡峭的方向往下走一步。然后继续求解当前位置的梯度,往负梯度方向走一步。不停走下去,一直走到我们认为已经到了山脚的位置。当然,也有可能,我们没办法到山脚,而是到了一个小山丘底部。

当目标函数是凸函数的时候,梯度下降法可以确保找到全局最优解;否则不一定能找到全局最优解,可能会陷入局部最优解。

3. 梯度下降法的原理

考虑最优化问题\min {}_xf\left( x \right),其中f\left( x \right)具有一阶连续偏导数。若第k次迭代值为{x^{\left( k \right)}},对f\left( x \right){x^{\left( k \right)}}处进行一阶泰勒展开:

                                    f\left( x \right) = f\left( {​{x^{\left( k \right)}}} \right) + \left( {x - {x^{\left( k \right)}}} \right)\nabla f\left( {​{x^{\left( k \right)}}} \right)             (1)

凸函数f(\theta)的某一小段[\theta_0,\theta]由上图黑色曲线表示,可以利用线性近似的思想求出f(\theta)的值,如上图红色直线。该直线的斜率等于f(\theta)\theta_0处的导数。则根据直线方程,很容易得到f(\theta)的近似表达式为:

               f\left( \theta \right) = f\left( {​{\theta _0}} \right) + \left( {\theta - {\theta _0}} \right) \cdot \nabla f\left( {​{\theta _0}} \right)

这就是一阶泰勒展开式的推导过程,主要利用的数学思想就是曲线函数的线性拟合近似

其中,x - {x^{\left( k \right)}}是微小矢量,大小是步长\alpha,类比于下山过程中的一步。\alpha是标量,x - {x^{\left( k \right)}}的单位向量用v表示,则x - {x^{\left( k \right)}}可以表示为:

                                                      x - {x^{\left( k \right)}} = \alpha v           (2)

此时,(1)可以化为:

                                             f\left( x \right) = f\left( {​{x^{\left( k \right)}}} \right) + \alpha v\nabla f\left( {​{x^{\left( k \right)}}} \right)           (3)

我们希望每次迭代,都能使f\left( x \right)变小,也就是说希望有:

                                             f\left( x \right) - f\left( {​{x^{\left( k \right)}}} \right) = \alpha v\nabla f\left( {​{x^{\left( k \right)}}} \right) < 0           (4)

由于\alpha是标量,且一般设定为正值,因此\alpha可以忽略。由于v\nabla f\left( {​{x^{\left( k \right)}}} \right)都是向量,根据向量的乘积公式可以将(4)转换为:

                                    v\nabla f\left( {​{x^{\left( k \right)}}} \right) = \left\| v \right\| \cdot \left\| {f\left( {​{x^{\left( k \right)}}} \right)} \right\|\cos \left( {v,f\left( {​{x^{\left( k \right)}}} \right)} \right) < 0           (5)

v\nabla f\left( {​{x^{\left( k \right)}}} \right)反向时,\cos \left( {v,f\left( {​{x^{\left( k \right)}}} \right)} \right) = - 1,可以使得\alpha v\nabla f\left( {​{x^{\left( k \right)}}} \right)最小,且为负。即v的方向是使局部的目标函数下降最快的方向。得到v为:

                                                      v = - \frac{​{\nabla f\left( {​{x^{\left( k \right)}}} \right)}}{​{\left\| { \nabla f\left( {​{x^{\left( k \right)}}} \right)} \right\|}}          (6)

以上解释了为什么局部下降最快的方向就是梯度的负方向。

将(6)中的最优解v代入(2)中,得到x的更新表达式为:

                                             x - {x^{\left( k \right)}} = - \alpha \frac{​{ \nabla f\left( {​{x^{\left( k \right)}}} \right)}}{​{\left\| {\nabla f\left( {​{x^{\left( k \right)}}} \right)} \right\|}}          (7)

由于\left\| {f\left( {​{x^{\left( k \right)}}} \right)} \right\|是标量,可以吸收入\theta里面,梯度下降算法的更新表达式就变成了:

                                             x - {x^{\left( k \right)}} = - \alpha \nabla f\left( {​{x^{ \left( k \right)}}} \right)          (8)

以上就是梯度下降算法公式的数学推导过程。

4. 算法描述

输入:目标函数f\left( x \right)、梯度函数\nabla f\left( x \right),计算精度\varepsilon

输出:f\left( x \right)的极小点{x^*}

(1)初始化相关参数。取初始值{x^{\left( 0 \right)}} \in {R^n},置迭代次数k=0.

(2)计算当前位置的目标函数f\left( {​{x^{\left( 0 \right)}}} \right)

(3)计算当前位置的目标函数的梯度\nabla f\left( {​{x^{\left( k \right)}}} \right)如果\left\| {\nabla f\left( {​{x^{\left( k \right)}}} \right)} \right\| < \varepsilon,则迭代结束,{x^*} = {x^{\left( k \right)}}。否则,继续往下走。

(4)更新x{x^{\left( {k + 1} \right)}} = {x^{\left( k \right)}} - \alpha \nabla f\left( {​{x^{\left( k \right)}}} \right),如果\left\| {​{x^{\left( {k + 1} \right)}} - {x^{\left( k \right)}}} \right\| < \varepsilon或者\left\| {f\left( {​{x^{\left( {k + 1} \right)}}} \right) - f\left( {​{x^{\left( k \right)}}} \right)} \right\| < \varepsilon,则停止迭代,令{x^*} = {x^{\left( {k + 1} \right)}}。否则,将迭代次数置为k = k + 1,转到(3)继续迭代。

在机器学习中,目标函数f\left( x \right)实际上就是代价函数J\left( \theta \right)

5. 梯度下降法种类

5.1 批量梯度下降法(Batch Gradient Descent,BGD)

批量梯度下降法是梯度下降法最常用的形式。每次更新参数要使用所有的样本进行计算

假设目标函数为:

                                             J\left( \theta \right) = \frac{1}{​{2m}}\sum\limits_{i = 1}^m {​{​{\left( {​{y_i} - {h_\theta }\left( {​{x_i}} \right)} \right)}^2}}

求偏导得:

                                             \frac{​{\partial J\left( \theta \right)}}{​{\partial {\theta _j}}} = - \frac{1}{m}\sum\limits_{i = 1}^m {\left( {​{y_i} - {h_\theta }\left( {​{x_i}} \right)} \right){x_{ij}}}

批量梯度下降法的更新公式为:

                                             {\theta ^{\left( {k + 1} \right)}} = {\theta ^{\left( k \right)}} - \alpha \sum\limits_{i = 1}^m {\left( {​{y_i} - {h_\theta }\left( {​{x_i}} \right)} \right){x_{ij}}}

5.2 随机梯度下降法(Stochastic Gradient Descent,SGD)

随机梯度下降法与批量梯度下降法类似。每次更新参数只使用随机的一个样本进行计算。

随机梯度下降法的更新公式为:

                                             {\theta ^{\left( {k + 1} \right)}} = {\theta ^{\left( k \right)}} - \alpha \left( {​{y_i} - {h_\theta }\left( {​{x_i}} \right)} \right){x_{ij}}

批量梯度下降法和随机梯度下降法的区别是什么?

(1)批量梯度下降法每次使用所有数据来更新参数,训练速度慢;

(2)随机梯度下降法每次只使用一个数据来更新参数,训练速度快;但迭代方向变化大,不一定每次都朝着收敛的方向,不能很快地收敛到局部最优解。

5.3 小批量梯度下降法(Mini-Batch Gradient Descent,MBGD)

小批量梯度下降法是批量梯度下降法和随机梯度下降法的一个折中。每次更新参数选择一小部分数据计算

选择t个数据,1<t<m

小批量梯度下降法的更新公式为:

                                             {\theta ^{\left( {k + 1} \right)}} = {\theta ^{\left( k \right)}} - \alpha \sum\limits_{i = 1}^t {\left( {​{y_i} - {h_\theta }\left( {​{x_i}} \right)} \right){x_{ij}}}

6. 局部最优解解决方法

如第二节(梯度下降的直观解释)中描述的,如果目标函数具有多个局部极小值,不能保证找到的解是全局最优解。为了解决这一问题,常采用以下策略来试图跳出局部最优:

1. 以多组不同参数值进行初始化,这样有可能陷入不同的局部极小,从中进行选择有可能获得更接近全局最小的结果;

2. 使用“模拟退火”技术,在每一步都以一定概率接收比当前解更差的结果,有助于跳出局部极小;

3. 使用随机梯度下降,最小化每个样本的损失函数,而不是最小化整体的损失函数,虽然不是每次迭代得到的损失函数都朝着收敛的方向, 但是整体的方向是朝着全局最优解的,最终的结果往往是在全局最优解附近。

参考文献:

1.《 统计学习方法》附录A梯度下降法——李航 

2. 为什么局部下降最快的方向就是梯度的负方向?

3.  梯度下降(Gradient Descent)小结

 

机器学习基础-最优化方法梯度下降
weixin_45516016的博客
12-08 482
最优化方法-梯度下降 这是机器学习基础的第五篇,本文主要的学习内容为最优化方法梯度下降梯度下降: 实现梯度下降、线性回归中的梯度下降 随机梯度下降:相关代码调用即可 1.前言: 机器学习方法论 之前已经学习了分类算法:KNN算法,回归算法:线性回归,从这些算法中可以知道: 机器学习就是需要找到一个函数f(x)并进行优化,且这种函数能够进行做预测、分类、生成等工作。 就如何找到函数f(x...
局部最优怎么办?
06-30 2286
1、使用模拟退火算法SA(Simulate Anneal) 贪心算法是,在求最优解时,从a点开始试探,如果函数值继续减少,那么试探过程继续,到达b点时,试探过程结束(因为无论朝哪个方向努力,结果只会越来越大),因此找到了局部最优b点。 模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。这个概率随着时间推移逐渐降低(逐渐降低才能...
深度学习 - 解决局部最优点问题的方案
热门推荐
马飞飞的博客
09-11 1万+
问题描述 一般的梯度下降方法寻找的是loss function的局部极小值,而我们想要全局最小值。如下误差曲面图所示,我们希望loss值可以降低到右侧深蓝色的最低点,但loss有可能“卡”在左侧的局部极小值中,也就是图中红线所走的路径。 方案 为了防止卡到'局部最优点',我们有以下几个方法:       [1]使用随机梯度下降代替真正的梯度下降。可以这样理解,每次针对单个数据样例进行摸...
在卷积神经网络中如何解决梯度下降时的局部最优解问题
Are_you_ready的博客
03-30 912
1、更深的网络结构:深度越深的神经网络通常有更多的参数,因此有更大的空间可以搜索全局最优解。5、自适应学习率:自适应学习率可以根据每个参数的历史梯度值来调整学习率大小,从而更好地平衡全局和局部优化。3、预训练网络参数:预训练可以将网络的参数初始化到接近全局最优解的位置,这样可以更快地收敛到全局最优解。2、数据增强:数据增强可以增加数据量,减少过拟合的发生,从而减少陷入局部最优解的可能性。4、正则化:正则化可以限制模型的复杂度,减少过拟合的风险,从而更好地避免陷入局部最优解
算法金 | 再见!!!梯度下降(多图)
最新发布
算法金「全网同名」的博客
06-19 1027
梯度下降优化算法的概述,目的在于帮助读者理解不同算法的优缺点梯度下降优化算法是机器学习和深度学习中最常用的优化算法之一。它通过不断调整模型参数,使得损失函数的值逐渐减小,从而使模型逐步逼近最优解梯度下降法机器学习和深度学习中最基础和常用的优化算法之一。通过不断调整模型参数,使得损失函数的值逐渐减小,梯度下降法能够帮助模型逐步逼近最优解。根据数据集和具体应用场景的不同,可以选择不同形式的梯度下降法,如批梯度下降法、随机梯度下降法和小批量梯度下降法。1. 批梯度下降法使用整个数据集计算梯度。
梯度下降法(通俗详解)
m0_70832728的博客
09-17 1023
好嘞,以上就是笔者要分享的全部内容了,本篇博客记录了笔者最优化课程的第二次作业(使用梯度下降法求解一次、二次函数)。随机梯度下降法(SGD= stochastic gradient descent)小批量梯度下降法(MBGD = mini-batch gradient descent)倘若大佬们发现文章有问题可以直接评论区斧正,小的定会虚心接受并改之!😁😁😁。
如何跳出局部最优
很吵请安静
07-24 6562
初始参数随机,用不同的初始参数进行多组实验找出最优的一组解,这相当于从不同的位置进行搜索 带动量的梯度下降,可能会越过最低点 随机梯度下降,加入随机因素,每次取一个样本计算梯度,因为单点的最优方向可能不是全局的最优方向,表现在图像上就是在寻找全局最优的路上饶了很多弯路才到达最优点。 使用模拟退火算法,每次以一定的概率允许移动到比当前解差的点,可以跳过局部最优 ...
梯度下降法的神经网络容易收敛到局部最优,为什么应用广泛?
夕小瑶科技说
02-01 2546
文 | Summer Clover@知乎本文已获作者授权,禁止二次转载这是Deep Learning Theory里很基本也很核心的一个问题。在这个问题上,初学者容易被入门教学误导,非此...
机器学习入门:梯度下降法.rar
07-01
机器学习领域,梯度下降法是一种非常基础且重要的优化算法,它被广泛应用于各种模型的参数求解,包括线性回归、逻辑回归、神经网络等。本资源"机器学习入门:梯度下降法.rar"显然是针对初学者设计的一套教程,由...
基于LR的优化方法:梯度下降法,随机梯度下降法,牛顿法,LBFGS,BFGS.zip
08-25
本资料包主要探讨了五种常见的优化方法,分别是梯度下降法、随机梯度下降法、牛顿法以及两种有限内存的拟牛顿法——LBFGS和BFGS。这些方法在逻辑回归(Logistic Regression, LR)和其他复杂模型如神经网络中广泛使用...
机器学习梯度下降法
01-06
梯度下降法(Gradient descent)是一个一阶最优化算法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向...
人工智能与机器学习-梯度下降法
12-21
《人工智能与机器学习-梯度下降法梯度下降法机器学习和人工智能领域中一个基础且重要的优化算法,尤其在训练模型时用于寻找损失函数的最小值。它是一种一阶最优化方法,通过沿着目标函数梯度的负方向进行迭代...
人工智能与机器学习梯度下降法
01-20
一、梯度下降法 1、概述 梯度下降(gradient descent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。 2、原理 梯度下降算法的...
常见跳出局部最小值策略
Touch_Dream的博客
04-12 1万+
现实任务中,人们常采用以下策略来试图“跳出”局部最小值,从而达到全局最小值: 1、以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,这相当于从多个不同的初始化点开始搜索,从而可能寻找全局最优。 2、使用模拟退化技术,模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。在每步迭代过程中,接受“次优解”的概率随着时间的推移而逐渐降低
深度学习笔记(四):梯度下降法与局部最优解
不积跬步,无以至千里!
03-09 1万+
在深度学习过程中,避免不了使用梯度下降算法。但是对于“非凸问题”,训练得到的结果往往可能陷入局部极小值,而非全局最优解。那么这里就以Himmelblau 函数为例位例,探究待优化参数的初始值对梯度下降方向的影响,从而得到不同的局部极小值。 首先介绍一下Himmelblau 函数: 下图 为 Himmelblau 函数的等高线,大致可以看出,它共有 4 个局部极小值点,并且局 部极小值都是 0,所...
为什么“梯度下降法的神经网络容易收敛到局部最优”是个错觉--笔记
weixin_41521681的博客
09-05 3524
一、我们可能从来没有找到过“局部最优”,更别说全局最优了。 作者:五楼whearer 链接:https://www.zhihu.com/question/68109802/answer/262143638 深度神经网络“容易收敛到局部最优”,很可能是一种想象,实际情况是,我们可能从来没有找到过“局部最优”,更别说全局最优了。 很多人都有一种看法,就是“局部最优是神经网络优化的主要难点”。这来源于一维优化问题的直观想象。在单变量的情形下,优化问题最直观的困难就是有很多局部极值,如 人们直观...
元启发式如何跳出局部最优?
zhugby的博客
07-10 1808
总结一下各种常见的元启发式如何跳出局部最优解. SA: 若新解优于原解,接受,否,以一定概率【插入公式】接受较差解。 VND:shaking策略,扰动初始解,shaking本质上来说也是邻域搜索的一种 VNS:shaking+SA的一定概率接受差解的策略,探索性更强了。 Tabu:禁忌列表的设置。 ......
神经网络基础-神经网络补充概念-51-局部最优问题
CSDNXXCQ的博客
08-17 2171
局部最优问题是在优化问题中常见的一个挑战,特别是在高维、非凸、非线性问题中。局部最优问题指的是算法在优化过程中陷入了一个局部最小值点,而不是全局最小值点。这会导致优化算法在某个局部区域停止,而无法找到更好的解。参数初始化策略:采用合适的参数初始化策略,如Xavier初始化、He初始化等,可以帮助降低陷入局部最优的风险。随机初始化:通过多次随机初始化模型参数,运行优化算法多次,以期望能够找到更好的初始点,从而避免陷入局部最优。多初始点策略:使用多个不同的初始点,运行优化算法多次,以期望找到更好的全局最优解
梯度下降法局部最优解和鞍点的问题
Bing_bing_bing_的博客
07-10 5825
陷入局部最优并不是神经网络的问题,在一个高维空间中做梯度下降,很难收敛到局部最优,因为局部最小值要求函数在所有维度上都是局部最小值。若一个维度收敛到局部最小值的概率是0.5,则n维度收敛到局部最小值的概率是0.5^n,因此若n足够大,则收敛到局部最小值得概率接近于0。 实际情况,在高维平面,函数会落在鞍点上。鞍点是函数在某一维度或多个维度上梯度不为0的点。因此,落在鞍点上的概率为1-0.5^n。...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【机器学习】一文读懂正则化与LASSO回归,Ridge回归 71112
  • web前端学习笔记(一) 34462
  • 【机器学习】线性回归原理推导与算法描述 33351
  • 【机器学习】特征选择(过滤式、包裹式、嵌入式) 21509
  • 【机器学习】模型评估与选择(留出法、交叉验证法、查全率、查准率、偏差、方差) 18805

分类专栏

  • 机器学习进阶之路 26篇
  • 资源地址 1篇
  • web前端 5篇
  • JavaScript 4篇
  • 机器学习 29篇
  • 学习交流 9篇

最新评论

  • 【机器学习】感知机原理详解

    声微丶饭否Zzzz: 感觉是最小二乘的另一种表达方式

  • 【机器学习】Boosting与AdaBoost分类与回归原理详解与公式推导

    m0_62194751: 请问回归问题中的样本权重和基学习器的权重也是推导出来的吗?如果是的话,有具体的推导过程吗?为啥我找遍了都找不到,只有分类问题会有很详细的推导过程

  • 【机器学习】感知机原理详解

    WhiteNight123: 这个动图有意思表情包

  • 【机器学习】线性回归原理推导与算法描述

    榆钱不知秋: 在统计上,线性回归可以用来发掘和解释特征变量与目标变量之间的相关性。但是这类应用场景首先需要检验线性回归的假设是否满足,和变量与变量之间是否存在共线性(collinearity)等问题。但是从机器学习预测的角度而言,关注线性回归模型对新数据的预测性是第一位的,特征变量的解释性和共线性问题不是最为关心的问题。

  • 【机器学习】深入剖析梯度提升决策树(GBDT)分类与回归

    HaNkerwoo的小号: 博主博主,决策树可以对预测模型的变量进行筛选吗?如果可以筛选是什么标准呢?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 【机器学习】支持向量机原理与序列最小最优化算法SMO
  • 【机器学习】二次规划
  • 【机器学习】拉格朗日乘子法
2019年9篇
2018年30篇
2015年1篇
2014年13篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码龙华网站设计坑梓关键词排名包年推广永湖网站设计大鹏百姓网标王大运网站推广工具盐田网站搭建永湖百搜标王福田至尊标王横岗设计网站大鹏百度竞价大运网站推广工具观澜关键词排名塘坑企业网站制作荷坳seo龙华企业网站改版盐田网站定制南山网站推广惠州seo排名广州关键词排名布吉关键词按天计费坑梓网站优化按天收费横岗设计公司网站深圳建站民治网站制作龙岗网站建设惠州英文网站建设横岗网站定制大浪英文网站建设大运建站同乐百搜词包歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化