1. Gradient Descent(梯度下降)

梯度下降算法是很常用的算法,可以将代价函数J最小化。它不仅被用在线性回归上,也被广泛应用于机器学习领域中的众多领域。

1.1 线性回归问题应用

我们有一个函数J(θ0,θ1),要使其最小化minJ(θ0,θ01):

Outline

  • 对θ0,θ1开始进行一些猜测

    通常将初θ0,θ1初始化为0
  • 在梯度算法中,要做的就是不停的一点点改变θ0和θ1试图通过这种改变使得J(θ0,θ1)变小,直到找到J的最小值或者局部最小值。

1.2 梯度算法工作原理

现在我们把这个图像想象为一座山,想像类似这样的景色 :公园中有两座山,想象一下你正站立在山的这一点上 站立在你想象的公园这座红色山上。在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己,我要在某个方向上,用小碎步尽快下山。如果我想要下山。如果我想尽快走下山,这些小碎步需要朝什么方向? 如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,大约是那个方向。

现在你在山上的新起点上 你再看看周围 然后再一次想想 我应该从什么方向迈着小碎步下山? 然后你按照自己的判断又迈出一步 往那个方向走了一步 然后重复上面的步骤。从这个新的点,你环顾四周并决定从什么方向将会最快下山。然后又迈进了一小步,并依此类推,直到你接近这里,直到局部最低点的位置。

现在想象一下,我们在刚才的右边一些的位置,对梯度下降进行初始化。想象我们在右边高一些的这个点。开始使用梯度下降。如果你重复上述步骤,停留在该点,并环顾四周,往下降最快的方向迈出一小步,然后环顾四周又迈出一步,然后如此往复。如果你从右边不远处开始梯度下降算法将会带你来到这个右边的第二个局部最优处。 如果从刚才的第一个点出发,你会得到这个局部最优解 但如果你的起始点偏移了一些,起始点的位置略有不同 你会得到一个非常不同的局部最优解。这就是梯度下降算法的一个特点。

1.3 梯度下降算法定义。

  • :=:赋值符号(Assignment).
  • α:这里的α是一个数字,被称为学习速率(learning rate)。在梯度下降算法中,它控制了我们下山时会迈出多大的步子。
  • 微分项。

在梯度下降中,我们要更新θ0和θ1。当 j=0 和 j=1 时 会产生更新。所以你将更新J、θ0还有θ1。实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新 θ0和θ1。

θ0和θ1需要同步更新,右侧是非同步更新,错误。

1.4 梯度下降和代价函数

梯度下降是很常用的算法,它不仅被用在线性回归上 和线性回归模型还有平方误差代价函数。

当具体应用到线性回归的情况下,可以推导出一种新形式的梯度下降法方程:

  • m:训练集的大小
  • θ0与θ1同步改变
  • xi和yi:给定的训练集的值(数据)。

我们已经分离出两例θj:θ0和θ1为独立的方程;在θ1中,在推导最后乘以Xi。以下是推导∂/∂θjJ(θ)的一个例子:

这一切的关键是,如果我们从猜测我们的假设开始,然后反复应用这些梯度下降方程,我们的假设将变得越来越精确。

因此,这只是原始成本函数J的梯度下降。这个方法是在每个步骤的每个训练集中的每一个例子,被称为批量梯度下降。注意,虽然梯度下降一般容易受到局部极小值的影响,但我们在线性回归中所提出的优化问题只有一个全局,没有其他局部最优解,因此梯度下降总是收敛(假定学习率α不是太大)到全局最小值。实际上,j是凸二次函数。这里是一个梯度下降的例子,它是为了最小化二次函数而运行的。

上面所示的椭圆是二次函数的轮廓图。也表明是通过梯度下降的轨迹,它被初始化为(48,30)。X在图(连接的直线)的标志,θ梯度穿过它收敛到最小的连续值。


本文资料部分来源于吴恩达 (Andrew Ng) 博士的斯坦福大学机器学习公开课视频教程。

[1]网易云课堂机器学习课程:

http://open.163.com/special/opencourse/machinelearning.html

[2]coursera课程:

https://www.coursera.org/learn/machine-learning/

