反复纠结这个问题我感觉没必要,纠结的原因可能是数学基础不牢固,很多问题没想明白。
要注意,导数是具有方向的。
一元函数的导数值和方向:
二元函数的导数值和方向:
我们要理解:导数的意义本身就是求的该点的变化率,无论是一元还是二元还是多元。
所以二元导数和一元导数一样,它同样具有方向,方向是沿着曲面上该点,并且下降幅度最大的方向,这点变化率最大,沿着这个幅度最大的方向所在直线看,无论是向上,还是向下,都是变化最快的。
至于梯度,梯度是什么?我们规定曲面上该点下降幅度最大的反方向(还是下降幅度最大的那个方向所在的直线上,只不过是下降的反方向,也就是上升最快的方向)为梯度。为什么这么规定呢,我们发现求任意一个方向梯度的时候,如下:
求任意一个方向梯度,这样说其实不严谨,二元函数的导数和梯度是确定的,并不存在任意一个方向的梯度这种说法。这也是很多人迷惑的原因。二元函数的导数方向:沿着曲面上该点,并且下降幅度最大的方向,这点变化率最大。梯度是蹭了人家二元函数导数方向的热度,这家伙定义就是为了蹭热度的。就好像张飞对 关羽效忠刘备的慷慨激昂后,说了句 俺也一样。
因为咱们求的二元函数的斜率可是变化率最大的方向,这已经确定了。就比如说我的饭量是三个馒头,这已经确定了,三个以后一定吃不下了。如果你想换个方向求斜率(加上方向向量),就好像我先吃一个鸡腿或者一些零食,那再吃馒头肯定就吃不下三个了,具体多少,我也不清楚,需要计算。但是我发现一个问题哈,如果我不吃零食或者鸡腿(方向向量和二元导数的方向一样的话),我就能吃三个馒头了。所以为了保证我能吃三个馒头,认为我不应该饭前吃零食,也就是保持梯度为变化率最大的那个方向(二元函数的导数方向),当然,这个方向有两个,直线朝两侧无线延伸么,那就规定:二元函数的导数方向且令函数值增加的方向为梯度的方向,另一侧称为梯度下降的方向。
机器学习中,为了降低损失函数的值,梯度下降的方向是很重要的,也就是必须求二元函数的导数。