5.3 梯度下降中的實用技巧二(學習速率)
這一節,我們將討論學習速率α,參考下圖。第乙個公示是梯度下降演算法的更新規則,我們將學習兩點,一是怎樣保證梯度下降執行正確,而是怎麼選擇學習速率α。
梯度下降演算法的任務是為你尋找引數θ,並且希望它能夠最小化你的代價函式,在梯度下降演算法執行時,我通常會畫出代價函式j(θ)的值,如下圖所示,x軸表示的是迭代次數,你可能會得到如下圖所示的一條曲線,曾經x軸表示的是引數θ,但是這裡不是。在迭代100次之後,我將得到 乙個θ值, 根據100步迭代之後得到的這個θ值 ,我將算出代價函式j(θ)的值,而這個點的垂直高度就代表,梯度下降演算法 100步迭代之後得到的θ 算出的j(θ)值,而這個點,則是梯度下降演算法迭代200次之後,得到的θ 算出的
j(θ) 值 所以這條曲線 顯示的是梯度下降演算法迭代過程中代價函式j(θ)的值。如果梯度下降演算法正常工作那麼每一步迭代之後 j(θ)都應該下降,這條曲線的乙個用處在於 它可以告訴你如果你看一下, 我畫的這條曲線 當你達到 300步迭代之後 也就是300步到400步迭代之間
看起來 j(θ) 並沒有下降多少,所以當你到達400步迭代時,這條曲線看起來已經很平坦了,也就是說在這裡400步迭代的時候,梯度下降演算法基本上已經收斂了,因為代價函式並沒有繼續下降。 所以說,看這條曲線可以幫助你判斷梯度下降演算法是否已經收斂。
順便說一下 ,對於某乙個特定的問題,梯度下降演算法所需要的迭代次數相差很大,可能對於某乙個問題只需要30步,但是對於另乙個問題則需要30000步,我們沒有辦法提前進行判斷,我們通常需要畫出代價函式歲迭代次數增加的變化曲線,通過觀察這類曲線來觀察梯度下降是否收斂;當然還有一種自動化的方法幫助我們判斷梯度下降是否收斂,自動收斂測試乙個非常典型的例子是如果代價函式 j(θ) 的下降小於乙個很小的值ε ,那麼就認為已經收斂,比如可以選擇 1e-3, 但我發現,通常要選擇乙個合適的閾值ε,是相當困難的。
因此,為了檢查梯度下降演算法是否收斂 。ng通常是選擇看上面的圖(j(θ)隨迭代次數變化的圖),而不是通過自動收斂測試來進行判斷。看這個圖,也可以提前告訴你,梯度下降演算法假如沒有正常工作的話。例如你發現,隨著迭代次數的增加j(θ)的值在變大,影象會逐漸上公升,如下圖第乙個所示。當你遇到這種情況時,通常是因為你的學習速率
α選擇的太大,你需要將它調小。
j(θ)變大的原因可能是,你需要去最小化如下圖(右邊第二個)所示的代價函式,你從右邊的一點出發,但是由於你的學習速率α太大,一下子跑到了最低點的右邊,然後下一次迭代又一下子跑到了最低點的左邊,如此往復,j(θ)就會越來越大。學習速率過大是乙個常見的問題。
當然你也會遇到這樣一種情況,隨著迭代次數的增加,
j(θ)一會上公升,一會下降,通常也是因為學習速率α太大,你需要使用較小的學習速率。上圖左下圖。
合適的學習速率α應該是每一次迭代過後,代價函式j(θ)都應該減小,但是學習速率α如果太小的話又會使梯度下降收斂的特別慢。
總結如下圖所示,
學習速率的選擇,可以嘗試0.001、0.01、0.1、1。選擇乙個最大的學習速率,然後選擇乙個比它小一點點的學習率,通常能夠找到最合適的學習速率來解決我們的問題。
機器學習(三) 梯度下降法
本部落格大部分參考了這篇博文 在微積分裡面,對多元函式的引數求 偏導數,把求得的各個引數的偏導數以向量的形式寫出來,就是梯度。比如函式f x,y 分別對x,y求偏導數,求得的梯度向量就是 f x f y 簡稱gr adf x,y 或者 f x,y 如果是3個引數的向量梯度,就是 f x f y,f ...
機器學習(九)梯度下降演算法
梯度 是乙個向量,其方向上的方向導數最大,其大小正好是此最大方向導數。關於梯度的更多介紹請看 如何直觀形象的理解方向導數與梯度以及它們之間的關係?乙個標量函式 的梯度記為 在三維直角座標系中表示為 梯度下降法 英語 gradient descent 是乙個一階最優化演算法,通常也稱為最速下降法。要使...
深度學習(七)梯度下降法
應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。總結如下 下面我們以線性回歸演算法來對三種梯度下降法進行比較。一般線性回歸函式的假設函式為 對應的能量函式 損失函式 形式為 下圖為乙個二維引數 0和 ...