本系列是《玩转机器学习教程》一个整理的视频笔记。这是梯度下降法的最后一小节,这一小节对梯度下降法做一个总结。
一
小批量梯度下降法
在前面详细的介绍了两种梯度下降法:
相比较而言批量梯度下降法每一次参数更新的速度比较慢,优点就是稳定,一定可以向损失函数下降最快的方向前进。对于随机梯度下降法,由于每一次参数更新都只需要随机计算一个样本的梯度,所以相对于批量梯度下降法计算所有样本的梯度而言优点就是速度快,缺点就是不稳定,每一次前进的方向是不确定的,甚至有可能向反方向前进。总的来说:
很明显这两种梯度下降法都是比较极端的方式,因此提出了小批量梯度下降法(Mini-Batch Gradient Descent)。小批量梯度下降法是综合上面两种梯度下降法的优缺点,显然小批量就是每一次参数更新不计算所有样本的梯度,但是也不只计算一个样本的梯度,而是选择k个样本,每一次参数更新计算这k个样本的梯度。
比如:将k设置为10,也就是每次参数更新都需要计算10个样本的梯度,这样我们既兼顾了随机梯度下降法的运算速度,与此同时由于每次计算10个样本梯度,肯定比只计算一个随机样本梯度的时候更加稳定一些。当然此时的k是超参数,需要在算法执行之前人为的给定值。
小批量梯度下降法是综合了随机梯度下降法和批量梯度下降法的优缺点,运行的速度比批量梯度下降法快,而比随机梯度下降法要稳定。通过后面学习也可以看到,很多机器学习都会使用这种结合的手段,只不过相应的增加一些超参数而已。
二
随机在机器学习中的意义
在前面我们重点介绍了随机梯度下降法,事实上在机器学习领域,随机具有非常大的意义。再介绍随机梯度下降法的时候,一直强调随机梯度下降法的随机过程运算速度很快,这是对于损失函数非常简单的线性回归问题来说的。在实际中,损失函数通常比较复杂,此时随机还有另外一个出其不意的优点,可能因为随机的这种方式跳出局部最优解。在一篇论文中提到,当使用随机梯度下降法的时候,很多时候我们更容易找到我们损失函数对应的全局最优解,这也是随机梯度下降法的一个优势:跳出局部最优解。
在机器学习领域很多算法原理都会使用随机的特点,比如之前介绍的网格搜索,网格搜索其实就是对所有参数进行组合的一个全局搜索过程,其实我们完全可以使用随机搜索的方式。还有另外一些算法,比如最典型的随机森林,还有在AlphaGo中主要使用的数据结构蒙特卡洛树,这些算法都涉及到了随机。由于机器学习领域解决的本身就是在不确定的世界中的不确定的问题,机器学习算法本身可能本身并没有一个固定的全局最优解,正因为如此,随机在机器学习领域扮演着非常重要的角色。
三
梯度上升法
在这一章我们主要介绍梯度下降法,找到损失函数最小的参数值,相应的就向着梯度的反方向前进即可,因为梯度的反方向是损失函数下降最快的方向。相应的当我们需要找出使目标函数f最大的参数值的时候,可以将参数向着梯度的方向前进,因为梯度的方向就是目标函数f增大最快的方向。这里需要这注意,最优化的函数称为目标函数:
梯度下降法的时候,只需要在计算得到的梯度前面加上一个负号,表示梯度的反方向,然后计算参数更新。相应的梯度上升法,只需要在计算得到的梯度前面加上一个正号,表示梯度的方向。
四
梯度下降法不是机器学习算法
前面在介绍梯度下降法的时候,也提到过梯度下降法本身并不是机器学习领域中的一个算法,而是一种基于搜索的最优化方法,梯度下降法最优化目标函数:
下一章将会介绍机器学习领域非常重要的方法,PCA主成分分析法,使用主成分分析法最大的一个应用就是对数据进行降维操作。介绍PCA的底层实现将使用梯度上升法,PCA有非常严谨的数学理论的支撑,因此我们完全可以使用一个公式将PCA求出来。作为机器学习入门课程,不过多介绍PCA数学原理,而是通过搜索的策略来得到PCA的解。因此梯度上升或者梯度下降法绝不仅仅能够解决线性回归问题。当然PCA除了用于降维之外,还可以应用非常多的场景。