[机器学习Lesson3] 梯度下降算法的更多相关文章

  1. ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ

    ng机器学习视频笔记(二) --梯度下降算法解释以及求解θ (转载请附上本文链接--linhxx)   一.解释梯度算法 梯度算法公式以及简化的代价函数图,如上图所示. 1)偏导数 由上图可知,在a点 ...

  2. 机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

    本文介绍了机器学习中基本的优化算法—梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有 ...

  3. 机器学习基础——梯度下降法(Gradient Descent)

    机器学习基础--梯度下降法(Gradient Descent) 看了coursea的机器学习课,知道了梯度下降法.一开始只是对其做了下简单的了解.随着内容的深入,发现梯度下降法在很多算法中都用的到,除 ...

  4. 梯度下降算法的一点认识(Ng第一课)

    昨天开始看Ng教授的机器学习课,发现果然是不错的课程,一口气看到第二课. 第一课 没有什么新知识,就是机器学习的概况吧. 第二课 出现了一些听不太懂的概念.其实这堂课主要就讲了一个算法,梯度下降算法. ...

  5. Logistic回归Cost函数和J(θ)的推导(二)----梯度下降算法求解最小值

    前言 在上一篇随笔里,我们讲了Logistic回归cost函数的推导过程.接下来的算法求解使用如下的cost函数形式: 简单回顾一下几个变量的含义: 表1 cost函数解释 x(i) 每个样本数据点在 ...

  6. 梯度下降算法对比(批量下降/随机下降/mini-batch)

    大规模机器学习: 线性回归的梯度下降算法:Batch gradient descent(每次更新使用全部的训练样本) 批量梯度下降算法(Batch gradient descent): 每计算一次梯度 ...

  7. p1 批梯度下降算法

    (蓝色字体:批注:绿色背景:需要注意的地方:橙色背景是问题) 一,机器学习分类 二,梯度下降算法:2.1模型   2.2代价函数   2.3 梯度下降算法 一,机器学习分类 无监督学习和监督学习 无监 ...

  8. 【转】梯度下降算法以及其Python实现

    一.梯度下降算法理论知识 我们给出一组房子面积,卧室数目以及对应房价数据,如何从数据中找到房价y与面积x1和卧室数目x2的关系?   为了实现监督学习,我们选择采用自变量x1.x2的线性函数来评估因变 ...

  9. 梯度下降算法以及其Python实现

    一.梯度下降算法理论知识 我们给出一组房子面积,卧室数目以及对应房价数据,如何从数据中找到房价y与面积x1和卧室数目x2的关系?   为了实现监督学习,我们选择采用自变量x1.x2的线性函数来评估因变 ...

随机推荐

  1. IM-iOS退出后台接受消息,app退出后台能接收到推送

    App被失活状态的时候可以走苹果的APNS:但是在活跃的时候却接受不到推送! 那就用到本地推送:UILocalNotification 消息神器. 处理不好可能会有很多本地推送到来,那么问题来了要在什 ...

  2. NOIP2017 总结

    联赛结束,但是我并没有得到预期的结果,特写此文分析原因,希望我不会就此退役. 回顾一年,我做了什么? 2016年联赛,我水了两天,抱着挂掉的心态拿到了1=. 2016-2017寒假,参加集训,三天考试 ...

  3. Python基础教程3——教你用Python做个简单的加密程序(还基础什么呀,直接来练习吧,带源码)

    因为发现基础教程我之前推荐的那个网站就已经很完善了,就不重复写了,所以本汪来一起做练习吧. 一.加密原理 记得当时我学c++的时候,学到输入输出流的时候,当时王老师就教我们写了一个小的加密程序,所以这 ...

  4. Numpy库的下载及安装(吐血总结)

    Python很火,我也下了个来耍耍一阵子.可是渐渐地,我已经不满足于它的基本库了,我把目光转到了Numpy~~~~~ 然而想法总是比现实容易,因为我之前下的是Python3.3.x,所有没有自带pip ...

  5. springMvc(一)

    SpringMvc 1. 核心:DispatcherServlet 1.1作用:负责拦截请求并分派给相应的处理器处理 1.2配置DispatcherServlet(web.xml) 2.配置处理器映射 ...

  6. Path通过Selenium模拟浏览器抓取,Windows 64解决selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.方法

    1.下载geckodriver.exe: 下载地址:https://github.com/mozilla/geckodriver/releases请根据系统版本选择下载:(如Windows 64位系统 ...

  7. webpack使用教程

    webpack使用教程 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是 ...

  8. 剑指Offer-构建乘积数组

    package Array; import sun.security.util.Length; /** * 构建乘积数组 * 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,... ...

  9. ajax利用FormData异步文件提交

    通常情况下,我们上传文件都会使用form表单来提交文件.但有时候,我们会有异步提交文件的需求,在这种情况下,我们就需要新建一个Formdata来提交文件,后台如果使用的是PHP的话可以使用$_FILE ...

  10. Mycat 分片规则详解--范围取模分片

    实现方式:该算法先进行范围分片,计算出分片组,组内在取模 优点:综合了范围分片和取模分片的优点,分片组内使用取模可以保证组内的数据分布比较均匀,分片组之间采用范围分片可以兼顾范围分片的特点,事先规划好 ...