前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入机器学习的梯度优化

深入机器学习的梯度优化

作者头像
算法进阶
发布于 2022-06-02 04:36:04
发布于 2022-06-02 04:36:04
4380
举报
文章被收录于专栏:算法进阶算法进阶

简介

机器学习在选定模型、目标函数之后,核心便是如何优化(目标)损失函数。而常见的优化算法中,有梯度下降、遗传算法、模拟退火等算法,其中用梯度类的优化算法通常效率更高,而使用也更为广泛。接下来,我们从梯度下降(Gradient descent)、梯度提升(Gradient Boosting)算法中了解下“梯度”优化背后的原理。

一、梯度

我们先引出梯度的定义:

梯度是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数

简单对于二维的情况,梯度也就是曲线上某点的切线斜率,数值就是该曲线函数的导数,如y=x^2^ ,求导dy/dx=2x

扩展到3维(多维),各点方向导数是无限多(一个平面),梯度也就是方向导数最大的方向,数值即对多元函数各参数求偏导数,如y=x^2^ + 3z^2^ ,求x偏导dy/dx=2x,求z偏导dy/dz=6z。

换句话说,沿着函数(曲线)的任意各点位置取梯度相反的方向,如y=x^2^ + 3z^2^ 的负梯度-(2x, 6z),也就是多元函数下降最快的地方,越容易找到极值。这也就是梯度下降算法的基本思想。

二、梯度下降算法

2.1 梯度下降的基本原理

梯度类的优化算法,最为常用的就是随机梯度下降,以及一些的升级版的梯度优化如“Adam”、“RMSP”等等。

如下介绍梯度下降算法的基本原理:

首先可以将损失函数J(w)比喻成一座山,我们的目标是到达这座山的山脚(即求解出最优模型参数w使得损失函数为最小值)

这时,梯度下降算法可以直观理解成一个下山的方法。

下山要做的无非就是“往下坡的方向走,走一步算一步”,而在损失函数这座山上,每一位置的下坡的方向也就是它的负梯度方向(直白点,也就是山各点位置的斜向下的方向)。每往下走到一个位置的时候,代入当前样本的特征数据求解当前位置的梯度,继续沿着最陡峭最易下山的位置再走一步。这样一步步地走下去,一直走到山脚(或者山沟沟)。

当然这样走下去,有可能我们不是走到山脚(全局最优,Global cost minimun),而是到了某一个的小山谷(局部最优,Local cost minimun),这也后面梯度下降算法的可进一步调优的地方。对应的算法步骤,直接截我之前的图:

与梯度下降一起出现的还有个梯度上升,两者原理一致,主要是术语的差异。简单来说,对梯度下降目标函数取负数,求解的是局部最大值,相应需要就是梯度提升法。

2.2 梯度下降的数学原理——泰勒展开

本节会通过泰勒展开定理,"推导"得出梯度下降

