為什么梯度方向是變化最快的方向?
首先,回顧我們怎么在代碼中求梯度的(梯度的數值定義):
1)對向量的梯度
以n×1實向量x為變元的實標量函數f(x)相對於x的梯度為一n×1列向量x,定義為
2)對矩陣的梯度
實標量函數 $ {\displaystyle {\boldsymbol {f}}({\boldsymbol {A}})} $相對於m×n實矩陣A的梯度為一m×n矩陣,簡稱梯度矩陣,定義為
然后我們回顧一下導數和方向導數:
1)導數和偏導
導數是函數在某一點的變化率,在一元函數中,就是沿着x軸在某一點的變化率;在二元函數中,就有了偏導,在x方向上的偏導,就是函數在某一點沿着x軸方向的變化率,在y方向上的偏導同理;在更多元函數中以此類推。
2)方向導數
上一點只涉及到坐標軸方向的變化率,那如果我想要知道任意方向的變化率呢?這就引出了方向導數的概念,方向導數是偏導數的概念的推廣。
現在我們回到梯度:
梯度方向就是方向導數值最大的那個方向,那根據上面梯度的數值定義,“為什么梯度方向是變化最快的方向”這個問題就等價於“為什么多元函數各個軸方向的變化率(這里指向量)的合方向就是整個函數值變化率最大的方向?”
以二元函數為例:
已知:\(\vec{x},\vec{y}\)分別是二元函數\(f(x,y)\)在點\((x_0,y_0)\)處沿\(x,y\)軸的偏導數,\(\vec{l}\)是任意方向的方向導數。
求證:\(\vec{l_2}\)的方向是二元函數\(f(x,y)\)在點\((x_0,y_0)\)處變化最快的方向。
證明:
函數\(f(x,y)\)在點\((x_0,y_0)\)處沿方向\(\vec{l}\)的變化率為\(|\vec{l}|=|\vec{x}|cos\theta+|\vec{y}|sin\theta\),
\(|\vec{l}|\)最大等價於點\((|\vec{x}|, |\vec{y}|)\)與點\((cos\theta,sin\theta)\)的內積最大(內積的坐標定義),
將上面的內積化為向量形式:記\(\vec{A}=(|\vec{x}|, |\vec{y}|),\vec{B}=(cos\theta,sin\theta)\),則\(\vec{A} \cdot \vec{B}=|\vec{A}| \cdot |\vec{B}|\cdot cos\alpha\),其中\(\alpha\)是\(\vec{A},\vec{B}\)的夾角;
則\(|\vec{l}|\)最大等價於\(\vec{A} \cdot \vec{B}\)最大,在問題的設定下\(\theta\)是變量,於是等價於\(\vec{A},\vec{B}\)方向平行,而\(\vec{A}\)的方向就是\(\vec{l_2}\)的方向,故\(\vec{B}\)的方向取\(\vec{l_2}\)的方向時,取到最大變化率。
於是由梯度的數值化定義出發,可以證明梯度方向就是方向導數值最大的那個方向,這個方向就是\(\vec{A}\)的方向(注意看它的坐標)。
以上都是在二元函數的情況下進行證明的,同理可以證明多元函數的情況:
比如三元函數\(f(x,y,z)\),沿\(\vec{l}\)方向的方向導數的大小為\(|\vec{l}|=|\vec{x}|cos\theta_1+|\vec{y}|cos\theta_2+|\vec{z}|cos\theta_3 (1)\),其中\(\theta_1,\theta_2,\theta_3\)分別是x,y,z軸和任意方向向量\(\vec{l}\)的夾角;於是又可以\(|\vec{l}|=\vec{A} \cdot \vec{B}\),其中\(\vec{A}=(|\vec{x}|, |\vec{y}|,|\vec{z}|),\vec{B}=(cos\theta_1,cos\theta_2,cos\theta_3)\),接下來就是同理可證了。
因為(1)處用的是幾何觀點,更多元的情況從幾何角度就想象不出來了,但講道理是一樣的,於是證明結束。
參考鏈接: