什麼是梯度下降法?

七月線上實驗室發表於2018-07-11

下面是一個典型的機器學習的過程,首先給出一個輸入資料,我們的演算法會通過一系列的過程得到一個估計的函式,這個函式有能力對沒有見過的新資料給出一個新的估計,也被稱為構建一個模型。


640?wx_fmt=png

我們用X1,X2..Xn 去描述feature裡面的分量,比如x1=房間的面積,x2=房間的朝向等等,我們可以做出一個估計函式:


640?wx_fmt=png

θ在這兒稱為引數,在這兒的意思是調整feature中每個分量的影響力,就是到底是房屋的面積更重要還是房屋的地段更重要。


如果我們令X0 = 1,就可以用向量的方式來表示了: 


640?wx_fmt=png

我們程式也需要一個機制去評估我們θ是否比較好,所以說需要對我們做出的h函式進行評估,一般這個進行評估的函式稱為損失函式(loss function),描述h函式不好的程度,在下面,我們稱這個函式為J函式。


在這兒我們可以做出下面的一個損失函式:


640?wx_fmt=png

換言之,我們把對x(i)的估計值與真實值y(i)差的平方和作為損失函式,前面乘上的係數1/2是為了方便求導(且在求導的時候,這個係數會消掉)。


如何調整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一種完全是數學描述的方法,另外一種就是梯度下降法。


梯度下降法的演算法流程如下:

1)首先對θ賦值,這個值可以是隨機的,也可以讓θ是一個全零的向量。

2)改變θ的值,使得J(θ)按梯度下降的方向進行減少。


為了描述的更清楚,給出下面的圖:

640?wx_fmt=png

這是一個表示引數θ與誤差函式J(θ)的關係圖,紅色的部分是表示J(θ)有著比較高的取值,我們需要的是,能夠讓J(θ)的值儘量的低,也就是達到深藍色的部分(讓誤差/損失最小嘛)。θ0,θ1表示θ向量的兩個維度。


在上面提到梯度下降法的第一步是給θ給一個初值,假設隨機給的初值是在圖上的十字點。


然後我們將θ按照梯度下降的方向進行調整,就會使得J(θ)往更低的方向進行變化,如下圖所示,演算法的結束將是在θ下降到無法繼續下降為止。

640?wx_fmt=png

當然,可能梯度下降的最終點並非是全域性最小點,即也可能是一個區域性最小點,如下圖所示:

640?wx_fmt=png

上面這張圖就是描述的一個區域性最小點,這是我們重新選擇了一個初始點得到的,看來我們這個演算法將會在很大的程度上被初始點的選擇影響而陷入區域性最小點。


下面我將用一個例子描述一下梯度減少的過程,對於我們的函式J(θ)求偏導J:


640?wx_fmt=png

下面是更新的過程,也就是θi會向著梯度最小的方向進行減少。θi表示更新之前的值,-後面的部分表示按梯度方向減少的量,α表示步長,也就是每次按照梯度減少的方向變化多少。


640?wx_fmt=png

一個很重要的地方值得注意的是,梯度是有方向的,對於一個向量θ,每一維分量θi都可以求出一個梯度的方向,我們就可以找到一個整體的方向,在變化的時候,我們就朝著下降最多的方向進行變化就可以達到一個最小點,不管它是區域性的還是全域性的。


用更簡單的數學語言進行描述步驟2是這樣的:


640?wx_fmt=png


*LeftNotEasy;

*http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html。


梯度下降是迭代法的一種,可以用於求解最小二乘問題(線性和非線性都可以)。在求解機器學習演算法的模型引數,即無約束優化問題時,梯度下降(Gradient Descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。在求解損失函式的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函式和模型引數值。反過來,如果我們需要求解損失函式的最大值,這時就需要用梯度上升法來迭代了。在機器學習中,基於基本的梯度下降法發展了兩種梯度下降方法,分別為隨機梯度下降法和批量梯度下降法。


為了幫助大家系統地學習機器學習課程的相關知識,我們特意推出了機器學習集訓營系列課程。迄今為止,「機器學習集訓營」已經舉辦了四期,每一期都湧現出了不少優秀offer,特別是上一期很多同學從Java、Android、iOS等傳統IT行業成功轉行轉型轉崗AI拿到年薪三四十萬,部分甚至超過四十萬拿到五十萬。


本第五期,在第四期的基礎上,除了繼續維持“入學測評、直播答疑、佈置作業、階段考試、畢業考核、一對一批改、線上線下結合、CPU&GPU雙雲平臺、組織比賽、面試輔導、就業推薦”十一位一體的教學模式,本期特地推出機器學習工程師聯合認證。且線下在北京、上海、深圳、廣州、杭州、瀋陽、濟南、鄭州、成都的基礎上,新增武漢、西安兩個線下點,十一城同步開營


此外,本期依然沿用前四期線上線下相結合的授課方式,加強專案實訓的同時引入線下BAT專家面對面、手把手的教學方式;突出BAT級工業專案實戰輔導 + 一對一面試求職輔導,並提供一年GPU雲實驗平臺免費使用,精講面試考點。讓每一位學員不用再為遇到問題沒人解答,缺乏實戰經驗以及簡歷上沒有專案經驗,面試屢屢遭拒而發愁。


本期限150個名額,歷時3個月,10多個BAT級工業專案,保障每一位學員所學更多、效率更高、收穫更大。


機器學習集訓營 第五期 課程詳情可點選文末“閱讀原文”進行檢視,或者加微信客服:julyedukefu_02進行諮詢。

640?wx_fmt=jpeg

相關文章