斯坦福機器學習視頻筆記 Week1 線性迴歸和梯度下降 Linear Regression and Gradient Descent

最近開始學習Coursera上的斯坦福機器學習視頻,我是剛剛接觸機器學習,對此比較感興趣;準備將我的學習筆記寫下來,

作爲我每天學習的簽到吧,也希望和各位朋友交流學習。

這一系列的博客,我會不定期的更新,希望大家多多批評指正。

Supervised Learning(監督學習)

在監督學習中,我們的數據集包括了算法的輸出結果,比如具體的類別(分類問題)或數值(迴歸問題),輸入和輸出存在某種對應關係。

監督學習大致可分爲迴歸(classification)和分類(regression)。

迴歸:對於連續型數值的預測;

分類:對於離散輸出的預測,輸出爲某些具體的類別;

Unsupervised Learning(無監督學習)

在無監督學習中,我們對於輸出的結果一無所知,根據數據的內在結構將數據聚類,我們無法得到預測結果的反饋。

總結:監督學習和無監督學習的重要區別,數據集的輸出結果是否事先知道。

課程pdf:https://www.coursera.org/learn/machine-learning/supplement/d5Pt1/lecture-slides

Model Representation(模型表示)

 

 以上是監督學習問題的圖示描述,我們的目標是,給定訓練集,學習函數h:X→Y,使得h(x)是對於y有較好的預測值。

h(x)代表的是一個假設集合(Hypothesis ),我們要做的就是從這個假設集合中找出預測效果最好的那一個假設。

下面是後文將用到的符號表示,請務必明白其表示的意思,這個不難。

 

Cost Function(損失函數)

之前舉的例子,關於房價的預測問題,是一個單變量的迴歸問題,輸入數據只有x維度爲1,

我們建立的模型是,我們的目標是讓這個直線儘可能的擬合所有數據,

即從數據的中心穿過,讓我們的每個預測值h(x)與我們的已知數值y儘可能的接近。

那麼,我們應該怎麼選擇最好的模型呢?通過求解參數theta1和theta2.

 

我們可以通過使用 cost function(損失函數)來測量我們的假設的準確性。 這需要使用來自x的輸入

和實際輸出y的假設的所有結果的平均差(實際上是平均值的更好的版本),如下。

 

說明:其實損失函數 J 計算的是h(x)與真實值y之間的垂直距離的平方和均值。

關於爲什麼多一個1/2的問題,是爲了以後求導方便,不用太在意這個。

爲了問題描述的方便,首先使用上圖右邊的簡單模型,只有一個參數theta1.

下圖是對數據樣本點”X“的擬合狀態,

 

當在上圖中我們隨意旋轉h(x),將會得到不同的 J 值,可以得到下面的關於theta1 損失函數 J 的圖像:

當同時考慮兩個參數值 theta1和theta0時,損失函數的圖像是這樣的,被稱爲bowl-shape function,碗狀的

 

下圖的右邊是上面三維圖像的二維展示,那一圈一圈的橢圓被稱爲“等高線”(類似地理上的等高線),每一個橢圓上的不同點的 J 值都是相等的,

如圖中綠色橢圓上的三個點,越靠近中心的橢圓 J 值越小。

上面左圖對應的是右圖中用綠色圓圈標註的點(theta1=800,theta0=-1.5),對應的模型h(x)的圖像,右圖中每一個不同的點,

都會在左圖中對應一個不同的圖像,如下:

當然,我們理想的情況是類似上圖的情況,我們取的(theta1,theta0)出現圖中的中心theta0=450,theta1=0.12,

在這個點可以是損失函數達到最小,趨近於0.這樣我們就求得了模型參數theta0和theta1,進而得到最佳的假設h(x)。

Gradient Descent(梯度下降)

我們有了假設模型h(x),和損失函數 J,現在來討論如何求得theta1和theta0的方法,梯度下降。我們的問題描述如下:

需要不斷迭代,求得使損失函數 J 達到最小的theta1和theta0.

關於梯度下降的理解:

假設你現在站在兩座山包上的其中一座,你需要以最快的速度下到山的最低處。每到達一個新的地方,

都選擇在該點處梯度最大的方向下山即可。如圖:

梯度下降算法表示如下:其中標出了梯度(藍框內)和學習率(α > 0),梯度在這裏通俗的說就是函數 J 的偏導數。

注意:梯度下降算法對局部最小值敏感,梯度下降可能收斂在局部最小,不能保證收斂到全局最小值。

  

說明:在計算機科學中,x:=x+y表示,先計算x+y的結果再賦值給變量x,類似先計算a=x+y,然後使x的值等於a。

下圖爲梯度爲正、負的情況,theta的更新是不一樣的:

 關於參數更新的問題,theta1和theta2必須同時更新,下圖左邊爲正解,即不能使用更新過後的theta0來進一步更新theta1

(這將是後面要講到了另一種算法)。

 

關於學習率α的問題:

當a過小的時候,迭代步長太小,梯度下降得太慢;

當a過大的時候,迭代步長過大,梯度無法收斂到最小值,而發生左右震盪的現象。

當固定a時,梯度下降法依然可以收斂到最小值(局部),

因爲,當我們越靠近最小值時,我們的 梯度 越小,反應在上圖就是越來越平緩,所以上面藍色方框中的表達式會越來越小,

然後乘上a也越來越小,證明我們迭代的步長會逐步變小,即使我們使用的是固定不變的學習率a。

Gradient Descent For Linear Regression

(在線性迴歸中使用梯度下降)

 

其推導過程如下,分別對 J 求 關於theta0和theta1的偏導數:

得到下面應用於線性迴歸的梯度下降算法:

通過對以上算法的不斷迭代,我們求得了最好的假設h(x),其中紅色“x”的軌跡,就是算法迭代的過程。

注:上面提到的梯度下降算法叫做“Batch” Gradient Descent批梯度下降算法(翻譯可能有所不同),其每一次迭代都需要使用整個數據集,

所以其效率不高,後面會學習到它的改進算法,隨機梯度下降

 

 

 參考文獻:http://blog.csdn.net/abcjennifer/article/details/7691571


發佈了25 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章