| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 如何理解梯度下降算法?『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 学习率过大导致梯度下降失败。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:45:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |