李宏毅老师机器学习课程笔记_ML Lecture 3-1: Gradient Descent

这个系列的笔记是台大李宏毅老师机器学习的课程笔记
视频链接(bilibili):李宏毅机器学习(2017)
另外已经有有心的同学做了速记并更新在github上:

很久都没有用高数及线性代数的知识,很多都生疏了,这节课有很多的数学公式及概念,建议先看一下简书上的这篇介绍梯度及梯度下降法的文章深入浅出--梯度下降法及其实现,真的是深入浅出,好评如潮。

这里需要知道的是:

什么是梯度?

为什么要用梯度下降法?

一、什么是梯度

梯度是微积分中一个很重要的概念,梯度的意义在于:

在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率

在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向

二、为什么要用梯度下降法?

机器学习的目的是根据现有数据集,预测未知数据的解。首先制定预测函数f*, 其次根据预测函数制定出合理的损失函数,损失函数的意义在于如果它的值取得最小值,那么认为原来的预测函数拟合训练集数据拟合的最好。所以求出损失函数的最小值就很关键。而根据上面梯度的概念,梯度的负方向是函数值下降的方向,沿着梯度下降的方向就可以找到损失函数取最小值的解。

三、学习率的设定

图1


学习率设置分以下几种情况:

非常大:导致损失突然变得非常大,无法收敛

较大:损失收敛在比较的值上

较小:损失虽然一直在减小,但速度很慢

正好:损失逐渐减小,最终收敛在一个比较小的值上

调节学习率的一般思想:

在一开始学习率取较大值,这样便于更加快速到达最低点

慢慢地学习率取值逐渐缩小,这样会避免学习率取值过大从而错过最低点

自适应调节学习率的方法:

Adagrad

四、Stochastic gradient decent(SGD)随机梯度下降

相比梯度下降法遍历所有数据,SGD可以随机选取某一个样本计算损失后然后更新梯度,提高训练速度,但不一定可以得到全局最优解。
博客园上一篇文章写得比较清楚 [Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD

五、Feature scaling 特征缩放/归一化

为什么要进行特征缩放?
如果样本的取值范围过大,在应用梯度下降算法寻找全局最小值的时候,损失函数需要花费巨大的代价。进行缩放后,多维特征将具有相近的尺度,这将帮助梯度下降算法更快地收敛。
很多文章都拿吴恩达的课程中图来举例:
图2 归一化之前的等高线图
图3 归一化之后的等高线图

图2


图3

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdwfw.html