大部分的机器学习模型里有直接或者间接地使用了梯度下降的算法。虽然不同的梯度下降算法在具体的实现细节上会稍有不同,但是主要的思想是大致一样的。梯度下降并不会涉及到太多太复杂的数学知识,只要稍微了解过微积分里导数的概念,就足够完全理解梯度下降的思想了。
梯度下降的目的
绝大多数的机器学习模型都会有一个损失函数。比如常见的均方误差(Mean Squared Error)损失函数:
![equation?tex=L%28w%2Cb%29+%3D%5Cfrac%7B1%7D%7BN%7D%5Csum_%7Bi%3D1%7D%5E%7BN%7D%7B%28y_%7Bi%7D+-+f%28wx_%7Bi%7D+%2B+b%29%29%5E%7B2%7D%7D](https://i-blog.csdnimg.cn/blog_migrate/f852a0c0035a4b27b7bd081238c029d6.png)
其中,
![equation?tex=y_%7Bi%7D](https://i-blog.csdnimg.cn/blog_migrate/a42ca2e64697201efa7469c784f5498e.png)
![equation?tex=f%28wx_%7Bi%7D+%2B+b%29](https://i-blog.csdnimg.cn/blog_migrate/3253258972268d2a37bb553d5b0c62c9.png)
![equation?tex=f](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png)
![equation?tex=x_%7Bi%7D](https://i-blog.csdnimg.cn/blog_migrate/388b1a41d582745822473b86f23fb79a.png)
损失函数用来衡量机器学习模型的精确度。一般来说,损失函数的值越小,模型的精确度就越高。如果要提高机器学习模型的精确度,就需要尽可能降低损失函数的值。而降低损失函数的值,我们一般采用梯度下降这个方法。所以,梯度下降的目的,就是为了最小化损失函数。
梯度下降的原理
寻找损失函数的最低点,就像我们在山谷里行走,希望找到山谷里最低的地方。那么如何寻找损失函数的最低点呢?在这里,我们使用了微积分里导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。
损失函数里一般有两种参数,一种是控制输入信号量的权重(Weight, 简称
![equation?tex=w](https://i-blog.csdnimg.cn/blog_migrate/1c7a330b82678d6b033d9748f5120af9.png)