在机器学习中,大多涉及某种形式的优化。其中,优化通常指目标函数 J(𝛉) 的最小化(最大化可通过 -J(𝛉) 的最小化来实现)。
梯度下降法,作为一种优化的常用方法,包含三种不同的形式,分别为:梯度下降法、随机梯度下降法 与 小批量梯度下降法。以下,分别就三种形式的原理及优缺点逐一进行阐述。
为了便于理解,本文以线性回归为例来进行说明。
因此,有一般的线性回归函数为:
假设损失函数为均方误差损失函数,则损失函数为:
1. 梯度下降法
- 定义
梯度下降法(Gradient Descent,简称GD),也称批量梯度下降法(Batch Gradient Descent,简称BGD)或最速下降法(Steepest Decent),是最小化目标函数的一种常用的一阶优化方法。
- 原理
思想:目标函数沿其梯度的反方向,下降最快。因此,要找到目标函数的局部极小值,必须沿其当前点对应梯度(或近似梯度)的反方向,规定步长,迭代搜索。
其中,梯度为目标函数 J(𝛉) 相对于权重 𝛉 的偏导数。而目标函数的减小,是通过先随机初始化权重 𝛉 ,再对其迭代更新来实现的。
对单个数据点而言:对于所有的数据点:
- 缺点:
通过每次参数更新的伪码可以看到,每次参数的更新,都用到了所有的训练样本,即m个。
因此,计算代价太高,耗费时间长。
2. 随机梯度下降法
- 出发点
鉴于梯度下降法,每次参数的更新都用到了所有的训练样本,耗费时间长。因此,提出了随机梯度下降法(Stochastic Gradient Descent,简称 SGD)。
- 原理
相比于梯度下降法,每次参数的更新,仅用到了一个训练样本。
即,每次参数更新的伪码为:
- 优缺点
每次参数的更新,仅用到了一个训练样本。优点:相比梯度下降法,节省时间。缺点:每次迭代并不一定都是模型整体最优化的方向。若样本噪声较多,很容易陷入局部最优解而收敛到不理想的状态。
3. 小批量梯度下降法
- 出发点
鉴于梯度下降法耗费时间长,而随机梯度下降法容易陷入局部最优解。因此,提出了小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD)。即,在训练速度和训练准确率之间取得一个折衷。
- 原理
若指定每次参数更新用到的训练样本个数 batch_size=10,则每次参数更新,随机选取10个训练样本进行计算。
即,每次参数更新的伪码为:
- 优点
节省计算时间,相比选取单个样本更具稳定性,是在大规模数据上训练大型线性模型的主要方法。
相关知识补充
a. 临界点 与 全局最小点
临界点(Critical point)是斜率为零的点,在一维情况下大致可以分为三种类型:局部极小点(Local minimum),其值低于相邻点;局部极大点(Local maximum),其值高于相邻点;鞍点(Saddle point),同时存在更高和更低的相邻点。
如下图所示:
全局最小点(global minimum)是使目标函数取得绝对最小值(相对所有其他值)的点。
在机器学习中,我们要优化的目标函数,可能含有许多不是最优的局部极小点,或者还有很多处于非常平坦的区域内的鞍点。因此,我们通常寻找使目标函数非常小的点,但并不一定是最小。
即,当存在多个局部极小点或平坦区域时,优化算法可能无法找到全局最小点。 因此,即使找到的解不是真正最小的,但只要它们对应的目标函数显著低的值,我们通常就能接受这样的解。
b. 梯度下降的收敛 与 方向
梯度下降在梯度的每一个元素为零时收敛(或在实践中,很接近零时)。 即,寻求全局最小点或局部极小点,使目标函数达到显著低。
如下图所示:
梯度下降的方向与等高线的切线方向垂直,如下图所示:
- 推导
假设目标函数为一个三维曲面 z=f(x,y) ,该曲面被平面 z=c 所截的曲线方程为:
那么,该曲线在 xoy 平面上的投影,就是曲面 z 的等高线。
因此,等高线的曲线方程为:等高线上任意一点 p 的切线斜率为dy/dx。由点p的切线斜率与法线斜率之积为-1,可得点 p 对应的法线斜率为:
因此,梯度下降的方向与等高线的切线法向量方向相同。即,梯度下降的方向与等高线的切线方向垂直。
参考
【知乎专栏】机器学习算法与自然语言处理:详解梯度下降法的三种形式BGD、SGD以及MBGD
【知乎专栏】机器学习算法与自然语言处理:为什么梯度的方向与等高线切线方向垂直?
【Book】Deep Learning (by Yoshua Bengio, Ian Goodfellow and Aaron Courville)
【Book】解析卷积神经网络 — 深度学习实践手册(魏秀参)