機器學習中往往需要刻畫模型與真實值之間的誤差,即損失函式,通過最小化損失函式來獲得最優模型。這個最優化過程常使用梯度下降法完成。在求解損失函式的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函式和模型引數值。
解釋梯度之前需要解釋導數與偏導數。導數與偏導數的公式如下:
導數與偏導數都是自變數趨於0時,函式值的變化量與自變數的變化量的比值,反應了函式f(x)在某一點沿著某一方向的變化率。導數中該方向指的是x軸正方向,偏導數中指的是向量x所在空間中一組單位正交基()中某乙個基方向的變化率。因為x的座標已知,所以這組正交基唯一,也就是表示x的座標軸,而偏導數就是因變數與自變數在x的座標軸正方向的變化量之比。
上面敘述的變化率都是函式在某一點上函式沿特定方向的變化率,如導數中指x軸正方向,偏導數中指自變數x所在空間中一組正交基的某乙個方向。那麼如何表示因變數變化量在某一點沿任意方向上與自變數變化量的比值呢?這裡就需要使用方向導數,方向導數定義如下。
偏導數是函式某一點沿著任意方向上因變數與自變數的變化率的比值,是乙個向量,有大小也有方向,那麼既然偏導數既有大小也有方向,則肯定存在乙個偏導數,其模值(即大小)最大。這個最大的模值就是梯度的模值,模值最大的偏導數的方向就是梯度的方向。梯度的定義如下:
前面說到梯度方向是函式最大偏導數的方向,因此沿著與該方向相反的方向,必然可以達到函式的乙個極小值點。以一元函式為例,其導數方向就是梯度方向,因此為了求取如下圖所示的函式的極小值,只需要沿著導數相反的反向向下遞迴即可。如圖所示,計算起點在乙個較高的點,計算當前點梯度,沿著與梯度相反的方向一步步向下進行,最終會達到函式的極小值點。
然後圖中的情況比較特殊,因為圖中函式只有乙個極值點,這個極值點也就是函式的最小值點,因此梯度下降法遞迴到極值點後,也就得到了函式的最小值。但是如果函式存在多個極小值點(非凸函式),使用梯度下降法可能使演算法陷入區域性最小值點,從而得不到全域性最優解。
梯度下降法一般用於機器學習演算法中,用於最小化損失函式,得到最優的**模型,這個**模型就是假設函式,對於線性回歸來說,一般為以下形式:
寫成矩陣形式:
其中線性回歸中損失函式常使用模型**值與真實值差值的平方刻畫,如下:
其中m為訓練樣本的個數,即批梯度下降法中損失函式等於所有樣本單獨產生的損失(誤差)之和。
寫成矩陣形式有
其中
是乙個mxn矩陣,矩陣每一行都是乙個輸入向量,機器學習中每一行即為乙個輸入樣本的特徵
,每個點即為輸入樣本對應的標籤。
為了使用梯度下降法計算的最小值,需要先計算損失函式關於的的偏導數,根據矩陣的求導公式,有下式成立:
因為,則:
所以:於是對於
,有:
對於則有:
根據式(2)式(3)及鏈式法則,可得:
上式即為損失函式對於引數的導數,根據梯度下降法,設演算法學習率為,則引數的更新策略為:
式(1)為模型的損失函式,矩陣形式的損失函式中,為mxn大小的矩陣,從代數形式的損失函式定義中,可知m為梯度下降法一次輸入的樣本個數,n為樣本特徵向量的個數,幾種梯度下降法就是以m的個數來區分的,分別為:、
1) 批量梯度下降法。這種情況下m為所有訓練樣本的大小,即一次將所有樣本特徵向量模型中,並根據模型結果,計算損失函式,更新引數,直到達到設定的最優解條件。優點是可以利用所有樣本的資料,計算全域性梯度,,從而減小演算法了陷入區域性極小值情況的出現。而且由於批量梯度下降法使用了所有樣本的資訊,演算法進行梯度下降時,計算的方向與實際樣本空間中梯度方向相近,使得演算法能較快收斂;缺點是計算量大,計算速度慢,對於海量資料集,可能出現記憶體不足的情況。
2) 隨機梯度下降法。批量梯度下降法中一次性用矩陣乘法將所有樣本的特徵向量代入模型中計算,而隨機梯度下降法與之相反,每次只取乙個樣本代入模型計算更新引數,即m=1,這個樣本通過隨機的方式從輸入樣本中選擇。這種方法優點是計算速度快;缺點是一次只使用乙個樣本進行計算梯度,則每次迭代的過程中,演算法梯度下降的方向受當前樣本影響極大(梯度下降時並不能總沿著真實梯度方向進行,而是四處亂撞,因為每個樣本對應的梯度可能會有很大的差別,如前乙個樣本計算梯度方向0°,演算法沿著0°的方向執行,然後當前樣本計算得到梯度方向為150°,則演算法又會往剛才幾乎相反的方向執行,產生**),會造成**,使演算法收斂速度減慢,還有可能使演算法陷入區域性極小值,得不到最優解。
3) 小批量梯度下降法。前兩種梯度下降法都較為極端,實際運用中常從樣本空間中選取一部分樣本(乙個batch)作為輸入,計算一次後再選擇一部分樣本輸入,計算更新引數,直到滿足梯度條件。這種演算法兼顧了批量梯度下降法和隨機梯度下降法的優點,實際應用中常使用這種方法。
參考:1.梯度下降(gradient descent)小結:
2. ml重要概念:梯度(gradient)與梯度下降法(gradient descent):
5. 張凱院:《矩陣論》
機器學習之梯度下降法 梯度下降法分析
梯度下降法的基本思想是函式沿著其梯度方向增加最快,反之,沿著其梯度反方向減小最快。在前面的線性回歸和邏輯回歸中,都採用了梯度下降法來求解。梯度下降的迭代公式為 j j j j 在回歸演算法的實驗中,梯度下降的步長 為0.01,當時也指出了該步長是通過多次時間找到的,且換一組資料後,演算法可能不收斂。...
機器學習 梯度下降法
梯度下降法,一般用來求解線性回歸方程,我的理解是根據一組形如 特徵1,特徵2.結果 的資料來找到這些對應的特徵和結果之間的聯絡 例如,我們利用一組 銷量的資料判斷乙個物品的銷量和 之間的關係 我們要求的線性回歸方程可以表示為 銷量 引數 實質上其實就是找到對應的 引數 而當影響乙個結果的特徵不只有乙...
機器學習 梯度下降法
1 梯度下降法的邏輯思路 的取值影響獲得最優解的速度 取值不合適,甚至得不到最優解 是梯度下降法的乙個超引數 一般需要調參找到最適合的 太小,減慢收斂學習速度 太大,導致不收斂 2 梯度下降法的問題 3 其它1 具體實現 模擬損失函式 y x 2.5 2 1 資料集特徵值 plot x np.lin...