梯度下降(導數、方向導數 and 梯度)
梯度下降(導數、方向導數 and 梯度
-
引入
在機器學習與深度學習中,對損失函式最小化時經常使用的演算法就是梯度下降。當然還有很多優化演算法,本文先對梯度下降與反向傳播進行介紹。
-
斜率、導數 and 梯度
在介紹梯度下降之前,首先來明確梯度的概念,以及它與斜率、導數之間的區別。
-
斜率我們從小學就開始接觸,對於一元方程 來講,斜率就是方程影象與 x 軸夾角的正切值,也等於導數值,且各點導數值相等。
導數是微積分中的重要基礎概念,它體現了函式影象在各點變化的快慢程度,也就是在各點切線的斜率(實際上是在某點附近的斜率近似)。
斜率與導數都是有方向的,當大於 0 時,表示函式值沿 x 軸正方向是增加的;當大於 0 時,表示函式值沿 x 軸正方向是減小的。
-
偏導數
偏導數與導數的本質是一致的,都是當自變數的變化量趨於 0 時,函式值的變化量與自變數變化量比值的極限。直觀地說,偏導數也就是函式在某一點上沿 對應座標軸正方向 的的變化率。區別在於導數面向的是一元函式,偏導數面向的是多元函式。
假設有函式 ,則其對於 偏導數為:
-
方向導數
偏導數是關於各座標軸的導數,而對於多元函式上的一個點來講,它可以有無數個偏導數,並不是只有沿著座標軸的有限個方向。就像一個人站在一個球場的中心,除了沿著球場的寬與長的兩個方向可以走以外,周身 360° 都是可以面衝的方向,那麼對於這無數個方向來講的導數,就稱為方向導數。
(中間紅色點為出發點,藍色為各種可以選擇的方向。向上與向右的為沿著座標軸 x,y 的方向。)如果說偏導數是函式在各座標軸方向上的導數,那麼方向導數就是函式在任意方向上的導數,是所有偏導數的集合(例如:沿 x 方向走 2 步,y 方向走 5 步,此時最終走的方向就是由 (0,0)點 指向 (2, 5)的向量做表示的方向,可以被各偏導數的線性線性表示)。
具體的,方向導數的表示式為:
-
梯度
有了以上的鋪墊,那麼梯度就很好理解了。
梯度的提出只為回答一個問題: 函式在變數空間的某一點處,沿著哪一個方向有最大的變化率?
梯度定義如為:函式在某一點的梯度是這樣一個 向量,它的方向是在所有方向導數中,最大的方向導數的方向,它的模為方向導數的最大值。
也可以這麼理解:梯度即函式在某一點最大的方向導數,沿梯度方向,函式具有最大的變化率。
那麼為什麼梯度是方向導數中最大的呢?
因為
-