1. 程式人生 > 實用技巧 >梯度下降(Gradient Descent)

梯度下降(Gradient Descent)

梯度下降小結

梯度下降直觀解釋

首先來看看梯度下降的一個直觀的解釋。比如我們在一座大山上的某處位置,由於我們不知道怎麼下山,於是決定走一步算一步,也就是在每走到一個位置的時候,求解當前位置的梯度,沿著梯度的負方向,也就是當前最陡峭的位置向下走一步,然後繼續求解當前位置梯度,向這一步所在位置沿著最陡峭最易下山的位置走一步。這樣一步步的走下去,一直走到覺得我們已經到了山腳。當然這樣走下去,有可能我們不能走到山腳,而是到了某一個區域性的山峰低處。
 從上面的解釋可以看出,梯度下降不一定能夠找到全域性的最優解,有可能是一個區域性最優解。當然,如果損失函式是凸函式,梯度下降法得到的解就一定是全域性最優解。

 在這裡插入圖片描述

梯度下降的相關概念

在詳細瞭解梯度下降的演算法之前,我們先看看相關的一些概念。

1. 步長(Learning rate):步長決定了在梯度下降迭代的過程中,每一步沿梯度負方向前進的長度。用上面下山的例子,步長就是在當前這一步所在位置沿著最陡峭最易下山的位置走的那一步的長度。

2.特徵(feature):指的是樣本中輸入部分,比如2個單特徵的樣本(x(0),y(0)),(x(1),y(1)),則第一個樣本特徵為x(0),第一個樣本輸出為y(0)。

3. 假設函式(hypothesis function):在監督學習中,為了擬合輸入樣本,而使用的假設函式,記為hθ(x)。比如對於單個特徵的m個樣本(x(i),y(i))(i=1,2,…m),可以採用擬合函式如下: hθ(x)=θ0+θ1x。

4. 損失函式(loss function):為了評估模型擬合的好壞,通常用損失函式來度量擬合的程度。損失函式極小化,意味著擬合程度最好,對應的模型引數即為最優引數。線上性迴歸中,損失函式通常為樣本輸出和假設函式的差取平方。比如對於m個樣本(xi,yi)(i=1,2,…m),採用線性迴歸,損失函式為:在這裡插入圖片描述

其中xi表示第i個樣本特徵,yi表示第i個樣本對應的輸出,hθ(xi)為假設函式(損失函式)。

梯度下降的詳細演算法

代數方式描述
在這裡插入圖片描述
在這裡插入圖片描述

梯度下降的演算法調優

在使用梯度下降時,需要進行調優。哪些地方需要調優呢?

1. 演算法的步長選擇。在前面的演算法描述中,我提到取步長為1,但是實際上取值取決於資料樣本,可以多取一些值,從大到小,分別執行演算法,看看迭代效果,如果損失函式在變小,說明取值有效,否則要增大步長。前面說了。步長太大,會導致迭代過快,甚至有可能錯過最優解。步長太小,迭代速度太慢,很長時間演算法都不能結束。所以演算法的步長需要多次執行後才能得到一個較為優的值。

2. 演算法引數的初始值選擇。 初始值不同,獲得的最小值也有可能不同,因此梯度下降求得的只是區域性最小值;當然如果損失函式是凸函式則一定是最優解。由於有區域性最優解的風險,需要多次用不同初始值執行演算法,關鍵損失函式的最小值,選擇損失函式最小化的初值。

3.歸一化。由於樣本不同特徵的取值範圍不一樣,可能導致迭代很慢,為了減少特徵取值的影響,可以對特徵資料歸一化,也就是對於每個特徵x,求出它的期望x¯和標準差std(x),然後轉化為:
    在這裡插入圖片描述

這樣特徵的新期望為0,新方差為1,迭代速度可以大大加快。