天天看點

機器學習-梯度下降算法-特征縮放和學習速率選取

實際當我們在計算線性回歸模型的時候,會發現特征變量x,不同次元之間的取值範圍差異很大。這就造成了我們在使用梯度下降算法的時候,由于次元之間的差異使得Jθ的值收斂的很慢。

我們還是以房價預測為例子,我們使用2個特征。房子的尺寸(1~2000),房間的數量(1-5)。以這兩個參數為橫縱坐标,繪制代價函數的等高線圖能看出整個圖顯得很扁,假如紅色的軌迹即為函數收斂的過程,會發現此時函數收斂的非常慢。

機器學習-梯度下降算法-特征縮放和學習速率選取

為了解決這個問題,我們采用<code>特征縮放</code>,所謂的特征縮放就是把所有的特征都縮放到一個相近的取值範圍内。比如-1~1,或者-0.5~2,或者-2~05 等等,隻要不超過-3 ~ 3這個範圍,基本上都能夠滿足梯度下降算法

最簡單的方法采用下面的公式進行計算

機器學習-梯度下降算法-特征縮放和學習速率選取

Xn表示第n個特征,也就是特征變量X的第n維

Un表示特征的平均值,也就是所有特征向量集第n個特征的平均值

實際上,當我們在運用線性回歸時,不一定非要直接用給出的 x1, x2, x3 ... xn 作為特征,有時候可以自己創造新的特征。 比如訓練集中隻給了房子長度和寬度兩個特征,但是我們可以用長度X寬度得到面積這個新的特征。 

有時,通過定義新的特征,可以得到一個更好的模型。

梯度下降算法中,最合适即每次跟着參數θ變化的時候,J(θ)的值都應該下降 到目前為止,我們還沒有介紹如何選擇學曆速率α,梯度下降算法每次疊代,都會受到學習速率α的影響

如果α較小,則達到收斂所需要疊代的次數就會非常高;

如果α較大,則每次疊代可能不會減小代價函數的結果,甚至會超過局部最小值導緻無法收斂。如下圖所示情況

機器學習-梯度下降算法-特征縮放和學習速率選取

觀察下圖,可以發現這2種情況下代價函數 J(θ)的疊代都不是正确的

機器學習-梯度下降算法-特征縮放和學習速率選取

第一個圖,曲線在上升,明顯J(θ)的值變得越來越大,說明應該選擇較小的α

第二個圖,J(θ)的曲線,先下降,然後上升,接着又下降,然後又上升,如此往複。通常解決這個問題,還是選取較小的α

根據經驗,可以從以下幾個數值開始試驗α的值,0.001 ,0.003, 0.01, 0.03, 0.1, 0.3, 1, …

α初始值位0.001, 不符合預期乘以3倍用0.003代替,不符合預期再用0.01替代,如此循環直至找到最合适的α

然後對于這些不同的 α 值,繪制 J(θ)随疊代步數變化的曲線,然後選擇看上去使得 J(θ)快速下降的一個 α 值。

是以,在為梯度下降算法選擇合适的學習速率 α 時,可以大緻按3的倍數再按10的倍數來選取一系列α值,直到我們找到一個值它不能再小了,同時找到另一個值,它不能再大了。其中最大的那個 α 值,或者一個比最大值略小一些的α 值 就是我們期望的最終α 值。

繼續閱讀