監督學習應用與梯度下降

 

文章轉載自http://blog.sina.com.cn/s/blog_8e6f1b330101eu3b.html

 

監督學習:告訴算法每個樣本的正確答案,學習後的算法對新的輸入也能輸入正確的答案 。監督指的是在訓練樣本答案的監督下。

1、 線性迴歸

例:Alvin汽車,先讓人開車,Alvin攝像頭觀看(訓練),而後實現自動駕駛。

本質是一個迴歸問題,汽車嘗試預測行駛方向。

 

例:上一節課的房屋大小與價格數據集

 

引入通用符號:

m = 訓練樣本數

x = 輸入變量(特徵)

y = 輸出變量(目標變量)

(x,y) – 一個樣本

 –i個訓練樣本 =

 

本例中:m:數據個數,x:房屋大小,y:價格

 

監督學習過程:

1)      將訓練樣本提供給學習算法

2)      算法生成一個輸出函數(一般用h表示,成爲假設)

3)      這個函數接收輸入,輸出結果。(本例中爲,接收房屋面積,輸出房價)將x映射到y

如下圖所示:

 

 

 

對假設進行線性表示:

 

通常來說,迴歸問題有多個輸入特徵。如上例中,我們還已知房屋的臥室數,即有個第二個特徵。即表示大小,表示臥室數,則可將假設寫成:

 

爲了將公式寫整潔,定義,則h可寫成:

n = 特徵數目, :參數

 

選擇的目的,是使h(x)y的平方差儘量小。又由於有m個訓練樣本,需要計算每個樣本的平方差,最後爲了簡化結果乘以1/2,即:(最小二乘法的思想, 使得預測數據儘量接近訓練集給出的答案,剩下的問題是求該函數的最小值時 的值。)

我們要做的就是求:min(J())

min(J())方法:梯度下降和正規方程組

 

2、 梯度下降

梯度下降是一種搜索算法,基本思想:先給出參數向量一個初始值,比如0向量;不斷改變,使得J()不斷縮小。

維基百科梯度下降法(http://zh.wikipedia.org/wiki/最速下降法)梯度下降法,基於這樣的觀察:如果實值函數 F(\mathbf{x}) 在點 \mathbf{a}可微且有定義,那麼函數 F(\mathbf{x})\mathbf{a} 點沿着梯度相反的方向 -\nabla F(\mathbf{a}) 下降最快。

因而,如果

\mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})
對於 \gamma>0 爲一個夠小數值時成立,那麼 F(\mathbf{a})\geq F(\mathbf{b})

有關梯度的知識參加《高等數學第六版下冊(同濟大學)》P101

因此沿梯度反方向函數J( )減小的最快,以快速收斂到最小值。

改變 的方法:梯度下降

如圖所示,水平座標軸表示,垂直座標表示J()

 

一開始選擇0向量作爲初始值,假設該三維圖爲一個三維地表,0向量的點位於一座“山”上。梯度下降的方法是,你環視一週,尋找下降最快的路徑,即爲梯度的方向,每次下降一小步,再環視四周,繼續下降,以此類推。結果到達一個局部最小值,如下圖:

 

 

當然,若初始點不同,則結果可能爲另一個完全不同的局部最小值,如下:

 

表明梯度下降的結果依賴於參數初始值。

 

梯度下降算法的數學表示:

 

 爲賦值運算符,即表示程序中的的賦值語句。

每一次將減去求偏導的結果,即沿最陡峭的“山坡”下降(梯度反方向,函數J( )減小的最快);

 

針對一組訓練數據,將偏導數展開分析:


(PS:把後面的(h(x)-y)視爲一個整體);

 

代入上式:

 

 

:學習速度,步長,手動給出的參數。即決定你下山時每一步邁多大。設的過小,收斂時間長,設的過大,可能會超過最小值

 

(1)     批梯度下降算法:

上述爲處理一個訓練樣本的公式,將其派生成包含m個訓練樣本的算法,循環下式直至收斂:

 

複雜度分析:

對於每個的每次迭代,即上式所示,時間爲O(m)

每次迭代(走一步)需要計算n個特徵的梯度值,複雜度爲O(mn)

 

一般來說,這種二次函數的的三維圖形爲一個碗狀,有一個唯一的全局最小值。其等高線爲一個套一個的橢圓形,運用梯度下降會快速收斂到圓心。

 

梯度下降性質:接近收斂時,每次的步子會越來越小。其原因是每次減去乘以梯度,但是梯度會越來越小,所以步子會越來越小。

 

下圖爲使用梯度下降擬合的上例房屋大小和價格的曲線

 

檢測是否收斂的方法:

1)      檢測兩次迭代的改變量,若不再變化,則判定收斂

2)      更常用的方法:檢驗,若不再變化,判定收斂

 

批梯度下降算法的優點是能找到局部最優解,但是若訓練樣本m很大的話,其每次迭代都要計算所有樣本的偏導數的和,當訓練集合數據量大時效率比較低,需要的時間比較長,於是採用下述另一種梯度下降方法。

 

(2)     隨機梯度下降算法(增量梯度下降算法):

 

每次計算不需要再遍歷所有數據,而是隻需計算樣本i即可。

批梯度下降中,走一步爲考慮m個樣本;隨機梯度下降中,走一步只考慮1個樣本

每次迭代複雜度爲O(n)。當m個樣本用完時,繼續循環到第1個樣本。

增量梯度下降算法可以減少大訓練集收斂的時間(比批量梯度下降快很多),但可能會不精確收斂於最小值而是接近最小值。

上述使用了迭代的方法求最小值,實際上對於這類特定的最小二乘迴歸問題,或者普通最小二乘問題,存在其他方法給出最小值,接下來這種方法可以給出參數向量的解析表達式,如此一來就不需要迭代求解了。

 

3、 正規方程組

給定一個函數JJ是一個關於參數數組的函數,定義J的梯度關於的導數,它自己也是一個向量。向量大小爲n+1維(從0n),如下:

所以,梯度下降算法可寫成:

J:關於參數數組的函數;

下三角:梯度

更普遍的講,對於一個函數ff的功能是將一個m*n的矩陣映射到實數空間上,即:

假設輸入爲m*n大小的矩陣A,定義f關於矩陣A的導數爲:

導數本身也是個矩陣,包含了f關於A的每個元素的偏導數。

 

如果A是一個方陣,即n*n的矩陣,則將A的跡定義爲A的對角元素之和,即:

 

trA即爲tr(A)的簡化。跡是一個實數。

 

一些關於跡運算符和導數的定理:

1)      trAB = trBA

2)      trABC = trCAB = trBCA

3)      

4)      

5)       tra = a

6)      

  

有了上述性質,可以開始推導了:

定義矩陣X,稱爲設計矩陣,包含了訓練集中所有輸入的矩陣,第i行爲第i組輸入數據,即:

則由於,所以可得:

又因爲對於向量z,有,則有:

由上述最後一個性質可得:

通過上述6個性質,推導:

倒數第三行中,運用最後一個性質

 

置爲0,則有:

稱爲正規方程組

可得:(推導過程知識:跡與矩陣求導)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章