梯度降级算法简介

之前如果需要求出最佳的线性回归模型,就需要求出代价函数的最小值。在上一篇文章中,求解的问题比较简单,只有一个简单的参数。梯度降级算法就可以用来求出代价函数最小值。

梯度降级算法的在维基的定义:

梯度下降法是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索

首先,复习一下之前前面的讲过求解最佳的代价函数的过程

那么如何通过梯度降级算法解决这个问题呢?首先对θ0和θ1进行初始化,初始化的值是什么并不重要,但通常的选择是将它们都初始化为0。 我们在梯度下降算法中要做的,就是不停地一点点地改变θ0和θ1,试图通过这种改变使得J(θ0, θ1)变小,直到我们找到J的最小值,这个最小值就是一个局部最优解。

求解的过程可能如下:

最上面的点是起始点,就加上如同一个人站在起始点的位置,最后需要回到最低点的位置,就需要一步步地向下走

梯度降级算法定义

梯度降级算法的定义如下:

  • :=表示的就是赋值语句
  • a,学习速率,表示的是在每一步的步长。在上面的例子中,稼穑你是一个人需要从山顶下山,那么a表示的就是你每一步的长度
  • 后面的数学公式就是一个数学公式,是一个偏导数。

需要注意一点的是,需要同时更新所有的theta参数,包括theta-0,theta-1。这个其实在偏导数里面也是一个最基本的常识了,这里不作过多的讲解。如果你不了解,那只要记住就可以了。

下面的这个例子就是错误的,不是同时更新的。

为了能够形象地说明梯度讲解算法的用法,那么我们简化梯度讲解算法,假设仅仅只存在一个参数theta-1

通过在第三节中讲述的,J(θ1)的图形就是一个曲线。利用阶梯降级函数的定义

那么最后的求解过程为:

这样就找到了最优解,和第三节中得到的最优解也是一样的。

需要注意的问题是,学习速率a的设置既不能太大也不能太小,否则就会出现下面的问题。

如果a太小,那么寻找最优解的时间过长;如果a太大,那么有可能无法找到最优解。

梯度降级算法在线性回归中的应用

下面还是简单的给出梯度降级算法和线性回归的算法定义

为了方便对算法的求解进行描述,我们还是假设仅仅只是存在θ1和θ2

将右边定义的J(θ)导入到左边的梯度降级算法中,得到如下的结果:

但是需要注意的是,在仅仅只是存在θ1和θ2的情况下,代价函数的图形为:

是一个凹图像,这个之前说的是不一致的。之前的那个图像仅仅是为了表述方面而作的图。

最后将3D图转换为轮廓图,得到最后的最小的代价函数如下:

以上就是梯度降级算法在线性回归中的应用

批梯度下降算法

批梯度下降算法的定义就是,在每一步的梯度下降过程中,使用所有的训练样本。 当然还有一些算法仅仅只是使用部分的训练样本。目前讨论的都是使用所有的训练样本。

为了能到远方,脚下的每一步都不能少

最新文章

  1. JS模块化开发:使用SeaJs高效构建页面
  2. jquery 无刷新多级联动
  3. Tier和RBD Cache的区别
  4. How to use the Visual Studio
  5. Jsonp简单认识(后端使用的是asp.net mvc)
  6. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
  7. Oracle- 日期格式和数字类型处理
  8. Razor引擎学习:RenderBody,RenderPage和RenderSection
  9. 正确使用c语言中的头文件
  10. hduAnother Graph Game
  11. DataGridView 选中行 分类: DataGridView 2015-01-22 09:07 51人阅读 评论(0) 收藏
  12. Adding Pagination 添加分页
  13. 基于Qt下移动平台第三方接入-ShareSDK(新浪微博,微信朋友圈等分享登录)
  14. Delphi 中 COM 实现研究手记(一)
  15. Tickets 基础DP
  16. 小白也能看懂插件化DroidPlugin原理(一)-- 动态代理
  17. Win7怎么把运行添加到Win快捷菜单的右侧、、、
  18. 【AtCoder】【思维】【图论】Splatter Painting(AGC012)
  19. JavaScript(数组、Date、正则)
  20. verilog 数据格式

热门文章

  1. swaks制作钓鱼邮件
  2. zxy的猪错误
  3. K8S单集群桌面安装笔记【k8s-for-docker-desktop】
  4. .net 预处理指令符的使用
  5. 深入理解Java并发框架AQS系列(四):共享锁(Shared Lock)
  6. HTML5和CSS3 PC端静态网页琐碎知识点
  7. B1029/A1048 旧键盘损坏了,在输入一段文字时坏了的键不可以正常使用,现给出应输入的一段文字,和实际输出的文字,找出坏掉的键。
  8. Kafka优雅应用
  9. Windows Terminal 安装与配置
  10. 一文教你读懂JVM的类加载机制