数学知识体系中寻找二次曲线最大值和最小值的方法是令导数为0,这样的方法也可以用在求解回归算法的问题中。但是在机器学习领域中并不推崇这种思想,因为在实际应用中,使用导数为 0 的方法会增加计算机计算的复杂度,消耗大量计算资源。机器学习的求解方法则会在高维空间的求解中体现出计算的优势。
本节会详细介绍机器学习中求解回归曲线的方法——梯度下降,并以求解二次曲线为例,比较导数方法与梯度下降方法的异同,从而加深读者对梯度下降方法的理解。
高中时期经常出现函数最大值、最小值的求解问题。例如,给出方程 y=x2,求其最小值(y值),以及最小值的所在位置(x值)。如图 1 所示,我们很容易看出 y=x2 的最小值是 0,最小值的位置是 x=0。在高中我们使用的求解方法如下。
已知曲线:y=x2 对其求导,y'=x 令导数等于 0 即 x=0 求得,导数求解方法的几何解释是最低点的位置是斜率为 0 的位置,也就是 y′=0 的位置。
这与机器学习有什么联系呢?其实现在比较火热的深度学习和经典的线性回归、逻辑回归算法的根本思想就是求解类二次曲线的最小值。在后续章节中会深入探讨深度学习背后的数学思想。接下来,将详细介绍机器学习中求解二次函数最小值的方法。
对于已知曲线 y=x2,我们很容易通过求导来求得最小值及其位置。但如果不知道曲线的全貌是 y=x2,又该如何求解呢?
现在已知点 x=80;y=6400,和这个点周围曲线的形状,如图 2 所示。现在的任务是找到该曲线最小值的点,那么应该如何做呢?
设想一下,你站在半山坡上,看不到山顶,也看不到山谷,只能看到周围的情景,如果要下山,你要怎么做呢?
对,沿着山坡最大的坡度向下走!当走到下一个位置时,再选择最大的坡度向下走,这样不停地走,就会走到山下。让我们一起来看一下这个思想在数学上的解释。回到图 2,按照下山的思想,我们应该将点(80,6400)向左移动一点。
如图 3 所示,我们从点(80,6400)移动到了点(72,5184)。同样的道理,在这个点我们再观察一下,发现应该继续向左移动。
如图 4 所示,我们现在移动了点(64.8,4199.04)的位置,继续观察,我们还应该向左移动,这样循环往复,我们会不会走到山底呢?
移动了 93 次后,最终到达了点(0,0)的位置(这里计算精度是小数点后两位),也就是说我们已经逼近了最小值点(0,0),如图 5 所示:
这就是梯度下降的方法。用该方法实现求解二次函数的最小值,虽然不像导数方法那么完美,能够直接定位到原点(0,0),但是只要增加迭代次数,就能无限接近最小值点。后面我们需要学习梯度下降的一些细节,比如每次步长应该如何选择。因为如果步长选择太大,很可能会越过最小值点。