梯度下降法,也称最速下降法,是求解无约束最优化问题的常用方法
假设在上有连续偏导数,要求解的无约束优化问题为:
梯度下降法是一种迭代算法,由于负梯度方向是函数下降最快的方向,所以在迭代每一步的时候,以负梯度方向不断更新,这样会使在当前位置下降最快
当目标函数是凸函数的时候,梯度下降的解是全局最优解,但一般情况下,并不能保证;同时,梯度下降的收敛速度有不一定是最快的,可以参考下一篇牛顿下降法
简单证明
由于具有一阶连续偏导数,若第k次迭代值为,将在处一阶泰勒展开得:
带入得:
梯度下降是一种迭代方法,可以假设迭代公式为:,其中是移动的步长,是移动的方向
步长是用来调节移动速度的,可人工设定和调节,关键是确定移动方向,方向错了,步长调节根本无效,算法就失效了
结合泰勒展开式和迭代公式,最有问题可以转化为:
因为步长,所以当的时候,优化问题可以得到最优解,因此最终的迭代公式为:
方法分类
这里的笔记本来来自回归分析,所以一些符号表示不一致,这里重新说明一下:
代价方程和优化问题定义如下:
梯度下降(Gradient Descent GD)算法
使想梯度反方向变化,即:
其中 是学习速率,
根据迭代方式的不同,梯度下降又分为(批量)梯度下降(Batch GD)和随机梯度下降(Stochastic GD)
1 梯度下降:每次迭代都要遍历所有训练数据计算梯度
2 随机梯度下降:每次迭代只遍历单个训练数据
3 中和上面两种,每次使用k个训练数据更新参数,即是另一种方法:miniBatch GD
梯度下降和随机梯度下降的比较:
- 计算代价,梯度下降每次迭代都要遍历所有训练数据,因此,大数据下,随机梯度下降较常用
- 收敛速度,随机梯度下降算法快一些,但可能永远无法收敛
- 局部最优,二者都可能