不停的看手机上的社交媒体,里面有太多东西在干扰我们,每天的时间都被这些干扰碎片化,计划好的一些事情也会被打乱,会按重要程度再排序。读书在你每天的计划表里吗?你觉得读书是重要的事情吗?

古今中外有关读书的赞美之词数不胜数,读书当然是重要的!『啃书吧:深度学习与MindSpore实践』读书进行时,希望在忙碌的日常中也能抽出时间专注的读一会书,开卷有益。(点下方链接快速跳转至往期啃书吧↓

  • 『啃书吧:深度学习与MindSpore实践』第二期 回归分析

  • 『啃书吧:深度学习与MindSpore实践』第一章

本次目标是完成第二章2.2节梯度下降算法。这一节内容非常聚焦,只讲了梯度下降的原理,介绍了三种实际的梯度下降方法——批量梯度下降算法随机梯度下降算法小批量梯度下降算法

“梯度下降”真是如雷贯耳,好像任何一本机器学习的书、教程和大多数的微信公众号文章都要讲到它, 所以这块内容应该非常重要,不得不再一次决定给予充分重视,尽量啃透。闲话到此,以下干货。

2.2.1

用解析法求回归系数并不总是有效的办法

2.1节中“多个属性的线性回归问题”求最优参数的解析解有一个限制条件,就是  满秩或正定。话说线性代数早就忘光光了,这些术语没概念。不过只要简单地把输入数据做成奇异矩阵解析法就不灵了

本节课告诉我们只要思想不滑坡,办法总比困难多。当输入变量是类似这样的情形时,解析法不中用就换梯度下降算法上

2.2.2

梯度下降算法

梯度下降(Gradient Descent)算法是一阶最优化算法,通常也称为最速下降算法。为了找到一个损失函数(或目标函数)的局部最小值,必须向函数前点对应的梯度(或者近似梯度)的反方向移动适当的距离,从而实现迭代搜索。

本节图2.2形象地说明了梯度下降算法的原理。可以想象我们玩“吃鸡”游戏的场景。傍晚时分,“你”从飞机上跳伞,在夕阳沉入地平线的一瞬间,你在余晖中发现战场是一片崎岖不平的山坡。着陆的时候,天已全黑伸手不见五指,“你”不知道精确位置,但“你”知道身在山坡上某个地方(因为脚下是斜的),也知道敌人在山脚下,“你”要居高临下消他们。这时候该怎么办呢?

我觉得比较靠谱的办法是向前走一步,感受一下自己是在上坡还是下坡,如果是上坡就返回,如果是下坡就继续向前走,直到最后无论向哪个方向走高度都不再变化,说明你可能已经到了山脚下。在走每一步的时候,可选择方向的有无数个(这里指三维和三维以上的空间;平面空间只需要延着曲线递减的方向走),那么“你”应该选择哪个方向?我觉得比较靠谱的办法是选择落差最大的那个方向,这样才能让你尽快到达山脚,抢占有利位置。

为了能让结果跟2.1节相互参照,依然使用表2.1的"给定数据“。梯度下降算法的核心代码在while循环中实现。从结果看,梯度下降算法和2.1节解析法得到的参数非常接近,不过梯度下降算法迭代了4449次达到这个结果,解析法用一次计算就完成了,时间开销完全没有可比性。所以应该尽可能用解析法求解,速度就是快,而且结果是通过函数关系解析出来的,是最准确的。

代码2.2.2.2 对迭代过程进行可视化可视化。这一次我把损失函数的阈值调高,为的是早点迭代结束,能看到变化的过程就可以了,追求最优参数花费时间太长。从视频中可以看到,最初的几轮迭代,回归直线抖动非常剧烈。但是很快直线稳定下来,并且逐渐向左下角的点靠近,而且拟合效果越来越好。

梯度下降算法又称批量梯度下降(Batch Gradient  Descent)算法。批量是指用到了所有的训练样本个数。在实际问题中,往往有相当多的样本数,例如一个学校的学生人数,银行里的客户数目、硬盘里的图片等。尤其对于复杂的学习模型,如深度神经网络,其参数本身就很庞大,如果每次计算梯度都用  所有的数据样本,那么计算量是相当大的,甚至是不可计算的。解决方法有两种:一种是随机梯度下降算法,另一种是小批量梯度下降算法

2.2.3

随机梯度下降算法

事实上可以将该梯度下降算法想象成一个随机的过程,也就是每次仅随机抽取一个点,在期望上与所有点加起来的平均大体相似。这样就可以用单个点的梯度代替平均的梯度该单个点的梯度叫随机梯度,整体的梯度可以看成是随机梯度的期望值。基于随机梯度下降的线性规划问题迭代算法涉及公式如下:

代码2.2.3.2 检查随机抽样是否均匀,即是否满足“在期望上与所有点加起来的平均大体相似”这个要求:

可以看到各个样本被抽到机会很相近。

由于每次更新只用到一个样本,而不用遍历所有数据集,迭代速度就会更快,但是迭代次数以及收敛的最小值可能不是最优的,因为随机采样的偏差会导致每次选取的梯度方向不一定是最优的。跟代码2.2.2.3对比一下可以看出迭代次数欠优这一点非常明显。

2.2.4

小批量梯度下降算法

在实际应用中,使用更广泛的是一种被称为小批量(Mini-batch)梯度下降的算法,这是介于批量梯度下降算法和随机梯度下降算法之间的折中算法。每次随机选取样本数量为b(b<m)的小批量样本。这样一方面节省了计算整个批量的时间,同时用小批量计算的梯度方向也会比基于一个样本的随机梯度方向更加准确。书中算法2.1给出了小批量梯度下降算法的主要流程,更新参数的规则为:

2.2.5

写在最后

梯度下降是如何工作的的呢?假如回归函数的损失函数J(w)图象是这样的。

当学习率调大一点,损失函数就收敛不了。代码2.2.5.2 学习率过大导致梯度下降失败。

如何理解梯度下降算法?『MindSpore 啃书吧』为你分享相关推荐

  1. 理解梯度下降算法中的动量

    理解梯度下降算法中的动量 在深度学习优化算法中,常用的梯度下降算法中一般会有一个参数 -- 动量(momentum).此文章记录动量算法的原理,以及使用它的目的. N.B. 此处的梯度下降算法是广义的 ...

  2. 如何理解梯度下降算法

    介绍 在这篇文章中,我们将了解什么是真正的梯度下降法,为什么它成为非常流行的机器学习算法,为什么AI和ML中的大多数算法都遵循这种技术. 柯西在1847年提出了梯度下降算法,是第一个提出梯度下降的人, ...

  3. 梯度下降算法原理及其计算过程

    1.写在前面 还记得以前刚开始学习AI的时候,遇到了梯度下降算法,一直对很多概念搞不清楚,包括后来很长的一段时间也不是很明白梯度下降的实现原理,看了很多博客文章都是一知半解,总是有很多疑惑不能搞清楚, ...

  4. DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介.理解.代码实现.SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略 目录 GD算法 ...

  5. 如何正确理解近似点梯度下降算法

    学习笔记,仅供参考,有错必纠 转载自:凸优化笔记19:近似点梯度下降 近似点梯度下降算法 这一部分考虑的问题主要是 minmizef(x)=g(x)+h(x)minmize f(x) = g(x) + ...

  6. 导数在梯度下降算法中的意义理解

    梯度下降算法实际是在计算函数的极值问题,我们通过求函数的极值获取函数的局部最值 在计算梯度下降的过程中,求函数的导数来通过逼近的方法去求局部最值 而一般文章中介绍变量变化的时候是通过将变量自身减去导数 ...

  7. 彻底搞明白梯度下降算法1:方向导数与梯度概念理解

    预备知识点:斜率与变化率 方向导数 梯度 总结 1.预备知识点:斜率与变化率 斜率: 数学.几何学名词,是表示一条直线(或曲线的切线)关于横坐标轴倾斜程度的量.它通常用直线(或曲线的切线)与横坐标轴夹 ...

  8. 【快速理解Adagrad】通俗解释Adagrad梯度下降算法

    算法背景: 传统的人工神经网络基本只有输入层.隐藏层.以及输出层.随着大数据时代的来临以及GPU算力的提升,更加深层的神经网络出现了,使得人工智能进入深度学习时代.更深层的神经网络相比较于浅层的神经网 ...

  9. 深度学习:梯度下降算法改进

    学习目标 目标 了解深度学习遇到的一些问题 知道批梯度下降与MiniBatch梯度下降的区别 知道指数加权平均的意义 知道动量梯度.RMSProp.Adam算法的公式意义 知道学习率衰减方式 知道参数 ...

最新文章

  1. 记忆的天空:智能进化三部曲
  2. 如何将零终止的字节数组转换为字符串?
  3. 一般能达到多少_实话实说:一般家庭存款有多少?你又达到标准了吗?
  4. 【指标统计】统计装置总招遥信
  5. webstorm2018破解方法
  6. 从零开始小说 html,从零开始的HTML生活
  7. SAP UI5 ODataWrapper
  8. 无法自动进入并单步执行服务器_膳食纤维无法进入血液执行营养功能,吃它有啥用?...
  9. 通过真实项目截图讲解MDT 2010部署windows 7的具体过程(3)
  10. 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
  11. 从googleDriver下载大数据集
  12. 窥探PTAM之Mapping线程
  13. java ZipEntry 压缩 解压缩 在linux下中文乱码问题解决
  14. 数控铣削图案及编程_数控铣削编程与操作设计有全套图纸.doc
  15. 解决Mac版 snipaste 不在菜单栏显示,无法修改快捷键
  16. 龙格库塔求解车辆振动模型
  17. ZigBee技术及其应用
  18. 4.2.1 Duration and Convexity
  19. 斗罗大陆手游服务器维护,05.19《斗罗大陆:武魂觉醒》停服维护公告(修罗1-7服先行服)...
  20. 电脑公司GHOST WIN7 装机旗舰版 2013 09

热门文章

  1. linux下miniconda卸载
  2. 电商平台-支付模块的设计与架构
  3. wkt格式坐标点面查询
  4. win10快捷键及管理用户
  5. 如何卸载yum安装的软件
  6. python标准库math中计算平方根的函数_16 Python 标准库之 math 模块 - Python 进阶应用教程...
  7. layui导航栏鼠标经过青色条块怎么移到顶部?
  8. IP地址被恶意域名解析
  9. influxdb TSDB初学
  10. 几种常见加密算法初窥及如何选用加密算法