从导数到梯度下降算法

梯度下降是机器学习中寻找极值点的基础算法,它的思想也很简单。想象你站在山巅,山脉的起伏就带代表着,想要到达山谷的办法就是寻找下山最陡峭的地方,沿着这条路向下走,直到无法再向下。

在介绍梯度下降算法前,我们先直到什么是梯度,而梯度我们又应该先知道什么是导数
1.导数

这是导数的标准定义,导数表示变量在指定位置的变化程度,变化快慢
从导数到梯度下降算法_第1张图片
导数是高中就学习过的知识,也是微积分中重要的微分。导数的大小代表了函数的平缓或陡峭。

2.偏导数
从导数到梯度下降算法_第2张图片
当我们把函数扩展到N维欧氏空间,变量的增多催生了偏导数的概念,偏导数表示函数在某一个轴上的变换快慢。

3.方向导数
从导数到梯度下降算法_第3张图片
偏导数只能表示了函数在某一轴方向上的变化快慢,那考虑n维空间中的某一方向的变化快慢,就引入了方向导数的概念。
方向导数是一个数,它反映的就是f在l方向上的变化率。
从导数到梯度下降算法_第4张图片
考虑2维空间的方向函数推导
从导数到梯度下降算法_第5张图片
从导数到梯度下降算法_第6张图片

4.梯度

方向导数表示了函数在某一个方向的变换快慢,那我们想在n维空间中找到函数在哪个方向的变化最多怎么办?
为了解决这个问题引入了梯度概念。

梯度表示函数在变量空间的某一处,沿着哪个方向的变化率最大。

考虑2维空间
从导数到梯度下降算法_第7张图片
总结一下:
1.梯度是一个向量,即有方向,有大小
2.梯度的方向驶最大方向导数的方向
3.梯度的大小是最大方向导数的值

5.梯度下降算法
很容易联想,既然我们有了梯度,就有了在数据集中解决寻找极值点的办法。
从导数到梯度下降算法_第8张图片
我们需要的就是随机生成在函数上的一个点,然后寻找这个点在某个方向上的梯度方向,每次沿着梯度方向的反方向进行更新,知道这个点收敛。

这是我们一直函数方程的办法,但事实上我们不可能根据完全模拟出函数的方程,如果可以的话,我们也就不需要这么麻烦的办法去找极值了。我们可以采用求导的办法去寻找极值点。

考虑,我们对数据集的拟合方程为:

我们定义损失函数为:

因此有
从导数到梯度下降算法_第9张图片

前面提到梯度下降算法的更新为

由上面两式可以得到,针对离散点击的更新规则为

从导数到梯度下降算法_第10张图片
考虑把求和公式拿到外面

从导数到梯度下降算法_第11张图片

你可能感兴趣的:(机器学习)