深度学习500问阅读笔记——梯度下降?

这是深度学习500问系列笔记之一,帮助我深入记忆知识,如有不足,随时欢迎交流和探讨。

6.梯度下降?

①梯度下降是迭代法的一种,可以用于求解最小二乘问题;

②在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降(Gradient Descent)和最小二乘法。

③在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值;

④如果需要求解损失函数的最大值,可以通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换;

⑤在机器学习中,梯度下降法主要有随机梯度下降法和批量梯度下降法。

梯度概念需注意:

①梯度是一个向量,既有方向又有大小;

②梯度的方向是最大方向导数的方向;

③梯度的值是最大方向导数的值。

梯度下降法缺点?

①靠近极小值时收敛速度减慢;

②直线搜索时可能会产生一些问题;

③可能会“之字形”地下降。

梯度下降法经典图示

深度学习500问阅读笔记——梯度下降?

核心思想归纳:

1)初始化参数,随机选取取值范围内的任意数;

2)迭代操作:

     a) 计算当前梯度;

     b) 修改新的变量;

     c) 计算朝最陡的下坡方向走一步;

     d) 判断是否需要终止,如否,返回 a);

3)得到全局最优解或者接近全局最优解。

梯度下降法算法的描述?

1.确定优化模型的假设函数及损失函数。

举例,对于线性回归,假设函数为:

深度学习500问阅读笔记——梯度下降?

其中,深度学习500问阅读笔记——梯度下降?分别为模型参数、每个样本的特征值。

对于假设函数,损失函数为:

深度学习500问阅读笔记——梯度下降?

2.相关参数初始化

          主要初始化深度学习500问阅读笔记——梯度下降?、算法迭代步长深度学习500问阅读笔记——梯度下降?、终止距离深度学习500问阅读笔记——梯度下降?。初始化时可以根据经验初始化,即深度学习500问阅读笔记——梯度下降?初始化为0,步长深度学习500问阅读笔记——梯度下降?初始化为1。当前步长记为深度学习500问阅读笔记——梯度下降?当然,也可以随机初始化。

3、迭代计算

①计算当前位置时损失函数的梯度,对于深度学习500问阅读笔记——梯度下降?,其梯度表示为:

深度学习500问阅读笔记——梯度下降?

②计算当前位置下降的距离

深度学习500问阅读笔记——梯度下降?

③判断是否终止。

确定是否所有深度学习500问阅读笔记——梯度下降? 梯度下降的距离深度学习500问阅读笔记——梯度下降? 都小于终止距离深度学习500问阅读笔记——梯度下降?,如果都小于深度学习500问阅读笔记——梯度下降?,则算法终止,当前的值即为最终结果,否则进入下一步。

④ 更新所有的深度学习500问阅读笔记——梯度下降?,更新后的表达式为:

深度学习500问阅读笔记——梯度下降?

⑤更新完毕后转入①。

举例:以线性回归为例。

假设样本是

深度学习500问阅读笔记——梯度下降?

损失函数为

深度学习500问阅读笔记——梯度下降?

在计算中,深度学习500问阅读笔记——梯度下降?的偏导数计算如下:

深度学习500问阅读笔记——梯度下降?

深度学习500问阅读笔记——梯度下降?

深度学习500问阅读笔记——梯度下降?

由此,可以看出,当前位置的梯度方向由所有样本决定,上式中的深度学习500问阅读笔记——梯度下降?深度学习500问阅读笔记——梯度下降?的目的是为了便于理解。

如何对梯度下降法进行调优?

实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面:

算法迭代步长深度学习500问阅读笔记——梯度下降?选择

在算法参数初始化时,有时根据经验将步长深度学习500问阅读笔记——梯度下降?初始化为1。实际取值取决于数据样本。可以从大到小,多取一些值,分别运行算法看迭代效果,如果损失函数在变小,则取值有效。如果取值无效,说明要增大步长。但步长太大,有时会导致迭代速度过快,错过最优解。步长太小,迭代速度慢,算法运行时间长。

参数的初始值选择

初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。

标准化处理

由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为 0,新方差为 1,可节省算法运行时间。

各种梯度下降法性能比较

下表简单对比随机梯度下降(SGD)、批量梯度下降(BGD)、小批量梯度下降(mini-batch GD)、和 online GD 的区别,主要区别在于如何选取训练数据:

深度学习500问阅读笔记——梯度下降?

Online GD 在互联网领域用的较多,比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用普通的 BGD 算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而 Online GD 算法可以实时的依据网民的点击行为进行迁移。