梯度下降算法


先是幾個英文:

linear regression線性回歸    gradient descent梯度下降   normal equations正規方程組

notation符號:

m denote(指示) the number of training examples

x denote the input variables(also called features)

y denote the output variables(also called target variables)

(x,y) training example

第i行training example (x^(i),y^(i))

n denote features的數量

比如根據房子大小判斷房子價錢這個例子,有m個例子就是說有m個(x,y)數據,如果x不止一個,就是說我們還要根據房子的位置啊,房間個數等特征來判斷房子價錢,那么這個n就是這些特征的數量。x1是size,x2是beddrooms,那么n=2

 

開始算法:

現在有一個學習函數h,要使得h(x)能符合結果Y,h(x)可以用下面這樣的式子來表示:

  又稱作hypothesis

θ在這兒稱為參數,在這兒的意思是調整feature中每個分量的影響力,就是到底是房屋的面積更重要還是房屋的地段更重要。首先對θ賦值,這個值可以是隨機的,也可以讓θ是一個全零的向量。

又另(這個1/2就記一下吧,前面乘上的1/2是為了在求導的時候,這個系數就不見了。)

好的現在我們要讓J(Θ)最小對吧。

gradient descent:就是想象你在下山,你要最最陡下降最快的那條路到達山底(J(Θ)最小值),所以這里要求個偏導。

當單個特征值時,上式中j表示系數(權重)的編號,右邊的值賦值給左邊θj從而完成一次迭代。

 

 單個特征的迭代如下:

 

 

多個特征的迭代如下:

 

上式就是批梯度下降算法(batch gradient descent),當上式收斂時則退出迭代,何為收斂,即前后兩次迭代的值不再發生變化了。一般情況下,會設置一個具體的參數,當前后兩次迭代差值小於該參數時候結束迭代。注意以下幾點:

(1) a 即learning rate,決定的下降步伐,如果太小,則找到函數最小值的速度就很慢,如果太大,則可能會出現overshoot the minimum的現象;這個參數一般都是手動設置的,簡單的說就是你跨步子的大小,跨得太小就會花很長的時間來收斂。反之……
 
(2) 初始點不同,獲得的最小值也不同,因此梯度下降求得的只是局部最小值;
 
(3) 越接近最小值時,下降速度越慢;
 
(4) 計算批梯度下降算法時候,計算每一個θ值都需要遍歷計算所有樣本,當數據量的時候這是比較費時的計算。
 
批梯度下降算法的步驟可以歸納為以下幾步:
 
(1)先確定向下一步的步伐大小,我們稱為Learning rate ;
 
(2)任意給定一個初始值:θ向量,一般為0向量
 
(3)確定一個向下的方向,並向下走預先規定的步伐,並更新θ向量
 
(4)當下降的高度小於某個定義的值,則停止下降;
 
 
這個batch gradient descent可不是個好東西,因為它每一步都要遍歷所有的examples,如果樣本數很大,幾百萬,上千萬的時候,這數基本上就是沒法算了。所以就有了下面這個隨機梯度算法:
stochastic gradient descent 隨機梯度下降算法
每次迭代只是考慮讓該樣本點的J(θ)趨向最小,而不管其他的樣本點,這樣算法會很快,但是收斂的過程會比較曲折,整體效果上,大多數時候它只能接近局部最優解,而無法真正達到局部最優解。所以適合用於較大訓練集的case。

 

這里整個算法才用了j個training examples

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM