梯度是神经网络里绕不开的一个概念。
一句话:梯度是一个向量,用来指明在函数的某一点,沿着哪个方向函数值上升最快,这个向量的模指明函数值上升程度(速度)的大小。
接下来举例
本质上,梯度就是一个向量,如果函数是n元函数,这个向量就是由n个元素组成。如果是二元函数,
这个向量就是:
计算方式为求偏导,然后带入点值。
可以得到在(1,1)这一点,沿着方向(3,1)函数值上升速度最快。
如图,红色是函数C(x,y)的图像,在(1,1)这一点,可以看到沿着(3,1)移动,函数值(Z轴)是上升最快的。
在神经网络中,我们经常要找一个函数的最小值,这个函数即损失(loss)关于网络中各个参数(parameter)的权重的函数。
如果我们算出这个函数的梯度,我们就知道对每一个参数,如何设置能够使损失上升最快。
那么我们减去这个梯度(即参数vector减去梯度vector),就能使损失下降最快了。
再加一个学习率,就能控制这个下降速度了。