机器学习故事汇-梯度下降

原创 2017年09月01日 10:19:12

机器学习故事汇-梯度下降

【咱们的目标】系列算法讲解旨在用最简单易懂的故事情节帮助大家掌握晦涩无趣的机器学习,适合对数学很头疼的同学们,小板凳走起!

今天咱们的故事继续上一次线性回归来说,还不熟悉的小伙伴机票在这!机票直达-线性回归

这里写图片描述
当时咱们怎么唠的,是不是很多情况下要求解的目标没办法直接求呀!那该怎么办呢?咱们来用机器学习中最常用的套路-优化求解,也就是一步一步朝着最优解的方向前进!

这里写图片描述
首先给出目标函数(还记得线性回归中的目标函数吗?)也就是我们要达到的目标是使得目标函数最小(最小对应着梯度下降问题,也就是下山,那么最大也就是梯度上升,求极大值)可以把我们的优化目标看成一座山,山是由我们两个参数组成的,从上图可以看出在山中有一个山谷的最低点,这个最低点所对应的参数就是我们要求解的值!

那该怎么求解呢?下山要一步一步来,第一步要找到合适的下山方向,也就是参数所对应的梯度方向(偏导)因为我们要沿着最快的方向去下山,所以梯度的方向是最合适的(多个参数的时候需要各自求其偏导)。找到方向之后我们就该实际的去走啦,那一次走多大呢?经验表明一次走那么一小小小小步是比较合适的,因为如果步伐太大容易偏离全局最优解只得到局部最优解。方向与步长都搞定了,接下来按着我们设计好的路线更新参数就可以啦!

这里写图片描述
下山的方式也有很多种,我们来对比一下。
批量梯度下降:如上式需要综合考虑所有养那本,这就太慢了,但是效果还是蛮好的。
随机梯度下降:观察发现,每一次进行参数更新,只选择了一个样本,这样速度极快,但是代价就是一旦样本有瑕疵,会对结果产生很大的干扰!所以随机梯度下降会产生很大的浮动。
小批量梯度下降:这个就友好多了,综合了上面两位的优缺点,在迭代的时候选择一批(32,64,128比较常见)个样本来平均计算梯度的更新方向,这个就是现在应用最广的梯度下降方法啦!一个字,实用!

这里写图片描述

接下来我们再来研究一下步长(学习率)对结果产生的影响,从图中可以看到很多条线并且它们之间有着明显的差异,为啥模型不收敛!效果不好!没达标!罪魁祸首就是学习率了,它对我们结果会产生非常大的影响,一般情况下我们都是用较小的学习率,较多的迭代次数来满足它!

这里写图片描述
这张图是一个在真实数据集下使用逻辑回归进行迭代的目标函数变化情况,可以看到当我们使用梯度下降的时候目标函数最终达到了一个收敛状态,现在已经最好了吗?我们可以再增大些迭代次数再看看!

这里写图片描述
继续增大迭代次数,发现目标函数又发生了变化,所以要让模型更完美,需要更多轮次的训练!我们再来对比下不同的梯度下降策略!

这里写图片描述
这张图看起来有点乱呀,没有达到熟练状态,损失函数值还在乱蹦跶,这个就是随机梯度下降的结果,可以看出来这样的模型是不好的,只用一个样本来更新参数是不够的!所以现在我们很少使用随机梯度下降来解决实际问题。(那真的没办法用它了吗?也可以代价就是用极小的学习率配上极大的迭代次数,那为啥不用小批量的呢?)

这里写图片描述
最后的这张图就是收尾图啦,首先观察只用了4000次迭代就比之前的效果要好很多!这里做了如下两个工作。
(1):对数据进行了标准化,让数据各个特征均值为0方差为(数据预处理的常规套路)
(2):使用了小批量梯度下降进行迭代(保证了收敛性同时也加快了速度)
两个简单的操作就使得我们的模型效果快速达到了收敛状态,请记住这俩套路,你会一直沿用下去的!

更多精彩内容在这里啦!

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

机器学习笔记三:梯度下降

一.迭代思想这里要写的其实跟主题梯度下降是没有关系的。但是它能够让非常新的新手体会循环往复的迭代修改一个或者多个值到最优的思想。所以这里把这个列到最开始,随便看看体会一下就行了。假设我们现在要来求解一...
  • xierhacker
  • xierhacker
  • 2016年11月22日 11:51
  • 2414

[机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)

本文介绍机器学习中重要的概念:梯度和梯度下降法,这是我们在学习MachineLearning算法时的核心概念之一,其实也就是我们在大学本科高等数学中的基础概念。...
  • walilk
  • walilk
  • 2016年03月25日 13:34
  • 13315

机器学习-梯度下降算法-特征缩放和学习速率选取

1. 特征缩放实际当我们在计算线性回归模型的时候,会发现特征变量x,不同维度之间的取值范围差异很大。这就造成了我们在使用梯度下降算法的时候,由于维度之间的差异使得Jθ的值收敛的很慢。我们还是以房价预测...
  • cgl1079743846
  • cgl1079743846
  • 2016年08月06日 21:04
  • 4610

如何使基于梯度下降的机器学习并行化

  • 2016年11月25日 22:24
  • 319KB
  • 下载

Python数据分析与机器学习-Python实现逻辑回归与梯度下降策略

  • 2017年12月30日 15:43
  • 6KB
  • 下载

机器学习梯度下降代码

  • 2015年06月26日 12:07
  • 3KB
  • 下载

机器学习的优化程序库,用Python实现了梯度下降、LBFGS、rmsprop、adadelta 等算法。

  • 2017年05月18日 15:47
  • 97KB
  • 下载

机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

本文由LeftNotEasy所有,发布于http://leftnoteasy.cnblogs.com。如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任。 前言:    上次写...
  • dfdfdsfdfdfdf
  • dfdfdsfdfdfdf
  • 2015年08月06日 10:53
  • 381

机器学习之-梯度下降【人工智能工程师--AI转型必修课】

【咱们的目标】系列算法讲解旨在用最简单易懂的故事情节帮助大家掌握晦涩无趣的机器学习,适合对数学很头疼的同学们,小板凳走起!今天咱们的故事继续上一次线性回归来说,还不熟悉的小伙伴机票在这!机票直达-线性...
  • CSDNedu
  • CSDNedu
  • 2017年12月07日 15:29
  • 2607

Andrew Ng机器学习课程(一) - Python梯度下降实战

Andrew Ng线性回归一节,梯度下降四种方法的Python实现
  • mango_badnot
  • mango_badnot
  • 2016年08月26日 15:15
  • 821
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:机器学习故事汇-梯度下降
举报原因:
原因补充:

(最多只允许输入30个字)