今天我们就来介绍用来优化代价函数的梯度下降算法(gradient descent algorithm)。

1 原理


那梯度下降究竟为何方神圣?我来用最通俗的语言来介绍下:

假设你站在华山之巅,你现在想以最快速度下山,那你肯定是找一条最陡峭的路走。你环顾四周,找到了一条路线,恩,这个方向是最陡的。于是你就出发了,走了一会发现,这个方向不是最陡的路了。你就停下来,换了个最陡的方向,继续往下走。重复这个步骤,你最终到达了山脚下。

那么,你从山顶到山脚的整个下山的过程,就是梯度下降。

为了在线性回归中应用梯度下降,我们先来回顾下线性回归模型的代价函数,它长这个样子:

其中,f(x)为

注意,我们变量的上标是指样本数量,从1到m;下标指特征数量,从0到n。

我们的目标是

即在J(w)取最小值时,所对应的w值。这时,梯度下降法就上场了,用公式表示为:

其中,“:=”为赋值的含义;α为学习速率,又叫步长,可以理解为我们下山时每走一步的距离;α右边的是J(w)对w求的偏导(偏导就是对w向量中的每个元素分别求导)。

这个公式的含义就是,先初始确定一个w的值,然后用(1)式计算新的w值,反复迭代。我们不断更新参数w的值,直到J(w)取得最小值时,停止迭代。

我们先把(1)式中J(w)对w的偏导求出来,会容易理解些:

将(2)式代入(1)式,可得

这就是线性回归中的梯度下降算法。最后,我手画一张图来把梯度下降的原理大概表示下:

如上图,我们先确定一个w,然后按步长α一步一步减小w的值。最后当w取某一值时,J(w)取得最小值,任务就完成了。

说到这里,可能大家就有疑问了,梯度下降的公式(1)到底是怎么来的呢?别急,我们马上就来推导。

2 推导


首先,我们需要泰勒近似定理的一阶展开式:

上边那个倒三角符号表示梯度,就是对w求偏导的意思。从上式不难看出:

也就是说:

上式说明了什么呢?注意到w和▽J(w)均为向量,也就是说,参数w变化的方向与梯度方向之间的夹角大于90°。我们希望J(w)每次迭代的变化量越大越好,那什么时候达到最大呢,就是参数w的变化量与梯度方向正好相反的时候,也就是二者的夹角达到180°的时候。我们用公式来说明下:

也就是说,两个向量的点积等于它们的模相乘,再乘以两个向量的夹角α。不难看出,当cosα=-1时,也就是α为180°时,两个向量的点积取到负值最大。

因为两个向量方向相反,故我们可推出:

其中α右边的为单位向量,可将梯度的模与阿尔法合并,简化为:

移项,可得:

这就是我们的梯度下降公式(1),大功告成。最后我们放一张动图来看下梯度下降的效果(图片来自于网络):

下篇我会介绍有关模型拟合数据时产生的不利情况,以及如何避免这种情况发生,敬请期待。

梯度下降算法_梯度下降算法原理及推导相关推荐

  1. 梯度下降算法_梯度下降算法的工作原理

    ↑ 点击蓝字 关注极市平台作者丨 磐怼怼来源丨深度学习与计算机视觉编辑丨极市平台 极市导读 梯度下降算法是工业中最常用的机器学习算法之一,但也是很多新手难以理解的算法之一.如果你刚刚接触机器学习,那么 ...

  2. 梯度下降算法_梯度下降法的简单介绍以及实现

    梯度下降法的基本思想可以类比为一个下山的过程.假设这样一个场景:一个人被困在山上,需要从山上下来(i.e.找到山的最低点,也就是山谷).但此时山上的浓雾很大,导致可视度很低.因此,下山的路径就无法确定 ...

  3. 批梯度下降 随机梯度下降_梯度下降及其变体快速指南

    批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...

  4. 3. 机器学习中为什么需要梯度下降_梯度提升(Gradient Boosting)算法

    本文首发于我的微信公众号里,地址:梯度提升(Gradient Boosting)算法 本文禁止任何形式的转载. 我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI ...

  5. 梯度消失和梯度爆炸_梯度消失、爆炸的原因及解决办法

    一.引入:梯度更新规则 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,更新优化深度网络的权值.这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来 ...

  6. 梯度消失和梯度爆炸_梯度消失梯度爆炸-Gradient Clip

    梯度爆炸与梯度消失 实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定. 梯度弥散: 靠近输出层的hidden ...

  7. 梯度消失和梯度爆炸_梯度消失和梯度爆炸详解

    在中文搜索引擎搜索梯度爆炸或者梯度消失,出现的往往是一篇文章复制黏贴多次,而且这篇文章讲的并不清晰,比方说下面这种在文章中出现的图一,反正我是根本看不懂这张图描述的实什么,因此那篇被复制黏贴无数次的文 ...

  8. 梯度下降算法_梯度下降算法(Gradient Descent)的原理和实现步骤

    大部分的机器学习模型里有直接或者间接地使用了梯度下降的算法.虽然不同的梯度下降算法在具体的实现细节上会稍有不同,但是主要的思想是大致一样的.梯度下降并不会涉及到太多太复杂的数学知识,只要稍微了解过微积 ...

  9. 梯度下降算法_梯度下降算法详解

    原创 | CDA数据分析研究院,转载需授权 介绍 如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属.梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小 ...

最新文章

  1. Lightroom学习随笔
  2. redis缓存穿透,缓存击穿,缓存雪崩
  3. Python中判断字典的键或值在不在字典中 默认是判断的依据是条目在不在字典的键集合中
  4. 2016年DDoS攻击趋势分析报告
  5. python的列表元素输出
  6. 强化学习2——有模型强化学习MDP(搬砖马尔科夫,贝尔曼等式)
  7. halcon 相似度_Halcon分类函数,shape模型
  8. 最专业的业余数学家!
  9. Android 常用adb shell 命令
  10. numpy构建卷积网络
  11. 小作坊的大道理——读《走出软件作坊》有感
  12. HTML超好看的个人主页源码+支持响应式
  13. nbu备份oracle中途停止,NBU异构还原Oracle完整备份的一些总结
  14. 趋势线与123法则应用图解,很多大佬偷偷在用
  15. 微信限制收付款怎么解决_解决付款处理问题
  16. Vim编辑器基本操作
  17. 高效人士的116个IT秘诀
  18. 友盟+吕志国:数据智能让天下没有难做的营销
  19. 云服务部署项目(一)——初入新世界大门
  20. 竞赛图强连通分量大小幂和计数 - 组合计数 - 多项式

热门文章

  1. C++ 面向对象(基础回顾)
  2. IDEA删除项目git路径
  3. 给大家来几个辣眼睛的代码(嘿嘿嘿)
  4. 2005精品书籍下载地址
  5. 「Java面试」将线程安全讲的如此清新脱俗:你对线程安全性的理解
  6. 怀化php培训学校,怀化PHP培训(php培训后的发展前景)
  7. 下载英语四六级成绩单
  8. 人是怎么把天聊死的(引以为鉴)
  9. 数字IC-1.3 组合电路和时序电路
  10. 服务器运维之常见故障排查法