1. 梯度下降法是什麼意思
梯度下降是迭代法的一種,可以用於求解最小二乘問題(線性和非線性都可以)。
在求解機器學習演算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。在求解損失函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值。
反過來,如果需要求解損失函數的最大值,這時就需要用梯度上升法來迭代了。在機器學習中,基於基本的梯度下降法發展了兩種梯度下降方法,分別為隨機梯度下降法和批量梯度下降法。
缺點:
(1)靠近極小值時收斂速度減慢。
(2)直線搜索時可能會產生一些問題。
(3)可能會「之字形」地下降。
以上內容參考 網路-梯度下降
2. 梯度下降法原理和步驟
一、梯度法思想
梯度法思想的三要素:出發點、下降方向、下降步長。
機器學習中常用的權重更新表達式為
:,這里的λ就是學習率,本文從這個式子出發來把機器學習中的各種「梯度」下降法闡釋清楚。
機器學習目標函數,一般都是凸函數,什麼叫凸函數?限於篇幅,我們不做很深的展開,在這兒我們做一個形象的比喻,凸函數求解問題,可以把目標損失函數想像成一口鍋,來找到這個鍋的鍋底。非常直觀的想法就是,我們沿著初始某個點的函數的梯度方嚮往下走(即梯度下降)。在這兒,我們再作個形象的類比,如果把這個走法類比為力,那麼完整的三要素就是步長(走多少)、方向、出發點,這樣形象的比喻,讓我們對梯度問題的解決豁然開朗,出發點很重要,是初始化時重點要考慮的,而方向、步長就是關鍵。事實上不同梯度的不同就在於這兩點的不同!
梯度方向是
,步長設為常數Δ,這時就會發現,如果用在梯度較大的時候,離最優解比較遠,W的更新比較快;然而到了梯度較小的時候,也就是較靠近最優解的時候,W的更新竟然也保持著跟原來一樣的速率,這樣會導致W很容易更新過度反而遠離了最優解,進而出現在最優解附近來回震盪。所以,既然在遠離最優解的時候梯度大,在靠近最優解的時候梯度小,我們讓步長隨著這個律動,於是我我們就用λ|W|來代替Δ,最後得到了我們熟悉的式子:
所以說這時的λ是隨著坡度的陡緩而變化的,別看它是個常數。
二、全量梯度下降法(Batch gradient descent)
全量梯度下降法每次學習都使用整個訓練集,因此每次更新都會朝著正確的方向進行,最後能夠保證收斂於極值點,凸函數收斂於全局極值點,非凸函數可能會收斂於局部極值點,缺陷就是學習時間太長,消耗大量內存。
第二、隨機梯度下降法(Stochastic Gradient Descent)
SGD一輪迭代只用一條隨機選取的數據,盡管SGD的迭代次數比BGD大很多,但一次學習時間非常快。
SGD的缺點在於每次更新可能並不會按照正確的方向進行,參數更新具有高方差,從而導致損失函數劇烈波動。不過,如果目標函數有盆地區域,SGD會使優化的方向從當前的局部極小值點跳到另一個更好的局部極小值點,這樣對於非凸函數,可能最終收斂於一個較好的局部極值點,甚至全局極值點。
缺點是,出現損失函數波動,並且無法判斷是否收斂。
3. 梯度下降法是什麼
梯度下降是通過迭代搜索一個函數極小值的優化演算法。使用梯度下降,尋找一個函數的局部極小值的過程起始於一個隨機點,並向該函數在當前點梯度(或近似梯度)的反方向移動。梯度下降演算法是一種非常經典的求極小值的演算法。
比如邏輯回歸可以用梯度下降進行優化,因為這兩個演算法的損失函數都是嚴格意義上的凸函數,即存在全局唯一極小值,較小的學習率和足夠的迭代次數,一定可以達到最小值附近,滿足精度要求是完全沒有問題的。並且隨著特徵數目的增多,梯度下降的效率將遠高於去解析標准方程的逆矩陣。
常用的梯度下降法有3種不同的形式:
(1)批量梯度下降法,簡稱BGD,使用所有樣本,比較耗時。
(2)隨機梯度下降法,簡稱SGD,隨機選擇一個樣本,簡單高效。
(3)小批量梯度下降法,簡稱MBGD,使用少量的樣本,這是一個折中的辦法。
機梯度下降法優點:
1、更容易跳出局部最優解。
2、具有更快的運行速度。
4. 梯度下降法是什麼
梯度下降法是一個最優化演算法,通常也稱為最速下降法。
最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現已不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜索方向的,最速下降法越接近目標值,步長越小,前進越慢。
可以用於求解非線性方程組。
簡介
梯度下降是迭代法的一種,可以用於求解最小二乘問題(線性和非線性都可以)。在求解機器學習演算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。
在求解損失函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值。反過來,如果我們需要求解損失函數的最大值,這時就需要用梯度上升法來迭代了。
在機器學習中,基於基本的梯度下降法發展了兩種梯度下降方法,分別為隨機梯度下降法和批量梯度下降法。
5. 機器學習中的降維演算法和梯度下降法
機器學習中有很多演算法都是十分經典的,比如說降維演算法以及梯度下降法,這些方法都能夠幫助大家解決很多問題,因此學習機器學習一定要掌握這些演算法,而且這些演算法都是比較受大家歡迎的。在這篇文章中我們就給大家重點介紹一下降維演算法和梯度下降法。
降維演算法
首先,來說一說降維演算法,降維演算法是一種無監督學習演算法,其主要特徵是將數據從高維降低到低維層次。在這里,維度其實表示的是數據的特徵量的大小,當特徵量大的話,那麼就給計算機帶來了很大的壓力,所以我們可以通過降維計算,把維度高的特徵量降到維度低的特徵量,比如說從4維的數據壓縮到2維。類似這樣將數據從高維降低到低維有兩個好處,第一就是利於表示,第二就是在計算上也能帶來加速。
當然,有很多降維過程中減少的維度屬於肉眼可視的層次,同時壓縮也不會帶來信息的損失。但是如果肉眼不可視,或者沒有冗餘的特徵,這怎麼辦呢?其實這樣的方式降維演算法也能工作,不過這樣會帶來一些信息的損失。不過,降維演算法可以從數學上證明,從高維壓縮到的低維中最大程度地保留了數據的信息。所以說,降維演算法還是有很多好處的。
那麼降維演算法的主要作用是什麼呢?具體就是壓縮數據與提升機器學習其他演算法的效率。通過降維演算法,可以將具有幾千個特徵的數據壓縮至若干個特徵。另外,降維演算法的另一個好處是數據的可視化。這個優點一直別廣泛應用。
梯度下降法
下面我們給大家介紹一下梯度下降法,所謂梯度下降法就是一個最優化演算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜索方向的,最速下降法越接近目標值,步長越小,前進越慢。好比將函數比作一座山,我們站在某個山坡上,往四周看,從哪個方向向下走一小步,能夠下降的最快;當然解決問題的方法有很多,梯度下降只是其中一個,還有很多種方法。
在這篇文章中我們給大家介紹了關於機器演算法中的降維演算法以及梯度下降法,這兩種方法是機器學習中十分常用的演算法,降維演算法和梯度下降法都是十分實用的,大家在進行學習機器學習的時候一定要好好學習這兩種演算法,希望這篇文章能夠幫助大家理解這兩種演算法。
6. 梯度下降的例子
舉一個非常簡單的例子,如求函數 的最小值。
利用梯度下降的方法解題步驟如下:
1、求梯度,
2、向梯度相反的方向移動 ,如下
,其中, 為步長。如果步長足夠小,則可以保證每一次迭代都在減小,但可能導致收斂太慢,如果步長太大,則不能保證每一次迭代都減少,也不能保證收斂。
3、循環迭代步驟2,直到 的值變化到使得 在兩次迭代之間的差值足夠小,比如0.00000001,也就是說,直到兩次迭代計算出來的 基本沒有變化,則說明此時 已經達到局部最小值了。
4、此時,輸出 ,這個 就是使得函數 最小時的 的取值 。
MATLAB如下。 %%最速下降法圖示%設置步長為0.1,f_change為改變前後的y值變化,僅設置了一個退出條件。symsx;f=x^2;step=0.1;x=2;k=0;%設置步長,初始值,迭代記錄數f_change=x^2;%初始化差值f_current=x^2;%計算當前函數值ezplot(@(x,f)f-x^2)%畫出函數圖像axis([-2,2,-0.2,3])%固定坐標軸holdonwhilef_change>0.000000001%設置條件,兩次計算的值之差小於某個數,跳出循環x=x-step*2*x;%-2*x為梯度反方向,step為步長,!最速下降法!f_change=f_current-x^2;%計算兩次函數值之差f_current=x^2;%重新計算當前的函數值plot(x,f_current,'ro','markersize',7)%標記當前的位置drawnow;pause(0.2);k=k+1;endholdofffprintf('在迭代%d次後找到函數最小值為%e,對應的x值為%e
',k,x^2,x)梯度下降法處理一些復雜的非線性函數會出現問題,例如Rosenbrock函數:
其最小值在 處,函數值為 。但是此函數具有狹窄彎曲的山谷,最小點 就在這些山谷之中,並且谷底很平。優化過程是之字形的向極小值點靠近,速度非常緩慢。
7. 梯度下降——尋找那個最優解
在機器學習中,我們面對一個實際問題,收集了數據,建立了模型。接下來,就需要求解模型。即我們要取怎樣的參數,才能使模型完成盡可能准確的預測呢?
在求解機器學習演算法的模型參數,即無約束優化問題時,我們最常用的方法之一,便是 梯度下降法 。
如果坐標系內有兩個點,此時,我們需要尋找一條直線將使得這兩點損失最小。
這個問題非常容易。因為一條直線是可以覆蓋兩個點的,我們可以計算出:
這很容易,那麼如果有三個點,情況會怎麼樣呢?
雖然我們還是能一眼看出,哪條線更符合我們的要求,但要求解它,已經不那麼容易了。
如果有成千上萬個點呢?
在機器學習的場景中,我們的數據是海量的。我們如何在海量數據中找到那一組損失最小,我們最需要的模型參數。這就是 梯度下降 帶給我們的意義。
這是梯度下降法的在維基網路上的定義。我們應該如何理解呢?
可以想像一個情景。我們站在半山腰,需要最快的下山。這個山腰的高度就是模型任意參數時的損失值,山底就是損失值最小的點。而此時四周又有大霧,我們該如何下山呢?梯度下降法的思路就是,我們會以一步為限,尋找四周,我這一步能下降最多的方向,邁出這一步。然後再尋找能下降最多的方向,再邁出一步,經過不懈努力就能下山了。
對照上面的例子,因為我們無法計算出最佳參數是什麼,所以我們需要進行反復試驗摸索。每一步的距離,即為 步長 。下降最多的方向,即為損失函數對各方向上的 偏導 。山底就是我們使用梯度下降法,尋找到的最優解,即損失函數的極小值。
結合我們一開始的例子,假設我們需要用一條直接去覆蓋很多的點。我們會這樣定義一個損失函數:
式中,h函數即為我們的kx+b。
因為我們要尋找它下降最快的方向。我們會對其求偏導。
根據求出的偏導,不斷更新theta:
這個方法就叫做: 批量梯度下降法
上面的迭代方法,雖然能幫助我們找到全局極小值。但是,在實際計算中,也會有相當的困難。每一次迭代,我們都需要對m項進行求和。如果m非常大,這個計算將會變得相當困難。
為了解決這樣的困難,我們找到了一個新方法: 隨機梯度下降法
如果我們的迭代只使用一個樣本,會發生什麼情況呢?
整個過程似乎會變得不可控了,因為隨著樣本的隨機性。我們的梯度下降的方向,可能會產生一些隨機因素。但如果樣本數量足夠大,當我們經歷其中一部分樣本後,我們就已經能到達最優解了。
相比於批量梯度下降,兩者的關系可以這樣理解:隨機梯度下降方法以損失很小的一部分精確度和增加一定數量的迭代次數為代價,換取了總體的優化效率的提升。增加的迭代次數遠遠小於樣本的數量。
所以對比兩種方式:
以上就是梯度下降的基本知識。如有問題,歡迎指正。
8. 梯度下降法是什麼
梯度下降法(英語:Gradient descent)是一個一階最優化演算法,通常也稱為最陡下降法。
要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜索。如果相反地向梯度正方向迭代進行搜索,則會接近函數的局部極大值點;這個過程則被稱為梯度上升法。
梯度下降一般歸功於柯西,他在 1847 年首次提出它。Hadamard在 1907 年獨立提出了類似的方法。Haskell Curry在 1944 年首先研究了它對非線性優化問題的收斂性,隨著該方法在接下來的幾十年中得到越來越多的研究和使用,通常也稱為最速下降。
梯度下降適用於任意維數的空間,甚至是無限維的空間。在後一種情況下,搜索空間通常是一個函數空間,並且計算要最小化的函數的Fréchet 導數以確定下降方向。
梯度下降適用於任意數量的維度(至少是有限數量)可以看作是柯西-施瓦茨不等式的結果。那篇文章證明了任意維度的兩個向量的內(點)積的大小在它們共線時最大化。在梯度下降的情況下,當自變數調整的向量與偏導數的梯度向量成正比時。
修改
為了打破梯度下降的鋸齒形模式,動量或重球方法使用動量項,類似於重球在被最小化的函數值的表面上滑動,或牛頓動力學中的質量運動在保守力場中通過粘性介質。具有動量的梯度下降記住每次迭代時的解更新,並將下一次更新確定為梯度和前一次更新的線性組合。
對於無約束二次極小化,重球法的理論收斂速度界與最優共軛梯度法的理論收斂速度界漸近相同。
該技術用於隨機梯度下降,並作為用於訓練人工神經網路的反向傳播演算法的擴展。
9. 梯度下降法和隨機梯度下降法的區別
梯度下降和隨機梯度下降之間的關鍵區別:
1、標准梯度下降是在權值更新前對所有樣例匯總誤差,而隨機梯度下降的權值是通過考查某個訓練樣例來更新的。
2、在標准梯度下降中,權值更新的每一步對多個樣例求和,需要更多的計算。
3、標准梯度下降,由於使用真正的梯度,標准梯度下降對於每一次權值更新經常使用比隨機梯度下降大的步長。
4、如果標准誤差曲面有多個局部極小值,隨機梯度下降有時可能避免陷入這些局部極小值中。
相關知識:
1、梯度下降法是一個最優化演算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜索方向的,最速下降法越接近目標值,步長越小,前進越慢。
缺點:
(1)靠近極小值時收斂速度減慢。
(2)直線搜索時可能會產生一些問題。
(3)可能會「之字形」地下降。
2、隨機並行梯度下降演算法,簡稱SPGD演算法。作為一種無模型優化演算法,比較適用於控制變數較多,受控系統比較復雜,無法建立准確數學模型的最優化控制過程。