單變量 | 數據集或假設函數的特徵值只有一個 |
---|---|
線性迴歸 | 求解迴歸問題的方程是線性方程(自變量僅爲一次) |
如下圖所示的訓練集爲例:算法
假設:
那麼問題來了,假設了$h(x)$函數後,怎麼求θ組合($\theta_{0}$和$\theta_{1}$)呢?數組
通常而言,思想是將現有的$x$集代入$h(x)$,比較各$y$值與$h(x)$值之間的偏差(建模偏差)。在不斷調整$θ$組合後,找到使得總偏差最小的那個θ組合。而衡量偏差的方法是創建代價函數。(可能講解的不規範,見諒 ̄□ ̄||)機器學習
$$ J\left( \theta_{0}\ ,\theta_{1}\ \right) = \frac{1}{2m}\sum_{i = 1}^{m}{\left(h_{\theta}( x^{(i)}) - y^{(i)}\right)}^{2} $$函數
這個函數看起來有點像方差的計算公式,但仍是有區別的……學習
首先,它不是和平均值做比較,而是和「標準答案」做比較。再次,算出平方和後的式子乘以$\frac{1}{2m}$而非$\frac{1}{m}$。spa
疑問:爲何乘的是$\frac{1}{2m}$?猜測:多是由於後面梯度降低算法計算$min(J\left( \theta_{0},\ \theta_{1}\ \right))$時,會求偏導,從而消去分母中的2。ip
既然有了代價函數,咱們如何求他的最小值呢?數學
針對二元函數求最小值/極值,在高等數學裏,在有約束條件和無約束條件下,分別提供了兩種求解的辦法,歸納來說,前者就是拉格朗日乘數法,後者則是計算二階偏導後判斷。這固然不能知足咱們這門課的要求啦,下面將介紹一種很重要的新方法,梯度降低!
該算法的公式以下:
$repeat\ until\ convergence\ \{\\ \quad \theta_j :=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\quad(for\ j=0\ and\ j=1)\\\}$it
這裏引入了一個新的變量,學習率α。咱們能夠將這個公式類比爲一次函數$y = kx+b$。io
對於大括號內的式子,我是這樣理解的:在每次迭代中,先算出$\theta_{0},\theta_{1}$在各自方向上,應移動多大的距離才能使代價函數降低的最大,所有算完後同時更新各$\theta_{j}$的值。(若不一樣時,一次迭代中$\theta$集會變化屢次,求出來的$\theta$也就失去了意義)
整個式子會一直重複下去,直至各$\theta_{j}$收斂到某個值,這就是咱們須要的$\theta$組合(之一)!
疑問:既然梯度降低算法只能求出局部最小值,那如何求解全局最小值呢?猜測:首先,在單變量線性迴歸問題中,或許$J\left( \theta_{0}\ ,\theta_{1}\ \right)$的局部最小值就是全局最小值(沒證實過,不肯定)。但若是在其餘迴歸問題的方程中就不必定了,這時候,正如課程中所說,咱們應嘗試完全部的參數組合(或儘量多吧),求出全部局部最小值,並比較其中某個參數組合是否爲全局最小值。
問題又來了,怎麼判斷$θ_j$是否收斂,α又該怎麼取?
這個問題其實在第四章會回答。對於前者,一種$\theta_{j}$收斂的判斷依據是:代價函數$J\left(\theta_{0}\ ,\theta_{1}\right)$的變化低於某一閾值。由於即使學習率α不變,隨着J(θ)的減少,$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\ \theta_{1})$也會減少(在α值合適時),以下圖。咱們假設在第300~400次迭代的過程當中,某次迭代後,$J\left(\theta_{0}\ ,\theta_{1}\right)$變化小於該閾值,就退出循環,輸出$\theta$組合。
α的取值會對迭代次數和 $J\left( \theta_{0}\ ,\theta_{1}\right)$是否能收斂產生很大影響,Andrew Ng老師給的建議是嘗試不一樣的α值:0.01, 0.03, 0.1, 0.3, 1, 3等
最後一步(算是),咱們將代價函數代入梯度降低函數內。在此以前,要解決的是$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$的求解。這裏須要高等數學中求偏導的基礎知識,計算過程就省略不寫了。
回頭整理梯度降低的算法,個人第一個機器學習算法就誕生啦!名爲「批量梯度降低」: