导数、偏导数、方向导数、梯度
理解梯度首先要理解导数、偏导数、方向导数。
导数:
指的是一元函数 y = f ( x ) y = f(x) y=f(x) 在某一点处沿x轴正方向的变化率。若导数大于0,说明函数值在该点处沿x轴正方向是递增的,若导数小于0,说明函数值在该点处沿x轴正方向是递减的。
偏导数:
∂ ∂ x j f ( x 0 , x 1 , . . . , x n ) = lim Δ x j → 0 Δ y Δ x = lim Δ x j → 0 f ( x 0 , . . . x j + Δ x j , . . . x n ) − f ( x 0 , . . . x j , . . . x n ) Δ x j \frac{\partial }{
{\partial {x_j}}}f({x_0},{x_1},...,{x_n}) = \mathop {\lim }\limits_{\Delta {x_j} \to 0} \frac{
{\Delta y}}{
{\Delta x}} = \mathop {\lim }\limits_{\Delta {x_j} \to 0} \frac{
{f({x_0},...{x_j} + \Delta {x_j},...{x_n}) - f({x_0},...{x_j},...{x_n})}}{
{\Delta {x_j}}} ∂xj∂f(x0,x1,...,xn)=Δxj→0limΔxΔy=Δxj→0limΔxjf(x0,...xj+Δxj,...xn)−f(x0,...xj,...xn)
偏导数指的是当某一自变量的变化量趋于0且其他自变量不变时,函数值的变化量与该自变量变化量比值的极限。偏导数就是多元函数 y = f ( x 0 , x 1 , . . . , x n ) y = f({x_0},{x_1},...,{x_n}) y=f(x0,x1,...,xn)在某一点处沿某一坐标轴 ( x 0 , x 1 , . . . , x n ) ({x_0},{x_1},...,{x_n}) (x0,x1,...,xn)正方向的变化率。
以二元函数为例,偏导数 f x ( x , y ) {f_x}(x,y) fx(x,y)指的是函数在y轴方向上不变,函数值沿着x轴方向的变化率, f y ( x , y ) {f_y}(x,y) fy(x,y)指的是函数在x轴方向上不变,函数值沿着y轴方向的变化率。
方向导数:
偏导数只描述了多元函数沿坐标轴方向的变化率,但多元函数除坐标轴外,还有很多个方向,想要得到函数在任意方向变化率,就需要用到方向导数。方向导数可衡量多元函数在任意方向的变化率,不管这个方向是不是坐标轴的方向。
梯度:
理解梯度要先理解神经网络的训练过程,简单来说,神经网络的训练过程是通过最小化损失函数来进行参数更新。神经网络训练的目的就是通过不断迭代,获得预测效果最好的参数(w和b),什么时候预测效果最好呢,当然就是预测值和真实值之间差异最小的时候效果最好啦,这个差异就是损失函数,那么训练的最终目的就是最小化这个损失函数。当损失函数最小时网络中的各参数就是预测效果最好的状态。
以常见的均方误差损失函数为例:
L ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 L(\theta ) = \frac{1}{
{2m}}{\sum\limits_{i = 1}^m {({h_\theta }({x^{(i)}}) - {y^{(i)}})} ^2} L(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
可见损失函数是一个多元函数,要想最小化这个多元函数,就要找到其下降的方向让它不断减少直至最低点即可。多元函数有无数个方向,其下降方向也有很多,那自然是沿着其下降最快的方向不断接近最小值是最好的。那么哪个方向是其下降最快的方向呢,就是方向导数最大方向的反方向。
梯度推导
在XOY平面上有一点 p 0 ( a , b ) {p_0}(a,b) p0(a,b),L为以 P 0 {P_0} P0为起始点的一条射线, e ( cos θ , sin θ ) e(\cos \theta ,\sin \theta ) e(cosθ,sinθ)是与L同方向的单位向量(e就是上图中的u), θ \theta θ为x轴正向与射线L的夹角。在曲面z=f(x,y)上,从点 ( ( a , b ) , f ( a , b ) ) ((a,b),f(a,b)) ((a,b),f(a,b))出发,沿单位向量e的方向走t个单位长度后,函数值为 z = f ( a + t cos θ , b + t sin θ ) z = f(a + t\cos \theta ,b + t\sin \theta ) z=f(a+tcosθ,b+tsinθ)
f(x,y)在点 ( ( a , b ) , f ( a , b ) ) ((a,b),f(a,b)) ((a,b),f(a,b))处,L方向的方向导数为:
D = d f ( a + t cos θ , b + t sin θ ) d t ∣ t = 0