斯坦福-機器學習第一講(梯度下降演算法回顧總結)
在此將斯坦福-機器學習第一講(梯度下降演算法)做個詳細總結:
1.Linear regression(線性迴歸)
2.Gradient descent(梯度下降)
3.Ordinary Least Square(傳統的最小二乘法)
4.Normal equation(正規方程組)
supervised learning(監督學習):給定一組資料集,告訴演算法正確的答案,經過訓練確定引數值後,給定輸入能夠給出正確的輸出。
開始一個監督學習的例子,房子面積和價格的關係:
給定這樣的資料,怎樣預測其他房子的價格?
引入一些符號:
表示輸入變數,也叫做輸入特徵(本例中的居住面積)
表示輸出值或者說目標變數(本例中預測的價格)
表示m個樣本組成的訓練集
監督學習的流程如下圖所示:
線性迴歸(引入問題)
為了使問題更加有趣,提供一個更加豐富的資料集,還知道房子的臥室數量:
假設y是x的一個線性函式:
假設X0=1,得到:
其中,n是輸入變數的數目(不包括x0)。
為了表示和的距離,定義函式:
1.LMS(Least mean squares)演算法
我們需要求出使得最小化的
考慮梯度下降演算法,給定初值,反覆更新的值:
其中是學習速率;
假設只有一個訓練樣本,則有:
對於單個樣本,更新規則如下:
這個就是LMS更新規則(least mean squares,最小二乘法)
如果樣本不止一個,需要修改更新的規則,
批處理梯度下降
隨機梯度下降(stochastic gradient descent,每個樣本進行一次更新):
在這裡解釋下:隨機梯度下降與批量梯度下降的區別就是那個求和符號沒有了,也就是每次迭代不需要所有的訓練樣本都參與梯度計算,而是隻每次迭代只選擇一個樣本參與訓練,因為有m個樣本,故會迭代m次。批量梯度下降是確定的,這意味著,每次執行給定的訓練集時,在相同的迭代次數中,都會得到相同的最優值。隨機梯度下降是隨機的。因為你不再用你的整個訓練集,而在一些可能的時間選擇一個或多個例項,每一次你執行隨機梯度下降演算法,你將得到一個不同的最佳和唯一的成本與迭代過程。
隨機梯度下降比批處理梯度下降收斂更快,當資料集比較大時,隨機梯度下降優於批處理梯度下降。
2.傳統的最小二乘法
現在我們用最傳統的方式(對這個二次函式求導得到極值點)來解決這個問題
我們以最簡單的一元線性模型來解釋最小二乘法。什麼是一元線性模型呢? 監督學習中,如果預測的變數是離散的,我們稱其為分類(如決策樹,支援向量機等),如果預測的變數是連續的,我們稱其為迴歸。迴歸分析中,如果只包括一個自變數和一個因變數,且二者的關係可用一條直線近似表示,這種迴歸分析稱為一元線性迴歸分析。如果迴歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性迴歸分析。對於二維空間線性是一條直線;對於三維空間線性是一個平面,對於多維空間線性是一個超平面...
對於一元線性迴歸模型, 假設從總體中獲取了n組觀察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。對於平面中的這n個點,可以使用無數條曲線來擬合。要求樣本回歸函式儘可能好地擬合這組值。綜合起來看,這條直線處於樣本資料的中心位置最合理。 選擇最佳擬合曲線的標準可以確定為:使總的擬合誤差(即總殘差)達到最小。有以下三個標準可以選擇:
(1)用“殘差和最小”確定直線位置是一個途徑。但很快發現計算“殘差和”存在相互抵消的問題。
(2)用“殘差絕對值和最小”確定直線位置也是一個途徑。但絕對值的計算比較麻煩。
(3)最小二乘法的原則是以“殘差平方和最小”確定直線位置。用最小二乘法除了計算比較方便外,得到的估計量還具有優良特性。這種方法對異常值非常敏感。
最常用的是傳統最小二乘法( Ordinary Least Square,OLS):所選擇的迴歸模型應該使所有觀察值的殘差平方和達到最小。(Q為殘差平方和)- 即採用平方損失函式。
樣本回歸模型:
其中ei為樣本(Xi, Yi)的誤差
平方損失函式:
則通過Q最小確定這條直線,即確定,以為變數,把它們看作是Q的函式,就變成了一個求極值的問題,可以通過求導數得到。求Q對兩個待估引數的偏導數:
根據數學知識我們知道,函式的極值點為偏導為0的點。
解得:
這就是最小二乘法的解法,就是求得平方損失函式的極值。
這種直接對函式求偏導解方程組的方法只是用來讓大家理解我們傳統的最小二乘法的運用,接下來我們要講它的矩陣形式(簡潔)。
3.正規方程組
這種方法是上面那種方法的矩陣形式,本質上是完全一樣的。
矩陣導數
對一個由m*n階矩陣對映到實數的函式:,f對A的導數為:
例如,假設A=,並且函式 f:為:
得到:
矩陣的跡:
定義:對於n階方陣A,
對於實數a來說,tra = a.
關於矩陣跡的一些性質:
-
trAB = trBA
-
trABC = trCAB = trBCA
-
trA =
-
tr(A+B) = trA + trB
-
tr aA = atrA
最小二乘法回顧
給定訓練集,設計矩陣X定義為:
由於,
再有,
又因為,
因此,
通過令J的偏導數等於零,得到:
注意:這裡得到的引數值是一個向量,對應的就是若干引數的最佳取值。
4.最小二乘法與梯度下降法
最小二乘法跟梯度下降法都是通過求導來求損失函式的最小值,那它們有什麼區別呢。
相同
1.本質相同:兩種方法都是在給定已知資料(independent & dependent variables)的前提下對dependent variables算出出一個一般性的估值函式。然後對給定新資料的dependent variables進行估算。
2.目標相同:都是在已知資料的框架內,使得估算值與實際值的總平方差儘量更小(事實上未必一定要使用平方),估算值與實際值的總平方差的公式為:
其中為第i組資料的independent variable,為第i組資料的dependent variable,為係數向量。
不同
1.實現方法和結果不同:最小二乘法是直接對求導找出全域性最小,是非迭代法。而梯度下降法是一種迭代法,先給定一個,然後向下降最快的方向調整,在若干次迭代之後找到區域性最小。梯度下降法的缺點是到最小點的時候收斂速度變慢,並且對初始點的選擇極為敏感,其改進大多是在這兩方面下功夫。