简介

机器学习在选定模型、目标函数之后,核心便是如何优化(目标)损失函数。而常见的优化算法中,有梯度下降、遗传算法、模拟退火等算法,其中用梯度类的优化算法通常效率更高,而使用也更为广泛。接下来,我们从梯度下降(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

- END -

往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码

【机器学习】深入机器学习的梯度优化相关推荐

  1. 机器学习模型的超参数优化 | 原力计划

    作者 | deephub 责编 | 王晓曼 出品 | CSDN博客 头图 | CSDN付费下载自东方IC 引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模 ...

  2. 机器学习模型定点化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  3. tensorflow超参数优化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  4. 【大论文】可扩展机器学习的并行与分布式优化算法综述_亢良伊2017

    一.基础知识: 1.目标函数 机器学习要优化的目标函数一般表现为一下形式: 函数J(θ)为目标函数,f为表示真实值与拟合值之差的损失函数,r(θ)为正则项(防止过拟合问题,主要分为L1正则项.L2正则 ...

  5. 模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

    模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般模型参 ...

  6. 深度学习机器学习面试题汇——模型优化,轻量化,模型压缩

    深度学习机器学习面试题汇--模型优化,轻量化,模型压缩 提示:互联网大厂可能考的面试题 若CNN网络很庞大,在手机上运行效率不高,对应模型压缩方法有了解吗 介绍一下模型压缩常用的方法?为什么用知识蒸馏 ...

  7. 凸优化 机器学习 深度学习_我应该在机器学习项目中使用哪个优化程序

    凸优化 机器学习 深度学习 This article provides a summary of popular optimizers used in computer vision, natural ...

  8. 机器学习调参与贝叶斯优化及其典型python实现hyperopt

    机器学习调参与贝叶斯优化及其典型python实现hyperopt hyperopt的详细实施参考笔者的如下文章: 使用hyperopt(Bayesian optimization)为lightGBM模 ...

  9. 机器学习(一)梯度下降算法的实现及过程分析

    机器学习(一)梯度下降算法 因为算法最好能应用到实际问题中才会让读者感到它的真实的用处,因此首先我来描述一个实际问题(梯度下降算法用以帮助解决该问题):给定一个指定的数据集,比如由若干某一地区的房屋面 ...

最新文章

  1. bilibili深入理解计算机系统笔记(1):汇编模拟器能跑了
  2. spring源码分析之spring-core-env
  3. 计算机主机内置的地址码被称为,2016年职称计算机考试WPS_Office单选练习试题1
  4. 钉钉开发者接口文档_无需开发,IT事件接入钉钉的方法详解
  5. python语句块规范_Python基础语法——代码规范判断语句循环语句
  6. linux shell转换时间格式,在bash中转换日期格式
  7. Veeam 全面助力等保2.0/ 云数据管理解决方案/ 医疗行业最佳实践
  8. 无需在数据集上学习和预训练,这种图像修复新方法效果惊人 | 论文
  9. leecode - 入门 -- 双指针秒杀数组/链表题目
  10. 离线地图瓦片下载工具
  11. 驱动人生win7系统如何升级win10一键装机图文教程
  12. 【数字IC】深入浅出理解UART协议
  13. 程序员为什么要写博客
  14. c语言解惑 指针 数组 函数和多文件编程,C语言解惑 指针、数组、函数和多文件编程...
  15. Unity笔记-贝塞尔曲线
  16. ssd测试软件cy,简析物体识别SSD算法
  17. (12)筋斗云案例(导航栏醒目显示跟随)
  18. NFS、GFS、NAS文件存储服务对比分析
  19. ERP是什么?ERP管理系统怎么用?
  20. 娶个什么样的女人做老婆

热门文章

  1. 选择了便只顾风雨兼程
  2. 为公司创建部门VLAN-华为ensp
  3. 基于 ECDSA 的 BSV 预言机
  4. 【英语学习】【WOTD】writhe 释义/词源/示例
  5. EA 源码工程 Java
  6. 王元元主编书籍计算机数学基础,计算机数学基础 - 王朝网络 - tc.wangchao.net.cn
  7. CAD控件教程:网上打开dwg文件时,对dwg文件路径加密的功能
  8. qt 获得系统输入法列表_2020法考主观题机考模拟系统入口(正式开通)!
  9. 面试前,一定要准备好这三件重要的事
  10. NLP-词向量(Word Embedding)-2013:Word2vec模型(CBOW、Skip-Gram)【对NNLM的简化】【层次Softmax、负采样、重采样】【静态表示;无法解决一词多义】