梯度下降法理论与实践

作者: zenRRan | 来源:发表于2017-09-02 14:53 被阅读0次

理论基础

现在比如有两个参数的损失函数 我们的目的是使之最小也就是得到能够使J函数最小的theta_0,theta_1,公式表达为: 我们画出当theta_0,theta_1取不同值时J的变化图是这样的 颜色越深代表J值越大。我们比如随便取一个点(theta_0,theta_1各等于某值时),此点如图所示:

此时比如我们站在此点上,想要快速到达谷底(也就是使J函数达到极小值)。此时我们放眼望去,环望四周,很自然的向此时坡最陡的方向的下方迈上一步,接着在继续重复我们的过程,直到四周都比当下高 (此时)为止,就是走到谷底(J函数达到极小值),完成目标。

我们来看看我们的路线
这时会不会有人问为什么会是极小值。
这时我们重新找一个点

跟上面的过程一样,我们再走一遍

你瞅瞅,是不是到达另一个谷底。所以说,这种方法找的是局部的最小值,也就是全局的极小值。这种方法就是梯度下降算法。 此时介绍梯度下降算法,简单起见,我们从一个变量开始,比如此时我们的损失函数J是 随机给theta_1取一个值,此点如上图所示。对此点求导:

此时的导数值为正数,我们要向它的相反方向走一步,到达如图所示点


此时的公式表达为:
alpha为learning rate 即学习率,这里表示用来控制步伐的大小,取值范围 (0-1] (一般取值1,0.1,0.01,0.001... 也或者0.3,0.03,0.003...根据情况而定)。
不断的重复上面公式的过程,直到 等于0或者特别小(多小,根据实际情况设定)停止。
我们再考虑随机点在左边的情况。比如取点如图所示:

此时的J在theta_1点的导数
为负数。
此时我们应该向右走,则此时的表达式为

更新后



跟上面的过程一样,直到更新到导数为0或特别小为止。 由此可见,无论导数正负,表达式一样。所以我们规定梯度下降算法的更新过程就是

此时我们具体谈谈alpha:

alpha取值过小,则会有这样的情况: 到达极小值的速度特别慢。
而alpha取值过大,则还会有这种情况:

永远找不到极小值。

所以如果你想再alpha上做优化,可以这样
alpha先大后小。(根据实验情况而定)
现在我们再回归到我们的
函数中来。
我们对它进行优化的表达式为:
(这里是偏导)
这里有个误区,正确的更新过程是这样的:

等更新完再赋值。

下面的做法是错误的:
更新完的theta_0在temp1的更新过程中被调用,此时已经不是之前的theta_0了。切记。

代码实践

这是个拟合直线的代码实现。


我们要将数据统一收缩到 [-1 - 1] 之间。
X = ( X - average(X) ) / X.max
Y = ( Y - average(Y) ) / Y.max

为什么要这么做呢?
因为如果不做缩小处理,在矩阵运算时,非常有可能出现无穷大或者无穷小,导致无法计算。

缩小处理可以很容易画出模拟线条。

缩小处理在计算机中处理速度更快。


我们看看图:


这里我设置a = 0.01是为了下面的模拟直线除数不为0设置的。一般情况下,初始化 a = b = 0。(这里a, b就是上面的theta_0,theta_1)
下面进行矩阵化:



上面图片的y1 - y4是预测值
下面代码的Y是真实值



预测值函数

拟合线段形成过程

更新过程



最终的线段是

注:代码实现以上图片来自2014stanford机器学习视频


我的公众号,喜欢的可以关注我呀。

公众号二维码.png

相关文章

  • 梯度下降法理论与实践

    理论基础 此时比如我们站在此点上,想要快速到达谷底(也就是使J函数达到极小值)。此时我们放眼望去,环望四周,很自然...

  • Logistic回归与最大熵模型-优化算法

    Logistic回归与最大熵模型-理论推导中提到了4个优化算法:分别是: 梯度下降算法 拟牛顿法(牛顿法) 通用迭...

  • 机器学习-常用优化方法

    一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。 随机梯度下降不但速度上比原始梯度下降要快,局部最优...

  • 梯度优化算法

    梯度下降,共轭梯度法;牛顿法,拟牛顿法;信赖域方法,罚函数法。

  • 优化算法

    动量法、AdaGrad、RMSProp、AdaDelta、Adam 1.动量法 在7.2节(梯度下降和随机梯度下降...

  • ML-梯度下降法求解线性回归

    梯度法 是基于搜索来最优化一个目标函数的方法。分为梯度下降法 和 梯度上升法 :梯度下降法 用来最小化一个损失函数...

  • 梯度下降理论推导

    最近一段时间关于机器学习、人工智能等话题充斥着各大社区。作为一枚热爱技术的系统工程师,我迫切想去揭开它神秘的面纱。...

  • 最优化方法

    常见最优化方法 1.梯度下降法 2.牛顿法 3.拟牛顿法 4.共轭梯度法

  • 梯度下降法

    梯度下降法 本文主要是为了讲解 梯度下降法 的原理和实践,至于什么是梯度下降法,他能做什么,相信百度一下你就都知道...

  • 梯度下降和梯度上升

    梯度上升与梯度下降 - HIT-security - 博客园 不管梯度下降还是梯度上升,随着迭代的进行,梯度都是在...

网友评论

    本文标题:梯度下降法理论与实践

    本文链接:https://www.haomeiwen.com/subject/pdqrjxtx.html