1 概述

梯度下降(Gradient Descent)在机器学习中是很常用的算法,它不仅被用在了线性回归上,还被广泛应用于机器学习的众多领域,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。

本文将从一个下山的场景开始,先提出梯度下降算法的基本思想,进而从数学上解释梯度下降算法的原理,解释为什么要用梯度,最后将此算法应用于具体的拟合直线的线性回归中。

2  梯度下降算法

2.1场景假设

想象一下你正站立在一座红色山上,站立在山的一点上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山,然后你按照自己的判断又迈出一步,重复上面的步骤,从一个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。如图1所示,具体可描述为:首先以当前所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处。

图1

2.2 梯度下降

梯度下降的基本过程就和下山的场景很类似。首先,我们有一个可微分的函数,这个函数就代表着一座山。我们的目标就是找到这个函数的最小值,也就是山底。根据之前的场景假设,最快的下山的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度,然后朝着梯度相反的方向,就能让函数值下降的最快。因为梯度的方向就是函数变化最快的方向。所以,我们重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求取梯度就确定了最陡峭的方向,也就是场景中测量方向的手段。

图2

2.3  数学解释

3 梯度下降算法的直观理解

接下来深入研究一下,更直观地感受一下这个算法是做什么的,以及梯度下降算法的更新过程有什么意义。梯度下降算法的更新规则如下:

图3

3.1 导数项的意义

图4

3.2 α的作用

图5

实际上,在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度。

图6

4  线性回归梯度下降代码实现

梯度下降算法和线性回归算法比较如下图:

首先,我们需要定义一个代价函数,在此我们选用均方误差代价函数(也称平方误差代价函数)

以上算法,有时也称为批量梯度下降。指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有m个训练样本求和。

下面给出具体实例,首先给出数据集:

图7

利用MATLAB进行梯度下降线性回归拟合,得到拟合结果,如图8,同时给出代价函数的三维图及轮廓图,如图9,轮廓图中的红点即为取得的最优值:

图8

图9

部分MATLAB代码给出如下:

尹子松,重庆大学无线通信技术实验室硕士研究生,主研方向为智能信号与信息处理。

梯度下降算法动图_梯度下降算法原理及代码实现相关推荐

  1. 梯度下降算法动图_梯度下降算法原理及推导

    今天我们就来介绍用来优化代价函数的梯度下降算法(gradient descent algorithm). 1 原理 那梯度下降究竟为何方神圣?我来用最通俗的语言来介绍下: 假设你站在华山之巅,你现在想 ...

  2. 梯度下降算法动图_一文读懂梯度下降算法

    这篇博文主要讲解下梯度与方向导数的关系.等值线图中梯度的表示,以及梯度的应用.因涉及太多高数的知识点,在此就不一一详述了,只是简单梳理下知识点,有所纰漏还望纠正指出,文末附有参考文献,借图. 一.方向 ...

  3. python制作gif动图_短短几行Python代码制作的GIF动图

    前言 想知道怎么用Python代码与动画结合起来,制作GIF动图,并展示给其他人看呢?gifmaze可以帮助你很好的制作GIF动图,效果超棒, 比inter,pyglet和pyqt同比之下,还要好一点 ...

  4. 梯度下降算法动图_一文看懂常用的梯度下降算法

    概述 梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法.对于深度学习模型,基本都是采用梯度下降算法来进行优化训练的.梯度下降算法背后的原理: ...

  5. 强化学习策略梯度方法之: REINFORCE 算法(从原理到代码实现)

    强化学习策略梯度方法之: REINFORCE 算法 (从原理到代码实现) 2018-04-01  15:15:42   最近在看policy gradient algorithm, 其中一种比较经典的 ...

  6. 梯度的直观理解_梯度下降最直观的理解

    最近在学习机器学习,入门第一课就是「梯度下降」.看了不少教程都没有很好地理解,直到看到下面这篇文章,算是通俗易懂地理解了. 作者:六尺帐篷 链接:https://www.jianshu.com/p/c ...

  7. python 加载动图_在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)...

    大数据文摘授权转载自数据派THU 作者:MOHD SANAD ZAKI RIZVI 本文主要介绍了: TensorFlow.js (deeplearn.js)使我们能够在浏览器中构建机器学习和深度学习 ...

  8. python梯度下降法实现线性回归_梯度下降法的python代码实现(多元线性回归)

    梯度下降法的python代码实现(多元线性回归最小化损失函数) 1.梯度下降法主要用来最小化损失函数,是一种比较常用的最优化方法,其具体包含了以下两种不同的方式:批量梯度下降法(沿着梯度变化最快的方向 ...

  9. python梯度提升回归树_梯度提升回归树(GBDT)

    梯度提升回归树(GBDT) 发布时间:2018-08-30 13:22, 浏览次数:1024 , 标签: GBDT 一.从Boosting思想开始 1.梯度提升回归树是一种从它的错误中进行学习的技术. ...

最新文章

  1. cpio用法详细说明
  2. VC使用CRT调试功能检测内存泄漏(转载)
  3. linux 定时器中断 imx,NXP iMX8 存储性能测试
  4. JQUERY设置或返回属性值attr
  5. C#学习笔记五面向对象基础
  6. 开机流程与主引导分区(MBR)——鸟哥私房菜
  7. linux命令画圣诞树图片,以 Linux 的方式庆祝圣诞节
  8. Java中数组的初始化
  9. 关于Darwin接入私有协议、私有SDK码流的讨论
  10. Java核心技术卷1:基础知识(原书第10版)
  11. 初试小刀自我简历小程序
  12. 连续型随机变量单点概率为0以及不可能事件
  13. 怎么做网站推广-网站推广100种方法
  14. 法大大完成3.98亿元C轮融资,虎环球基金和腾讯联合领投...
  15. 人、机、料、法、环 全面理解
  16. 【渝粤教育】电大中专计算机网络基础作业 题库
  17. 使用DreamweaverMX2004的搜索替换功能提高工作效率。
  18. 测试底妆的软件,底妆日记 | 我用半个月的时间,测试了我所遇过最贵的底妆
  19. 一份职业游戏3D建模师日常工作流程列表,看完不信还有人说建模门槛低
  20. java星座测试需求分析_如何进行软件测试需求分析

热门文章

  1. QT编程:QT下二维数组的使用
  2. 老师口喷鲜血,倒地气绝(逗死我了)
  3. 吴恩达机器学习ex1-matlab版学习总结笔记-(1)单变量线性回归
  4. r7 7730U参数 r7 7730U性能怎么样 AMD锐龙77730U相当于什么水平
  5. 华为荣耀20和x10比较_华为畅享20pro和荣耀x10哪个好 有对比才能更好地选择
  6. 价值3.7亿!雷军一场演讲,暗示了网络工程师职业发展的真相
  7. 爬虫-requests,微信公众号推送
  8. QQ也有公众号了,这是不是又一个机会?
  9. 时序数据库Machbase
  10. Java常问面试题整理,帮你搞定‘金9银10’(附答案纯干货)