在有了預測函數(shù)和測量它與數(shù)據(jù)匹配度的方法之后,我們需要評估預測函數(shù)中的參數(shù)垢啼。所以就有了梯度下降算法追迟。
想象我們用預測函數(shù)產(chǎn)生的θ0和θ1來畫預測函數(shù)(事實上,我們用參數(shù)評估函數(shù)來描繪代價函數(shù))凝垛。我們并不是在描繪x和y本身,而是預測函數(shù)的參數(shù)范圍和已選擇的特定參數(shù)集的代價值蜓谋。(其實就是用一組參數(shù)(θ0, θ1)作為x和y梦皮,代價評估值作為z。)
圖中的點使用該組θ參數(shù)得到的代價函數(shù)的值孤澎。
我們要求解的最小代價值届氢,其實就是圖中的最低點(深藍色), 當然包括局部最低點和全局最低點。(就是一小范圍內(nèi)的最低點和所有最低點中的最低點)覆旭。
這么做的方法就是對代價函數(shù)求導(取函數(shù)正切值)退子。正切值的斜率就是該點的導數(shù),這也是在圖中移動的方向型将。(把圖想象成一座山峰寂祥,尋找最低點就是在尋找下山的路)每次都朝著最陡峭的方向移動,每步的大小取決于參數(shù)α七兜,叫做學習速率丸凭。
舉例而言,圖中每個星星的距離代表著每一個由α決定大小的步子腕铸。α越小惜犀,每個星星之間的距離越小狠裹;α越大虽界,每個星星之間的距離越大。而這個步子的方向則取決于J(θ0,θ1)的偏導涛菠。每個下山路徑都會的由于起點不同而導致有不同的終點莉御。如上圖就有兩個終止于不同地方的兩個不同的起點。
梯度下降算法
repeat until convergence:
公式
where
j=0,1 represents the feature index number.
公式: ** θj:=θj?α(?/?θj)J(θ0,θ1) **
'j'的每次迭代俗冻,都需要同步更新(θ0,θ1,...θn)參數(shù)礁叔。在計算前更新某個θ參數(shù)會導致產(chǎn)生錯誤算法。
單參數(shù)梯度下降
公式: ** θ1:=θ1?α(d/dθ1)J(θ1) **
不管(d/dθ1)J(θ1) 的符號是正是負迄薄。如下圖所示琅关,當斜率為負時,θ1的值增加讥蔽;當斜率為正的時候涣易,θ1的值減少人乓。
梯度下降算法應該在合適的時候收斂,無法收斂或者收斂時間過長都意味著步幅是錯誤的(α錯誤)
α的值是固定的都毒,梯度下降是如何收斂的?
事實上碰缔,當我們接近凸函數(shù)的底部的時候账劲,d/d接近0的時候。在最小值的時候金抡,導數(shù)為0瀑焦。所以:** θ1:=θ1?α?0**
線性回歸的梯度下降
在線性回歸中,梯度下降會有一個新的形式梗肝。把實際的代價函數(shù)和預測函數(shù)替換修改榛瓮,就會得到下述等式。
m
是訓練集的大小巫击,θ0是同步改變的常量, X1,X2是訓練集的數(shù)據(jù)禀晓。
因為h(θ)=θ0+θ1Xj,所以對J(θ0,θ1)= Σ(hθ(xi)-yi)偏導, 得到上述兩條公式。
舉例說明θ1:
這樣做的意義是從一個猜測開始坝锰,重復地應用梯度下降等式粹懒,我們的預測函數(shù)(Hypothesis)會變得越來越準確。所以這就是基于最初的代價函數(shù)J的簡單梯度下降函數(shù)顷级。
這個方法在每一步都會遍歷整個訓練集凫乖,所以叫做“批”梯度下降算法。
注意弓颈,**梯度下降總體上容易受到局部最小值的影響帽芽,但是我們這里的線性回歸只有一個全局,沒有其它的局部翔冀,所以這個最小值就是最優(yōu)解导街。因此梯度下降對于全局最小值來說總是收斂的(假設學習速率α沒有太大)。
橢圓顯示的二次方程的輪廓圖橘蜜。軌跡是梯度下降的步驟菊匿。它初始化在(48,30)计福。