老饼讲解:一步一步上手学习
前面我们已经学习了梯度下降算法,它是一种最基本的优化算法,在有优点的同时,也由于过于"原始"而存在一些明显的缺点,这节我们来讲解一下梯度下降法一些熟为人知的优缺点。
下面我们来说说梯度下降算法的优点和缺点,加深我们对梯度下降算法的理解。
先说梯度下降法的优点,梯度下降法的优点很多,不妨说两个:
1. 算法简单,实现容易,计算量低。
2. 它的每一步迭代,只要学习率足够小,必然能下降。
总的来说,梯度下降就是一个简单又有效的方法,随着学习,会发现这种简单又有效是多么重要,在理论研究上,对它进行修改方便极了,在实际使用中,只需要求出梯度,然后几句代码就能搞定,不知多爽。
好了,下面我们再来说说梯度下降法的缺点,这也就是为什么继它之后,又提出许许多多的优化算法。
1. 没有跳出局部最优的能力
我们都知道,梯度下降法它只能找到由初始值决定的局部最小值,而它没有没有任何跳出局部最优值的机制。

如上图所示,目标函数中的随机一个小坑 ,都能够把梯度下降法坑住,这就非常亏,这往往只能随机初始化,然后通过多训练几次,来尽量避免掉到小坑之中,但如果目标函数中有很多小坑,那梯度下降法就基本没法搞了。
2. 极值点附近收敛速度缓慢
我们都知道,梯度下降法就是朝着负梯度方向调整,它调整的步长为lr*grad,初看这没什么毛病,但是在实践中就会发现,这家伙在极值点附近调整的步长特别小、迭代速度特别慢。

为什么呢?因为在极值点附近梯度grad会很小(梯度就代表着坡度,所以极值点附近的grad很小),那就非常矛盾了,它越靠近极值点,梯度就越小,它调整得就越慢,就好像有一个很大的阻力一样,不管它怎么迭代,基本都很难迭代到局部最小值,所以一般梯度已经极小时,我们就终止训练啦~
好了,这节我们聊了梯度下降法的优缺点,如果没说的话、有些新同学估计想不到它还有这些缺点吧!不过没有关系,它只是一个基础算法,后面接触其它优化算法,就会知道它们是如何解决这些问题的了。
评论