1. 程式人生 > >吳恩達機器學習視訊筆記——梯度下降簡化技巧

吳恩達機器學習視訊筆記——梯度下降簡化技巧

 

 

房價預測

 

多個因素作用下,即θ有多個的情況下,如何得到假設函式。

第二行的訓練樣本,用矩陣進行表示如下:

同樣,假設函式在4個變數的情況下,其表示方法為:

有n個因素作用的情況下(即預設X0 = 1):

 

如上所示,多輸入變數的假設函式可以由兩個矩陣相乘表示,一個矩陣表示變數,另外一個矩陣表示假設函式的係數

 

 

表示式基本不變,但為了區別輸入變數,即x是一個還是多個,我們規定x的上座標表示第幾個變數,下座標為1時代表計算的輸入變數即x的個數為1,同時,相應的,微分方程也有了一定程度的更新:(如下圖所示)

圈出的部分為作者求出的偏導數的表示式

 

特徵縮放:

房價預測案例

當兩個輸入變數的值之間相差太大時:

              在不考慮θ的情況下,代價函式如上圖所示,即是一個伸長的橢圓,寬度遠小於其長度,在這種情況下進行梯度下降演算法,路徑如上圖所示,即來回振盪,這樣的情況下,所耗費的時間就比較長。因此,通過適當的對輸入變數進行縮放,就能極大的增加其效率。   

如上圖所示,將兩個變數進行一定程度的縮放後,其更容易得到我們想要的結果。

最佳輸入變數的取值範圍為[-1,1]因此,進行特徵縮放的時候,大概在接近[-1,1]的方向進行,取值範圍太小或太大都不太恰當。

如上圖所示,儘量讓取值範圍的平均值接近於0,同時可以注意到一點就是得到的結果裡面X2取值範圍的精確值並不為[0.5,0.5],不過適當的增刪無傷大雅。

 

梯度下降過程中的實用性技巧

①如何選擇學習率(α

橫座標:迭代步數

縱座標:代價值

每走一步,代價值都會降低,為了保證達到最低代價值(不要越過它),恰當的學習率是十分必要的。

 

當代價值隨著每一步增加,則說明學習率需要進行適當的減小

 

當發生如上情況, 步數和代價值的變化規律如下圖,說明你的學習率太多了,建議適當減小學習率(同時檢查程式碼是否有bug)

 


同時,學習率不能過小,太小的學習率梯度下降會非常非常非常的緩慢。

 

建議學習率選擇如下:

0.0000001,……,0.01,0.03,0.1,0.3,1,3……

 

變數簡化:

 

如圖所示,有兩個變數佔有土地的寬度和深度,我們可以選擇不使用這兩個變數,而是創造一個名為面積的變數,這樣就只有一個變數,在我們的假設函式當中。

在這個圖中,為了考慮多種迴歸模型,我們可以將x2 = x1²             x3 = x1³(注意輸入變數的取值範圍,即縮放特徵),但需要注意的滿足上述條件的後期隨著面積的增加價格會下降,顯然現實生活中並不存在這樣的好事,因此可以考慮平方項,至於到底應該選擇哪種表示式,後續會進行相關的學習。

化簡代價函式:

將輸入變數和輸出變數分別變為一個矩陣:

          

 故Xθ = Y就可以通過矩陣的運算求出θ化簡可得如下內容:

 

 

如何選擇標準方程和梯度下降方法?

梯度下降方法:

缺點:選擇學習效率的值並且大概率需要進行多次調整,同時需要多次迭代,可能會降低效率

優點:在上百萬種輸出變數存在時,仍然能夠很好地進行工作

標準方程方法:

優點:不需要選擇學習效率並且不需要進行迭代

缺點:在輸出變數較大時,計算速度會特別的慢【O(n³)】

 

如果輸入變數有上萬就可以選擇梯度下降方法進行計算

 

Matlab求矩陣的逆:

Pinv() 偽逆:當進行求逆的矩陣是不可逆的時候仍然能夠求出它的逆

inv()