文章目录
梯度下降(Gradient Descent)算法
是一个用来求函数最小值的算法
1. 梯度下降背后的思想
- 随机选择一个参数的组合(θ₁,θ₂,…)计算代价函数。
- 然后我们寻找下一个能让代价函数最低的参数组合。
- 持续这么做直到下一个局部最小值(local mininum)。
因为我们并没有证实我们所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global mininum)。
在单变量函数中,梯度其实就是函数的微分,代表着函数在某个定点的斜率
运用梯度下降法,关键在于求出代价函数的导数。
参数更新公式(多变量线性回归)
2. 三种梯度下降方法
2.1 批量梯度下降(Batch Gradient Descent)
是指载梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分时,我们需要进行求和运算,因此得名。
2.2 随机梯度下降(Stochastic Gradient Descent)
随机梯度下降每次用一个样本来梯度下降
2.3 小批量梯度下降(MiniBatch Gradient Descent)
MBGD称为小批量梯度下降,每次迭代使用一个以上又不是全部样本。
牛顿法
首先牛顿法是求解函数值为0时的自变量取值的方法。具体地,当要求解 f(θ)=0时,如果 f可导,那么可以通过迭代公式:
来迭代求得最小值。
利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理论依据是,函数的极值点处的一阶导数为0.
其迭代过程是在当前位置x0求该函数的切线,该切线和x轴的交点x1,作为新的x0,重复这个过程,直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。
其迭代过程如下:
当应用于求解最大似然估计的值时,变成
ℓ
′
(
θ
)
=
0
ℓ′(θ)=0
ℓ′(θ)=0的问题。这个与梯度下降不同,梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值。那么迭代公式写作:
当
θ
θ
θ是向量时,牛顿法可以使用下面式子表示:
其中H叫做海森矩阵,其实就是目标函数对参数θ的二阶导数。
通过比较牛顿法和梯度下降法的迭代公式,可以发现两者及其相似。海森矩阵的逆就好比梯度下降法的学习率参数alpha。牛顿法收敛速度相比梯度下降法很快,而且由于海森矩阵的的逆在迭代中不断减小,起到逐渐缩小步长的效果。
牛顿法和梯度下降法的比较
1). 牛顿法:
-
是通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数。
-
收敛速度很快。
-
海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。
-
缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。
2). 梯度下降法:
-
是通过梯度方向和步长,直接求解目标函数的最小值时的参数。
-
越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。