首先引出泰勒展开原理,它是种计算函数某点的近似值的方法,通过多个多项式拟合某一函数f(x)。泰勒多项式展开的项数越多,拟合的越好

  • 1、回到我们的损失函数J,做个一阶的泰勒展开近似:(其中θ-θ0越小越近似)
  • 2 其中θ−θo是微小矢量,做一下变换,θ-θ0以λ*d替代(λ为向量长度,d为单位向量),可得:
  • 3、计算后式的向量乘积,可得:(theta为梯度与d向量的夹角)
  • 4、上式中,我们希望J(θ) 越小越好,而J(θo)为常量,所以我们希望后项越小越好,当cos(180)=-1可以取到最小值,意味着梯度与d单位向量的夹角为相反的,也就是需要d为负梯度方向:
  • 5、进一步的,将d代入式子:θ-θo = λ*d,就可以得到梯度下降公式的雏形(其中λ及1/||J'||为常数可以改写为常用的学习率α),优化后的θ也就是:

三、梯度提升算法

说到梯度提升(Gradient Boosting),要注意的是和上文谈到的梯度上升不是一个概念。

梯度提升是一种加法模型思想(Fm = Fm-1 + hm, 同上泰勒定理,hm应为负梯度),不像梯度下降直接利用负梯度更新模型参数,梯度提升是通过各弱学习器去学习拟合负梯度的,在进一步累加弱学习器,来实现损失函数J的负梯度方向优化。

梯度提升算法很像是一个“打高尔夫,不断补杆”的过程,基本思路是弱学习器一个接着学习上一个学习器的残差或负梯度(没学习好的内容),最终得到m个弱学习器h0..hm一起决策。(注:对于平方损失函数, 其负梯度刚好等于残差。我们通过直接拟合负梯度可以扩展到更为复杂的损失函数。

举个简单例子,假如我们的目标值是【100】,当第一个弱学习器h0学习目标值100,实际输出y^只有【60】,和实际y还是有偏差的,残差值y^ - y,第二个学习器h1继续学习拟合之前的残差(或者负梯度),学习剩下的【100-60】,并实际输出【50】...依次学习到第h2个弱学习器拟合之前的残差【100-60-50】,这时比较准确地输出【-10】,达到较好的拟合结果,算法结束。整个模型的表示就是Fm = h0 + h1 + h2 = 60 + 50 - 10 => 100。如下图具体算法:

后记

在优化领域,梯度优化方法无疑是简单又极有效率的,但不可避免的是它通常依赖着有监督标签,且得到的是近似最优解。不可否认,在优化的道路上,我们还有很长的一段路要走。

参考文献: https://zhuanlan.zhihu.com/p/45122093 https://zhuanlan.zhihu.com/p/82757193 https://www.zhihu.com/question/63560633

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法进阶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习概念:梯度下降
机器学习中大部分都是优化问题,大多数的优化问题都可以使用梯度下降/上升法处理,所以,搞清楚梯度算法就非常重要
YingJoy_
2018/03/24
1.8K2
机器学习概念:梯度下降
梯度下降算法简单理解:一阶泰勒展开式,梯度下降数学原理
梯度下降算法的公式非常简单,”沿着梯度的反方向(坡度最陡)“是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是梯度的负方向呢?也许很多朋友还不太清楚。没关系,接下来我将以通俗的语言来详细解释梯度下降算法公式的数学推导过程。
zhangjiqun
2024/12/14
6340
梯度下降算法简单理解:一阶泰勒展开式,梯度下降数学原理
神经网络中梯度下降算法
如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属。梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小二乘法去解析最优解,但是其中会涉及到对矩阵求逆,由于多重共线性问题的存在是很让人难受的,无论进行L1正则化的Lasso回归还是L2正则化的岭回归,其实并不让人满意,因为它们的产生是为了修复此漏洞,而不是为了提升模型效果,甚至使模型效果下降。但是换一种思路,比如用梯度下降算法去优化线性回归的损失函数,完全就可以不用考虑多重共线性带来的问题。
商业新知
2019/07/17
8370
神经网络中梯度下降算法
机器学习概念:梯度下降
机器学习中大部分都是优化问题,大多数的优化问题都可以使用梯度下降/上升法处理,所以,搞清楚梯度算法就非常重要。
YingJoy_
2018/04/04
1.5K2
机器学习概念:梯度下降
理解梯度下降在机器学习模型优化中的应用
本文介绍了梯度下降算法的起源、批量梯度下降、随机梯度下降和小批量梯度下降,以及它们在机器学习中的重要性。通过这些算法,可以优化模型权系数,从而提高模型的性能。
chaibubble
2018/01/02
1.8K0
理解梯度下降在机器学习模型优化中的应用
机器学习入门:梯度下降算法(上)
一个人 被困在山上,需要从山上下来 (i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。
小言从不摸鱼
2024/09/10
1090
机器学习入门:梯度下降算法(上)
还不了解梯度下降法?看完这篇就懂了!
那么其实可以总结出关于“如何找到函数f(x)”的方法论。可以看作是机器学习的“三板斧”:
木东居士
2019/12/10
2.6K0
还不了解梯度下降法?看完这篇就懂了!
为什么局部下降最快的方向就是梯度的负方向?
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/red_stone1/article/details/80212814
红色石头
2019/05/25
1.3K0
一文概览神经网络优化算法
机器学习的优化(目标),简单来说是:搜索模型的一组参数 w,它能显著地降低代价函数 J(w),该代价函数通常包括整个训练集上的性能评估(经验风险)和额外的正则化(结构风险)。与传统优化不同,它不是简单地根据数据的求解最优解,在大多数机器学习问题中,我们关注的是测试集(未知数据)上性能度量P的优化。
算法进阶
2022/06/02
1.2K0
一文概览神经网络优化算法
[白话解析] 通俗解析集成学习之GBDT
本文将为大家讲解GBDT这个机器学习中非常重要的算法。因为这个算法属于若干算法或者若干思想的结合,所以很难找到一个现实世界的通俗例子来讲解,所以只能少用数学公式来尽量减少理解难度。
罗西的思考
2020/09/07
2K0
机器学习算法之线性回归的损失和优化
思考一下,这样的话,会发生什么?真实结果与我们预测的结果之间是不是存在一定的误差呢?类似下图所示:
小闫同学啊
2020/02/26
9530
机器学习笔记,原来梯度下降这么简单
之前我们聊了线性回归的公式推导,最后关于参数求解的地方卖了个关子。想要针对函数求极值处的参数值,其实我们有很多方法可以用,除了简单粗暴的公式推导之外,还有牛顿法、拟牛顿法、梯度下降法等许多方法。今天我们来聊聊其中比较简单的梯度下降法。
TechFlow-承志
2022/08/26
4580
机器学习笔记,原来梯度下降这么简单
梯度下降求极值,机器学习&深度学习
导数也叫导函数,或者微商,它是微积分中的重要基础概念,从物理学角度来看,导数是研究物体某一时刻的瞬时速度,比如你开车从家 8:00 出发到公司上班,9:00 到到达公司,这一个小时内的平均车速是 80km/h,而途中8:15:30这一时刻的速度,就被称为瞬时速度,此刻的速度可能是 100km/h,也可能是 20km/h。而从几何意义上来讲,你可以把它理解为该函数曲线在一点上的切线斜率。 导数有其严格的数学定义,它巧妙的利用了极限的思想,也就是无限趋近于 0 的思想。设函数 y=f(x) 在点 x0 的某个邻域内有定义,当自变量 x 在 x0 处有增量 Δx,(x0+Δx)也在该邻域内时,相应地函数取得增量 Δy=f(x0+Δx)-f(x0);如果 Δy 与 Δx 之比当 Δx→0 时极限存在,则称函数 y=f(x) 在点 x0 处可导,并称这个极限为函数 y=f(x) 在点 x0 处的导数记做 :
zhangjiqun
2024/12/14
1010
梯度下降求极值,机器学习&深度学习
什么是梯度下降
梯度下降(Gradient Descent GD)简单来说就是一种寻找目标函数最小化的方法,它利用梯度信息,通过不断迭代调整参数来寻找合适的目标值。 本文将介绍它的原理和实现。
oYabea
2020/09/07
2.5K0
机器学习优化算法(一)
我们在前面说过机器学习中的损失函数,其实机器学习中的每一个模型都是在求损失函数的最优解,即让损失达到最小值/极小值,求解方式有多种,本篇讲讲其中两个基本的优化方法:
张俊红
2018/10/08
1.1K0
机器学习优化算法(一)
深度学习500问——Chapter02:机器学习基础(2)
1. 为了得到训练逻辑回归模型的参数,需要一个代码函数,通过训练代价函数来得到参数。
JOYCE_Leo16
2024/03/19
2720
深度学习500问——Chapter02:机器学习基础(2)
Gradient Boosting梯度提升-GBDT与XGBoost解析及应用
集成学习是机器学习算法中地位非常重要的一类算法, 其拥有理论基础扎实、易扩展、可解释性强等特点, 其核心思想是, 使用弱学习器(如线性模型、决策树等)进行加权求和, 从而产生性能较为强大的强学习器. 若按照指导弱学习器进行学习的理论基础进行分类的话, 集成学习的算法可分为两大类: 1. 基于偏差方差分解和bagging(bootstrap aggregating, 有放回抽样与集成)进行弱学习器学习的算法, 其典型代表是RF(Random Forest, 随机森林); 2. 基于梯度下降和boosting [1](提升)使弱学习器对前序产生的模型的不足之处进行改进, 以达到提升强学习器能力的效果, 其典型代表是AdaBoost(Adaptive Boosting, 自适应提升), GBDT(Gradient Boosting Decision Tree, 梯度提升决策树). 本文主要的阐述对象是第二类, 即基于梯度下降和boosting的算法, 具体分为如下章节:
SIGAI学习与实践平台
2019/05/13
1K0
Gradient Boosting梯度提升-GBDT与XGBoost解析及应用
梯度下降(Gradient Descent)小结
    在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就对梯度下降法做一个完整的总结。
刘建平Pinard
2018/08/14
3760
梯度下降(Gradient Descent)小结
机器学习1--线性回归模型
3),给定x, 残差e_i要服从正态分布(Normal Distribution);
用户5473628
2019/08/08
7650
【机器学习】GBDT
本文介绍了提升树模型中的梯度提升树算法GBDT (Gradient Boosting Decision Tree) 。首先介绍了提升树通过拟合残差来提升学习器的设计思想。然后介绍了基于梯度提升的GBDT算法,核心在于学习器本身不再拟合残差,而是学习器拟合残差的一阶梯度,权重拟合残差的一阶系数。最后介绍了GBDT对应分类和回归场景的学习流程。
yuquanle
2020/04/07
6840
推荐阅读
相关推荐
机器学习概念:梯度下降
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档