吴恩达《机器学习》学习笔记二——单变量线性回归
吳恩達《機器學習》學習筆記二——單變量線性回歸
- 一、 模型描述
- 二、 代價函數
- 1.代價函數和目標函數的引出
- 2.代價函數的理解(單變量)
- 3.代價函數的理解(兩個參數)
- 三、 梯度下降——求解最優參數
- 1.梯度下降的步驟
- 2.梯度下降的數學表達
- 四、 用梯度下降法求解的線性回歸
課程鏈接: https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118
第二次筆記主要針對機器學習第一個模型——線性回歸,首先給出模型的描述,理清楚各個變量都是什么含義;然后介紹代價函數以及目標函數,并詳細生動地解釋了參數優化的過程,也就是梯度下降方法。
一、 模型描述
首先回顧一下筆記一的房價預測模型,這是監督學習里回歸問題最經典的例子,如下圖所示。后面就會依據這個問題來進行線性回歸模型的學習。
監督學習有一個帶標注的數據集,為后面分析問題的方便,先定義一下幾個變量,如下圖所示。
圖中那個兩列的表格即為房價預測數據集。數據集樣本的數量用m表示,假如此處有47條數據樣本,則m=47;第一列是數據的面積屬性(輸入變量),用x來表示;第二列是價格(輸出變量),用y來表示。那么一個數據樣本就可以用(x,y)來表示,第i個樣本就可以用(x(i), y(i))來表示,需要注意的是,這里的上標不是指冪次,而是指代第i個樣本,如x(1) = 2104,x(2) = 1416。。。。。。
下面看一下房價預測這個問題的解決思路,如下圖所示。
簡單來說,就是將數據集送入學習算法進行訓練,用訓練好的模型對輸入x(房屋面積)進行預測,得到預測的輸出y(房價)。而這個被訓練和用于預測的關鍵模型就被稱為假設函數。在訓練階段需要利用數據集對假設函數的參數進行不斷更新,在預測階段假設函數就是做x到y的一個映射。
在房價預測這個問題中,我們選擇的模型形式是單變量一次線性函數形式:
也可以簡寫為h(x)。需要說明一下,房價預測的模型可以有很多種,除了這種一次線性模型以外,如二次、指數、對數等復雜模型都有可能適用這個問題。但是這里為了方便講解求解目標函數的過程,選擇了最簡單的單變量一次線性函數來作為假設函數,便于解釋原理。
二、 代價函數
1.代價函數和目標函數的引出
用數據集對假設函數進行訓練的過程,其實就是求模型參數θ_0和θ_1的值的過程,不同的值表示不同的假設函數,取何值可以最擬合數據集是模型優化的目標。
我們可以這樣理解,當假設函數與數據集最擬合的時候,就是所有數據樣本到假設函數的距離平均值最小的時候。那么反之,所有數據樣本到假設函數的距離平均值最小的時候,就是最擬合的時候,所以我們要求假設函數的參數,可以這樣定義:
其中,求和符號后的部分是各樣本點與假設函數的平方距離,求和之后取平均,然后求使得該表達式最小的θ_0,θ_1的值,即為最合適的假設函數。需要注意的是求平均時不是1/m,而是1/2m,主要是為了后續梯度下降法求最小值時求導方便,這點后面會提到。
在這里,令
并稱其為代價函數(也稱為平方誤差函數),則目標函數可以簡寫為
總結一下:
2.代價函數的理解(單變量)
首先為了簡化理解,我們假設θ_0為0,即只包含θ_1一個變量,如下圖所示。
下面我們來看一下假設函數h(x)與代價函數J(θ)之間的關系,三個數據樣本為(1,1)、(2,2)、(3,3)。
(1)θ_1=1,h(x)正好經過三個數據樣本,代價函數計算下來為0。
(2)θ_1=0.5
(3)θ_1=0
以此類推,通過改變θ_1的值,可以繪制出代價函數J(θ)的曲線,如下圖。
可以觀察到,當θ_1=1時,代價函數最小,此時假設函數也是最擬合數據集的,所以利用最小化平方誤差函數(代價函數)來求假設函數的參數是正確的。但這是針對只有一個參數的情況,下面將對含有θ_0,θ_1兩個參數的情況進行理解。
3.代價函數的理解(兩個參數)
當考慮兩個參數時,代價函數已經不能用二維坐標來繪制了,因為多了一個變量,所以可以用三維坐標繪制,如下圖所示,有了單個參數的經驗,這個也不難理解,當改變θ_0,θ_1兩個參數的值時,代價函數J(θ_0,θ_1)也會隨之改變。
在課中,因為三維坐標不便演示變化的過程,故引入了等高線圖的概念,即將相同高度的J(θ_0,θ_1)畫成一個橢圓,在同一橢圓上的J(θ_0,θ_1)值都相同,不同橢圓上的J(θ_0,θ_1)值都不同,僅為方便演示。而所有橢圓的中心就是J(θ_0,θ_1)值最小的地方。
我們來看一些舉例:圖中紅色的×代表對應的θ_0,θ_1取值及其相應的J(θ_0,θ_1),橢圓的中心為J(θ_0,θ_1)值最小的地方,兩者的距離就是差的多少。
綜上,選擇合適的參數,可以最好的擬合數據是問題的求解目標,而目前還停留在一組一組數據的嘗試,這顯然是不科學的,下面將介紹一種自動求解最優參數解的方法——梯度下降。
三、 梯度下降——求解最優參數
梯度下降是求解最優參數很常用的一種方法,不僅可以使用在線性回歸中,后續很多模型的求解都可以使用。
1.梯度下降的步驟
其大致的思路如下所示,代價函數J(θ_0,θ_1),目標是求其最小時的θ_0,θ_1參數值,首先給定θ_0,θ_1一組初始值(可以是任意的,比如都設為0),然后按照一定的規則去小小地改變θ_0,θ_1的值使得代價函數J(θ_0,θ_1)的值變小,直到其最小(很可能是局部最小,而不是全局最小),此時的θ_0,θ_1值就是待求的。顯然,其中的關鍵,就是按照什么規則去改變參數值。
下面用可視化圖來演示一下梯度下降的上述過程:
(1) 首先選擇一個初始點
(2) 然后每次朝下降最快的方向下降一小步,每次都獨立地尋找下降方向。
需要注意的是,因為初始位置選擇的不確定性,下降的路徑可能完全不一樣,如下圖所示,是從另一個初始位置開始下降,最終下降到了不同的最優點。這兩個最優點可能是全局最優點,可能是局部最優點,無法保證一定是全局最優。
2.梯度下降的數學表達
上面提到,梯度下降方法最關鍵的是按照什么規則改變參數值,也就是可視化圖中朝著哪個方向下降一小步,它的數學表達式如下所示。
(1):=是賦值的意思,將計算后的值賦給θ_j。當不止一個參數需要更新的時候,注意要使用同步更新的方法,就是將每個參數的新值用舊值計算好后,一次性全部賦值,而錯誤的做法是,計算更新了一個參數,然后用更新的值去計算更新別的參數,這樣就沒有做到同步更新。
(2)表達式中的α稱為學習率,它決定了參數更新的大小,它越大,每次更新的變化就越大,反之則越小。如果學習率太小,可能導致梯度下降收斂速度很慢;如果學習率太大,可能導致無法收斂甚至是發散,如下圖所示。
(3)偏導數項我們用單變量函數J(θ)來說明一下原理。
若J(θ)是一個如下圖所示的函數,在紅色點位置,J(θ)的導數為正數,θ將減去一個正數,即減小,從圖中可見,θ減小正是朝著使得J(θ)減小的方向變化。
再考慮如下紅色點位置,J(θ)的導數為負數,θ將減去一個負數,即增大,從圖中可見,θ增大正是朝著使得J(θ)減小的方向變化。
推廣到多參數的情況,雖然不方便可視化,但原理是一樣的,減去這個偏導數項,就是朝著使得J(θ)減小的方向變化。
如果已經下降到局部最優點,那么導數將等于0,參數將不再更新。
四、 用梯度下降法求解的線性回歸
主要就是將梯度下降法中的代價函數具體為線性回歸的表達式。
對
求偏導。
所以梯度下降表達式可表示為如下
下面用可視化圖來演示參數變化的過程,先給出初始位置。
補充:梯度下降有時也稱為Batch梯度下降,就是參數每次更新都用到了整個數據集的數據樣本。相應的還有隨機梯度下降,每次更新只用隨機一個數據樣本,mini-batch梯度下降,每次使用一部分數據樣本進行更新。
總結
以上是生活随笔為你收集整理的吴恩达《机器学习》学习笔记二——单变量线性回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一、绪论
- 下一篇: 吴恩达《机器学习》学习笔记五——逻辑回归