在之前的文章中我們講解了雅可比行列式,它為多變量系統計算梯度。如果我們對標量值多變量系統進行測量,它會給出一個行向量,該行向量指向更大的坡度,其長度與局部陡度成比例。在本文中,我們將把雅可比的概念從向量擴展到矩陣。
讓我們通過將Jacobian應用到一個更簡單的系統來啟動用於機器學習的微積分第3部分。
這裡簡單的局部微分將給我們一個雅可比向量。讓我們顛倒我們的過程,並嘗試通過觀察向量字段來弄清楚函數的外觀。嘗試在幾個方面找到雅可比的值。
這顯示了指向原點的向量。如果我們靠近一點
更小的矢量,但再次指向原點。
零向量表明三件事。原點是最大,最小或鞍形。我們將在一段時間內介紹鞍形概念。
看到上面的整個矢量場,我們可以看到原點實際上是系統的最大值。
現在,讓我們嘗試形成一個雅可比矩陣。該函數將向量作為輸入,並且將向量作為輸出。
考慮下面的兩個函數。
我們可以將這兩個視為兩個向量空間。一個具有向量uv,而另一個向量x y。
uv系統中的每個點在xy系統中都有一個對應的點。在xy座標系中繞一個點移動將在uv系統中具有對應的路徑,但完全不同。
u和v的雅可比行向量可以矩陣形式編寫,因為它們是單個向量的組成部分。
對於矢量值函數,這是我們的雅可比矩陣結構。接下來,讓我們將其應用於上一個函數並查看結果。
該常數值表明梯度在任何地方都必須是常數。該矩陣只是從xy空間線性轉換為uv空間。如果我們應用向量xy我們得到,
當然,我們遇到的許多函數並不是那麼簡單甚至是線性的。它們更加複雜,通常是非線性的。
但是,這些函數通常足夠平滑。如果我們仔細縮放,我們可以通過將空間中每個較小區域的Jacobian加起來,來考慮較小區域近似線性。轉換後,這將使我們改變區域的大小。
我們可以在笛卡爾座標系和極座標系之間的轉換中體驗到這一點。
考慮代表半徑和從x軸向上的角度的向量r。我們必須分別用x和y表示它們。
使用三角函數,我們可以將它們編寫為以下表達式。
現在,構建雅可比矩陣並找到其行列式。
我們得到r作為最終結果,並且沒有θ。這表明,當我們沿著r並遠離原點移動時,較小的空間區域將隨r縮放。
我希望通過jacobian向量和矩陣在機器學習微積分中有關應用jacobian的討論有助於建立該概念的直覺。
我們經常聽到機器學習中的術語“優化”。在日常生活中,它用來描述製作儘可能好的東西的過程。
在數學中,優化幾乎相同。我們試圖找到一個函數的輸入值,該函數給出相應的輸出,作為系統的最大值或最小值。
在現實世界中,優化應用程序可能包括在繁忙的交通中繪製路線,安排工廠的生產計劃,選擇貿易市場中庫存的策略。
現在,提出我們正在查看的上述函數。如果要查找最大值的位置,我們將首先構建jacobian,然後查找x和y的值,使其等於0。
但是,隨著函數變得棘手,找到最大值和最小值的位置也會變得棘手。
對於複雜的函數,我們可以通過解析表達式找到其雅可比,但將其設置為0將無濟於事。這些函數具有多個位置,且梯度為0。
如果繪製所有函數的最大值和最小值,我們將看到最高的峰和最深的谷。所有的峰都是最大值,所有的谷都是最小值。
最高的單個峰(在這種情況下為A)是全局最大值,而C和E是局部最小值。
同樣,點D是全局最小值,點B是局部最小值。
這非常簡單。就像我們站在山區一樣。如果我們想到達最高峰,我們只需四處張望,找出最高峰,然後向其前進。
但是,如果我們晚上行走會怎樣?這種情況類似於我們的函數沒有解析表達式的情況。意思是,我們無法繪製整個函數來幫助我們環顧四周。
這種情況經常出現在優化問題中,並且非常具有挑戰性。
但是,假設我們有燈光!現在我們可以看到指向山頂的雅可比矢量標誌。
但是,雅可比矢量指向峰值可能未必指向最高峰值。也就是說,它們可以指向全局最小值C和E,而不是全局最大值A。這意味著我們可以輕鬆地最終走向局部最小值。
這種夜間山坡類比通常用於優化方案中。
但是有一些事情要看。這種類比可能會引起誤導因素。就是說,當我們評估一個函數時,我們可以在不同點評估它,而無需評估兩者之間的任何事情。而且,無論點數多遠,計算成本都是相同的。那就是我們實際上並不是在兩點之間走動。
這使我們想到了另一個類比“沙坑“。沙坑很深,底部不平坦。
我們可以使用長杆測量沙坑在不同點的深度。沙坑非常深,一旦它進入沙坑,我們就無法將其向側面移動。我們可以將其拔出並在其他地方嘗試。
海森(The Hessian):
接下來在用於機器學習的微積分第3部分中,讓我們討論與多元系統有關的另一個重要概念。Hessaina。海森也可以看作是雅可比的延伸。使用jacobian,我們將函數的所有一階導數計算為向量。在這裡,我們將計算矩陣中具有n個變量的函數的二階導數。
我們已經知道找到高階導數,我們僅需繼續區分函數。偏導數也是如此。如果我們想找到關於x1和2的偏導數,首先我們發現關於x1的偏導數,保持所有其他變量不變。然後,假設所有其他變量均為常數,則針對x2進行區分。
因此,海森將是一個n×n方陣,其中n是函數中變量的數量。
在求解時,首先找到jacobian,然後計算其粗略值是比較容易的。看一個例子。
現在,就每個變量而言,再次區分此雅可比會導致海森。
請注意,Hessian矩陣在對角線上方和下方對稱。這表明函數是連續的,沒有任何突然的中斷。
現在,將x,y和z值傳遞給hessian矩陣將為我們提供一些數值矩陣,並將告訴我們有關空間中點的信息。
為了形象化這個概念,請考慮一個2D系統。一個更簡單的函數
我們可以輕鬆地可視化此函數。
但是,即使不知道該函數,然後在點0、0處計算jacobian也會得到0的梯度向量。
但是,我們不知道這是最大值還是最小值。檢查其他一些點並查看它們是否在上面或下面是另一種發現方法,但肯定不是可靠的方法。
黑森州在這方面提供了幫助。如果其決定因素為正,則我們將處理最大值或最小值。此外,右上角的術語還說明了更多信息。如果是正數,我們將像上述情況一樣處理最小值。
再次考慮一下上述函數,稍有改動。
現在行列式為負,我們不再處理最大值或最小值。(0,0)點處的漸變是平坦的。此函數稱為鞍形。
坡度為0的位置,但坡度在一個方向上下降,而在另一方向上上升。找到峰時,這可能會導致很多複雜情況。
因此,這為我們提供了另一種輕鬆導航沙坑的工具!
到目前為止,我們已經看到雅可比矢量如何幫助我們找到空間中每個點的梯度的大小和方向。Hessian進一步說明了我們在梯度0的點上正在評估哪種特徵,從而進一步幫助了我們。
所有這些概念將在優化方案中為我們提供幫助,現在我們可以瞭解為什麼對於機器學習必須瞭解多元演算。
接下來,讓我們談談現實世界中經常出現的一些函數。
在涉及優化的機器學習的許多應用中,例如神經網絡,我們將處理大量的維度。在數十萬範圍內。顯然,在這種情況下,繪製表面和導航並不容易或不可能。我們將不得不依靠我們的2D直覺,讓數學指導我們的發展。
同樣,即使我們在2D系統中工作,也不一定總是有一個好的分析表達式,在每個較小的區域進行計算都可能非常昂貴。
即使我們可以繪製它,我們也可能沒有足夠的計算資源來填充它。
接下來,我們上面看到的所有函數都行為良好且非常流暢。但是這些函數可能在其中存在嚴重的不連續性。使得導航更加困難。
現實世界的另一個挑戰是噪音。有許多原因會使我們的函數嘈雜。
這一切一定會引起您的困惑。那麼雅可比有什麼用?因此,讓我們嘗試回答這些問題。
如果我們沒有函數,那麼我們如何首先應用jacobian?這就引出了另一種大規模研究的技術,即數值方法。
對於沒有明確公式或需要很長時間才能求解的情況,我們開發了涉及近似的方法。
使用有限差分法,我們不會在每個點上評估函數。但是隻考慮我們知道的那些點,並圍繞它們建立一個梯度近似。
在這裡的一維場景中,我們計算了很多點。
在更高的維度上這是不可能的。因此,我們以這種方法為基礎建立了技術,即,從初始位置開始,我們將通過近似每個偏導數來構建雅可比近似。
因此,考慮x中的一小步,可以計算x中的偏導數。在y上走一小步可得到y的偏導數。
選擇步長時,請保持平衡。太大的步長不會給出正確的近似值。步長太小會在計算中帶來問題。請記住,我們的計算機將值保存到不超過限制的重要位置。
對於嘈雜的系統,到目前為止已經設計了許多方法。最簡單的方法是計算不同步長的梯度,然後取其平均值。
通過對真實場景的討論,我們意識到,一旦我們離開了平滑函數的空間,而轉移到計算量大且嘈雜的函數中,所有這些同時變得更具挑戰性和趣味性。
結論:
我們現在對多變量系統以及如何駕馭它們很有信心。上述討論幫助我們建立了處理高維繫統的直覺,這種情況在機器學習中非常常見。
在機器學習微積分系列的下一部分中,我們將嘗試瞭解機器學習中一些必要的微積分概念,比如多元鏈式法則,並使用它來優化神經網絡。