吳恩達機器學習視訊筆記——梯度下降簡化技巧
房價預測
多個因素作用下,即θ有多個的情況下,如何得到假設函式。
第二行的訓練樣本,用矩陣進行表示如下:
同樣,假設函式在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() 逆