梯度下降算法_梯度下降算法原理及推导
今天我们就来介绍用来优化代价函数的梯度下降算法(gradient descent algorithm)。
1 原理
那梯度下降究竟为何方神圣?我来用最通俗的语言来介绍下:
假设你站在华山之巅,你现在想以最快速度下山,那你肯定是找一条最陡峭的路走。你环顾四周,找到了一条路线,恩,这个方向是最陡的。于是你就出发了,走了一会发现,这个方向不是最陡的路了。你就停下来,换了个最陡的方向,继续往下走。重复这个步骤,你最终到达了山脚下。
那么,你从山顶到山脚的整个下山的过程,就是梯度下降。
为了在线性回归中应用梯度下降,我们先来回顾下线性回归模型的代价函数,它长这个样子:
![](/assets/blank.gif)
其中,f(x)为
![](/assets/blank.gif)
注意,我们变量的上标是指样本数量,从1到m;下标指特征数量,从0到n。
我们的目标是
![](/assets/blank.gif)
即在J(w)取最小值时,所对应的w值。这时,梯度下降法就上场了,用公式表示为:
![](/assets/blank.gif)
其中,“:=”为赋值的含义;α为学习速率,又叫步长,可以理解为我们下山时每走一步的距离;α右边的是J(w)对w求的偏导(偏导就是对w向量中的每个元素分别求导)。
这个公式的含义就是,先初始确定一个w的值,然后用(1)式计算新的w值,反复迭代。我们不断更新参数w的值,直到J(w)取得最小值时,停止迭代。
我们先把(1)式中J(w)对w的偏导求出来,会容易理解些:
![](/assets/blank.gif)
将(2)式代入(1)式,可得
![](/assets/blank.gif)
这就是线性回归中的梯度下降算法。最后,我手画一张图来把梯度下降的原理大概表示下:
![](/assets/blank.gif)
如上图,我们先确定一个w,然后按步长α一步一步减小w的值。最后当w取某一值时,J(w)取得最小值,任务就完成了。
说到这里,可能大家就有疑问了,梯度下降的公式(1)到底是怎么来的呢?别急,我们马上就来推导。
2 推导
首先,我们需要泰勒近似定理的一阶展开式:
![](/assets/blank.gif)
上边那个倒三角符号表示梯度,就是对w求偏导的意思。从上式不难看出:
![](/assets/blank.gif)
也就是说:
![](/assets/blank.gif)
上式说明了什么呢?注意到w和▽J(w)均为向量,也就是说,参数w变化的方向与梯度方向之间的夹角大于90°。我们希望J(w)每次迭代的变化量越大越好,那什么时候达到最大呢,就是参数w的变化量与梯度方向正好相反的时候,也就是二者的夹角达到180°的时候。我们用公式来说明下:
![](/assets/blank.gif)
也就是说,两个向量的点积等于它们的模相乘,再乘以两个向量的夹角α。不难看出,当cosα=-1时,也就是α为180°时,两个向量的点积取到负值最大。
因为两个向量方向相反,故我们可推出:
![](/assets/blank.gif)
其中α右边的为单位向量,可将梯度的模与阿尔法合并,简化为:
![](/assets/blank.gif)
移项,可得:
![](/assets/blank.gif)
这就是我们的梯度下降公式(1),大功告成。最后我们放一张动图来看下梯度下降的效果(图片来自于网络):
![](/assets/blank.gif)
下篇我会介绍有关模型拟合数据时产生的不利情况,以及如何避免这种情况发生,敬请期待。
梯度下降算法_梯度下降算法原理及推导相关推荐
- 梯度下降算法_梯度下降算法的工作原理
↑ 点击蓝字 关注极市平台作者丨 磐怼怼来源丨深度学习与计算机视觉编辑丨极市平台 极市导读 梯度下降算法是工业中最常用的机器学习算法之一,但也是很多新手难以理解的算法之一.如果你刚刚接触机器学习,那么 ...
- 梯度下降算法_梯度下降法的简单介绍以及实现
梯度下降法的基本思想可以类比为一个下山的过程.假设这样一个场景:一个人被困在山上,需要从山上下来(i.e.找到山的最低点,也就是山谷).但此时山上的浓雾很大,导致可视度很低.因此,下山的路径就无法确定 ...
- 批梯度下降 随机梯度下降_梯度下降及其变体快速指南
批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...
- 3. 机器学习中为什么需要梯度下降_梯度提升(Gradient Boosting)算法
本文首发于我的微信公众号里,地址:梯度提升(Gradient Boosting)算法 本文禁止任何形式的转载. 我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI ...
- 梯度消失和梯度爆炸_梯度消失、爆炸的原因及解决办法
一.引入:梯度更新规则 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,更新优化深度网络的权值.这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来 ...
- 梯度消失和梯度爆炸_梯度消失梯度爆炸-Gradient Clip
梯度爆炸与梯度消失 实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定. 梯度弥散: 靠近输出层的hidden ...
- 梯度消失和梯度爆炸_梯度消失和梯度爆炸详解
在中文搜索引擎搜索梯度爆炸或者梯度消失,出现的往往是一篇文章复制黏贴多次,而且这篇文章讲的并不清晰,比方说下面这种在文章中出现的图一,反正我是根本看不懂这张图描述的实什么,因此那篇被复制黏贴无数次的文 ...
- 梯度下降算法_梯度下降算法(Gradient Descent)的原理和实现步骤
大部分的机器学习模型里有直接或者间接地使用了梯度下降的算法.虽然不同的梯度下降算法在具体的实现细节上会稍有不同,但是主要的思想是大致一样的.梯度下降并不会涉及到太多太复杂的数学知识,只要稍微了解过微积 ...
- 梯度下降算法_梯度下降算法详解
原创 | CDA数据分析研究院,转载需授权 介绍 如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属.梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小 ...
最新文章
- Lightroom学习随笔
- redis缓存穿透,缓存击穿,缓存雪崩
- Python中判断字典的键或值在不在字典中 默认是判断的依据是条目在不在字典的键集合中
- 2016年DDoS攻击趋势分析报告
- python的列表元素输出
- 强化学习2——有模型强化学习MDP(搬砖马尔科夫,贝尔曼等式)
- halcon 相似度_Halcon分类函数,shape模型
- 最专业的业余数学家!
- Android 常用adb shell 命令
- numpy构建卷积网络
- 小作坊的大道理——读《走出软件作坊》有感
- HTML超好看的个人主页源码+支持响应式
- nbu备份oracle中途停止,NBU异构还原Oracle完整备份的一些总结
- 趋势线与123法则应用图解,很多大佬偷偷在用
- 微信限制收付款怎么解决_解决付款处理问题
- Vim编辑器基本操作
- 高效人士的116个IT秘诀
- 友盟+吕志国:数据智能让天下没有难做的营销
- 云服务部署项目(一)——初入新世界大门
- 竞赛图强连通分量大小幂和计数 - 组合计数 - 多项式