阅读之前看这里????:博主是一名正在学习数据类知识的学生,在每个领域我们都应当是学生的心态,也不应该拥有身份标签来限制自己学习的范围,所以博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。
博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。
为什么要写这篇博客呢?因为博主在面试的时候遇到了面试官问了这个问题,但是没有回答上来。而且博主也在网上去搜了很多解答,关于梯度下降法为什么收敛,很多解释都不够清晰,要么涉及到最优化或者凸优化的公式证明,确实比较复杂。博主又去看了李宏毅的2020版机器学习视频,发现在里面解释的很清楚,所以借花献佛,写一篇博客,既是解答自己的疑惑,也是解决大家的疑惑。
关于梯度下降法,博主之前已经在两篇文章中提及了,分别是:
1.数据分析面试【面试经验】-----总结和归纳
2.【机器学习】—各类梯度下降算法 简要介绍
不过上面只有基础的原理部分,大家如果只需要了解梯度下降法的作用,有兴趣可以看看这两篇博客。
1.梯度下降法的原理和作用
梯度下降法简单来说就是一种寻找目标函数最小化的方法。
梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。梯度下降法的搜索迭代示意图如下图所示:
在机器学习中,我们需要解决的问题一般是求使得损失函数最小的参数问题:
假设包含两个变量{},初始值为,设为,所以可以按照梯度下降公式得到更新的参数,然后进行不断迭代。
2.为什么梯度下降可以收敛?
通过上面的方程,或者算法,有一个疑问?就是每次梯度更新得到的新的值一定比原来的小吗?也就是梯度下降为何一定是收敛的呢?
相信很多人知道,不一定更小,在这里我没有介绍学习率步长的知识,大家可以自行查阅,这不是本文章的重点内容。若学习率设置很大,步长太大,可能导致并不能收敛,也就是会导致损失函数很大,如下图所示:
那么如何去找到收敛的最低点,也就是找到使得损失函数最小的参数的值。
通过初始值画圈,找到其中的最小值。
接下来再以为中心画圈,找到最小的点,重复以上步骤,不断更新参数。
现在的问题是如何在红色的圈里找到最小的值或者最小的点呢?
要用到泰勒公式(Taylor Series)。
1.泰勒级数
泰勒公式(Taylor Series)能把大多数的函数展开成幂级数,即
式子当中只有加法与乘法,容易求导,便于理解与计算。这种特性使得泰勒公式在数学推导(如:微分方程以幂级数作为解),数值逼近(如:求e、开方),函数逼近(在计算机某些计算优化时,可以把某些繁琐的式子进行泰勒展开,仅保留加法与乘法运算),复分析等多种应用中有广泛应用。
通过以上泰勒展开式,我们知道可以假设在
处是无穷可微的,即可得到其泰勒展开式为:
:微分的次数
当很接近的时候:,所以高次项可以删掉,即:
例子如下:的在泰勒展开式
当然泰勒公式也可以有多个参数,如下:
2.如何利用泰勒公式求损失函数最小值
那我们再回到之前的问题:如何利用泰勒公式求之前红圈最小的值
在这里,将损失函数进行泰勒展开为:
然后进行替代和简化得到:
这个即红色圈里的表达式,现在要找圈里的最小值,即最小。
下图即找到最小值:不考虑的情况下,只需要招反方向延长到圆的边界即可
所以最小值为:
将的值代入方程可以得到:
所以就得到了梯度下降的公式,代表学习率,就是损失函数的偏导。
和之前的公式一致:
不过此方法也有一个前提:
这个公式是成立的,意思是我们画出的红色的圈要足够小,也就是学习率不能太大,要较小才能成立。理论上就是学习率要足够小。
其它方法:牛顿迭代法,也就是进行二阶求导,或者是说二次微分,运算可能较大。
参考:李宏毅《机器学习》2020版视频
———————————————————————————————————————————————
博主码字不易,大家关注点个赞转发再走呗 ,您的三连是激发我创作的源动力^ - ^