乐趣区

关于人工智能:MindSpore跟着小Mi一起机器学习单变量线性回归二

小 Mi 学习,向上踊跃!在上一篇机器学习中,小 Mi 曾经带大家意识了单变量线性回归的数学模型,以及对应代价函数的图形解释,小 Mi 也提及过,咱们真正须要的是一种无效的算法,可能主动地找出这些使代价函数 J 取最小值的参数,来,因而它来了它来了!明天小 Mi 在此基础上,持续带大家一起学习梯度降落算法。

3 梯度降落
梯度降落法是一个用来求函数最小值的算法,同理其余函数最小化问题也能够用此解决,因而实用于个别所有函数。梯度降落的原理就是:开始时咱们随机抉择一个参数的组合,计算代价函数,而后咱们寻找下一个能让代价函数值降落最多的参数组合,咱们继续这么做直到达到一个部分最小值,因为咱们并没有尝试完所有的参数组合,所以不能确定咱们失去的部分最小值是否便是全局最小值,抉择不同的初始参数组合,可能会找到不同的部分最小值;长篇累牍点儿:梯度降落法就是给定,初始值,通常都为 0 或其余值;而后不停地一点点扭转,来使得变小,直到咱们找到 J 的最小值或部分最小值。

3.1 背地思维

假如的函数图形如上图所示,不论,取值为多少,假如一个情景,设想你正站立在某个公园的其中一座红色山上(终点为绿色爱心处),在梯度降落算法中,咱们要做的就是旋转 360 度,看看四周,并决定从什么方向将会最快下山,而后迈进了一小步;接着达到另一点,你再看一下四周,你会发现最佳的下山方向,你再看看四周,而后再一次想想,我应该从什么方向迈着小碎步下山?而后你依照本人的判断又迈出一步,反复下面的步骤,并顺次类推,直到你靠近部分最低点的地位。

而如果假如初始值在另一点,又会失去上图中另一个齐全不同的部分最优解。

背地的数学原理,批量梯度降落算法的公式为:

在梯度降落算法中,还有一个更细节的问题,梯度降落中,咱们要更新,当 j =0,j= 1 时,会产生更新,所以你将更新和。实现梯度降落算法的奥妙之处是,在这个表达式中,计算上述公式左边的局部,通过那一部分计算出的值,而后同时更新也就是:

并更新(赋值语句:a:=b,设定不论 a 的初始值是多少,都将 b 的值赋值给 a;虚实判断语句:a=b,示意做一个申明,断言 a 和 b 的值雷同)。

其中是学习率,它决定了咱们沿着能让代价函数降落水平最大的方向上迈出的步子有多大。如果比拟大,梯度降落就很迅速,就会大步子下山;如果比拟小,就会迈着小碎步下山。在批量梯度降落过程中,咱们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

3.2 梯度降落的直观了解

而对于求导这部分咱们能够联合图形来看,取这个红色爱心点的切线,就是这样一条红色的直线,刚好与函数相切于这一点,这条直线的斜率正好是这个三角形的高度除以程度长度,当初,这条有一个正斜率,也就是说它有正导数,同时,梯度降落法的更新规定示意为:

如果太小了,即我的学习速率小,后果就是只能这样一点点地缓缓移动,去致力靠近最低点,这样就须要很多步能力达到全局最低点;如果太大,那么梯度降落法可能会越过最低点,甚至可能无奈收敛,下一次迭代又挪动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远。所以,如果太大,它会导致无奈收敛,甚至发散。

小 Mi 带大家再来看个例子,上图是代价函数。我想找到它的最小值,首先初始化我的梯度降落法,在图像右侧红色点开始初始化,如果我更新一步梯度降落,兴许它会带我到绿色的点,能够发现这个点的切线是相当陡的;而后沿着这个绿色的点,如果我再更新一步,你会发现我的切线没有那么陡了。所以,每梯度降落一步后,新的导数会变小一点点,最终导数项是越来越小,接近于零的,更新的幅度也会更小。因而,随着梯度降落法的运行,挪动的幅度会主动变得越来越小,直到最终挪动幅度十分小,这时咱们就能够发现,曾经收敛到部分极小值。

小 Mi 还有一个问题,如果咱们事后把放在一个部分的最低点,你认为下一步梯度降落会怎么样工作?假如将初始化在部分最低点,那么该点的导数为零。这就意味着你曾经在部分最长处,它能使得不再扭转,也就是新的等于原来的。因而,如果你的参数曾经处于部分最低点,那么梯度降落法更新其实什么都没做,它不会扭转参数的值。这也解释了为什么即便学习速率放弃不变时,梯度降落也能够收敛到部分最低点。这就是梯度降落算法,你能够用它来最小化任何代价函数 J,不只是线性回归中的代价函数 J。

3.3 梯度降落法的线性回归算法
接着,咱们要将梯度降落和代价函数联合,将其利用于具体的拟合直线的线性回归算法里。梯度降落算法和线性回归算法比拟如图:

对之前的线性回归问题使用梯度降落法,关键在于求出代价函数的导数项,即:

则算法能够改成:

不断更新,直至收敛。

通过图像咱们能够发现线性回归的代价函数总是一个凸函数。这个函数没有部分最优解,只有一个全局最优解,一直扭转,直至到了全局最小值,全局最小对应的假如曲线能很好地拟合数据,这就是梯度降落。

这样的算法,有时也称为批量梯度降落。梯度降落法,指的是在梯度降落的每一步中,咱们都用到了所有的训练样本,在梯度降落中,在计算微分求导项时,咱们须要进行求和运算,所以,在每一个独自的梯度降落中,咱们最终都要计算这样一个货色,这个项须要对所有 m 个训练样本求和。因而,批量梯度降落法这个名字阐明了咱们须要思考所有这一“批”训练样本,而事实上,有时也有其余类型的梯度降落法,不是这种“批量”型的,不思考整个的训练集,而是每次只关注训练集中年的一些小子集。在前面的学习中,小 Mi 也会陆续给大家介绍~

当然啦,可能你会晓得还有一种计算代价函数 J 最小值的数值解法,不须要梯度降落这种迭代算法。它能够在不须要多步梯度降落的状况下,也能解出代价函数 J 的最小值,这是另一种称为正规方程的办法,同样,在前面的课程中,小 Mi 也会率领大家一起学习啦。不过实际上在数据量较大的状况下,梯度降落法比正规方程更实用一些。

明天小 Mi 带着大家一起学习了梯度降落法,以及线性回归算法,而代价函数 J 最小化的梯度降落法不仅仅用在线性回归上,还被用在机器学习的泛滥畛域来最小化其余函数。所以,在这里小 Mi 先恭喜大家胜利地学会第一个机器学习算法(撒花撒花~),咱们下期再见~

【跟着小 Mi 一起机器学习吧!】单变量线性回归(一):https://bbs.huaweicloud.com/f…

退出移动版