第二課:監(jiān)督學(xué)習(xí)應(yīng)用與梯度下降

jd.com本節(jié)課主要講了三方面內(nèi)容

線性回歸

梯度下降

正規(guī)方程組(高能預(yù)警)

一、線性回歸

以自動(dòng)駕駛為例,之所以這個(gè)問題是監(jiān)督學(xué)習(xí),是因?yàn)闄C(jī)器可以從人類司機(jī)那里學(xué)習(xí)知識。其中,輸入的是道路情景的照片,輸出的是汽車行駛的方向。人類為汽車提供了一系列正確的行駛方向,之后會(huì)產(chǎn)生更多的“正確的”行駛方向,以確保汽車始終行駛在路上。由于汽車嘗試預(yù)測表示行駛方向的連續(xù)變量的值,所以稱之為回歸問題。

以下是回歸問題的思維導(dǎo)圖

先列出一些參數(shù)的意義

m:訓(xùn)練樣本

n:特征數(shù)目

x:輸入變量(特征)

y:輸出變量

(x,y):訓(xùn)練樣本

i :第 i 行?

讓我們以上一節(jié)提到的房屋價(jià)格預(yù)測問題為例,這里的輸入x表示房屋的尺寸、臥室數(shù)量等,輸出y表示房屋的價(jià)格。我們已經(jīng)有了一些數(shù)據(jù)樣本,即xi, yi,目標(biāo)是找到一個(gè)從x到y(tǒng)的函數(shù),使得當(dāng)輸入x的時(shí)候,該函數(shù)能夠輸出正確的y的預(yù)測值。

首先,我們需要確定怎樣表示這個(gè)函數(shù),讓我們考慮最簡單的線性模型。當(dāng)只考慮房屋大小時(shí),構(gòu)造一個(gè)一元函數(shù),可以用如下函數(shù)


x為房屋尺寸


當(dāng)引入兩個(gè)變量(房屋尺寸與臥室數(shù)量)的時(shí)候,函數(shù)變?yōu)椋?/p>


x1為房屋尺寸,x2為臥室數(shù)量


為了便于將整個(gè)公式寫的更簡潔,定義


于是,公式可寫成


這里,n表示學(xué)習(xí)問題中特征的數(shù)目


接下來,我們怎樣選取參數(shù),能讓假設(shè)h對所有的房屋做出準(zhǔn)確的預(yù)測呢?

基于這個(gè)訓(xùn)練集合,給定一些特征x,以及正確的價(jià)格y,我們選擇合適參數(shù)希望算法預(yù)測和實(shí)際價(jià)格的平方差盡可能的小。對于m個(gè)樣本, 我們定義


前面乘上1/2是為了簡化之后的運(yùn)算

于是,問題就轉(zhuǎn)變成如何讓J(\theta)最小化,下面講幾個(gè)使J最小的算法

二、搜索算法

我們先給參數(shù)向量一個(gè)初始值


0上有箭頭是指一個(gè)所有位置都是0的向量

持續(xù)改變參數(shù)向量,使J不斷減小,直到找到一個(gè)最小值。

?梯度下降算法

梯度下降算法的思想是,我們要選取一個(gè)初使點(diǎn),可能是0向量,也可能是一個(gè)隨機(jī)生成的點(diǎn)。想象看到的圖形是一個(gè)三維地表


想象這個(gè)圖描述的是你所處的環(huán)境,你的周圍有很多小山。你站在其中一點(diǎn),轉(zhuǎn)一圈,然后選擇下山最快的路,走一步,繼續(xù)轉(zhuǎn)一圈,再選擇下山最快的路,再走一步。事實(shí)上這個(gè)下山最快的方向正是梯度的方向,直到你達(dá)到了這個(gè)山的最低點(diǎn),也就是這個(gè)函數(shù)的一個(gè)局部最小值。

梯度下降的一個(gè)性質(zhì)是它一定會(huì)結(jié)束, 在這個(gè)例子中,我們最終停在了左下角的這個(gè)點(diǎn)上,我們注意到,梯度下降找到的局部最小值會(huì)依賴于參數(shù)初始值。

那么整個(gè)梯度下降算法的過程可以寫成如下的迭代公式:


a:=b指用b覆蓋a的值;可以區(qū)別一下a=b

我們只需要按照這個(gè)公式反復(fù)不停地迭代,就能夠逐漸逼近最優(yōu)的\theta_i的數(shù)值。在這個(gè)公式中,最棘手的就是J對于\theta的偏導(dǎo)數(shù),讓我們來看看在線性模型中,它應(yīng)該怎樣計(jì)算呢?


所以

a指學(xué)習(xí)速度,指下降的速度

這是數(shù)據(jù)只有一個(gè)樣本時(shí)候的共識,假設(shè)我們有m個(gè)訓(xùn)練樣本,那么就按照下面的公式計(jì)算:


在這個(gè)線性模型中,目標(biāo)函數(shù)J實(shí)際上并不向給你們展示的那個(gè)圖形那么復(fù)雜,會(huì)有多個(gè)局地最優(yōu)解。實(shí)際上,這種通常的平方函數(shù),僅僅是一個(gè)二次函數(shù),所以會(huì)得到一個(gè)漂亮的碗的形狀,它只有一個(gè)全局最小值。


當(dāng)快接近最優(yōu)值時(shí),步伐會(huì)越來越小,當(dāng)達(dá)到局部最小值時(shí),梯度也會(huì)減為0。

還是以房價(jià)圖為例,我們經(jīng)過幾次迭代后,得到了這組數(shù)據(jù)的最小二乘擬合。

所以,我們可以用迭代公式求解放假預(yù)測的問題。

迭代公式可以一直工作下去,那么到什么時(shí)候停止呢?

有兩種不同的方法來檢測收斂

- 一種是檢驗(yàn)兩次迭代,看兩次迭代中是否改變了很多,如果在兩次迭代中沒怎么改變,說明算法有可能收斂。

- 另一種更常用的方法是你試圖最小化的量不再發(fā)生很大的改變,也可以認(rèn)為收斂。

以上的方法叫做批梯度下降法:指每一次迭代都需要遍歷整個(gè)訓(xùn)練集合,因?yàn)槟阈枰谀愕膍個(gè)訓(xùn)練樣本進(jìn)行求和。

然而,當(dāng)你有了一個(gè)很大的訓(xùn)練集合的時(shí)候,應(yīng)該使用另外一個(gè)稱為隨機(jī)梯度下降的算法,也稱為增量梯度下降。這個(gè)算法的好處是,在學(xué)習(xí)和改變參數(shù)的時(shí)候,只需要查看第一個(gè)訓(xùn)練樣本來進(jìn)行更新,之后再使用第二個(gè)訓(xùn)練樣本執(zhí)行下一次的更新。這樣你調(diào)整參數(shù)的速度就會(huì)快得多,因?yàn)槟悴恍枰谡{(diào)整之前遍歷所有的數(shù)據(jù)。

對于大規(guī)模的數(shù)據(jù)集,隨機(jī)梯度下降會(huì)快很多,但此算法不會(huì)精確的收斂到全局最小值,但可以無限接近全局最小值。

三、正則方程組

雖然我們已經(jīng)用梯度下降法求解了求J的最小值問題,但是對于追求數(shù)學(xué)美的吳恩達(dá)來說這是遠(yuǎn)遠(yuǎn)不夠的。事實(shí)上,J是一個(gè)二次函數(shù),所以我們可以直接求得方程的解析解。下面就讓我們利用偏導(dǎo)數(shù)和矩陣跡(tr)運(yùn)算的性質(zhì)來給出J最小值的解析解法。

由于一般情況下,我們要考慮一組參數(shù),所以\theta是一個(gè)向量。那么,對于給定的一個(gè)關(guān)于\theta的函數(shù)J,我們記:


假如有一個(gè)函數(shù)f,從矩陣空間映射到實(shí)數(shù)空間


那么,當(dāng)它以矩陣做為輸入變量的時(shí)候,它的偏導(dǎo)數(shù)按如下定義:


另外一個(gè)定義是,如果A是一個(gè)方陣,可以將A的跡定義為A的對角元素之和,就是基于i對求和,即如果:

那么:

接下來,讓我們再列一些關(guān)于跡運(yùn)算和導(dǎo)數(shù)的一些結(jié)論,后面的推導(dǎo)過程中會(huì)用到:


所以AB的跡是一個(gè)以矩陣A為輸入,以實(shí)數(shù)為輸出的函數(shù)。


如果


那么


一個(gè)實(shí)數(shù)的跡是它本身,實(shí)數(shù)的轉(zhuǎn)秩也是它本身

接下來,我們就可以正式推導(dǎo)了,我們的模型可以用向量的方式表示為:


同樣的,標(biāo)簽信息也可以寫為列向量:

這樣,誤差就是:

對于m個(gè)訓(xùn)練樣本的假設(shè),注意到:Z^TZ=\sum_i Z^{2}_{i},我們有:

這正是向量所有元素的平方和。接下來,我們就要求解最優(yōu)的條件:


代入上式,我們有:

因?yàn)?/p>


所以代入上式得


所以可得


稱為正規(guī)方程組。于是,我們可以最終求解得到解析表達(dá)式為:


最小二乘擬合問題,使得我們不再需要使用梯度下降這樣的迭代算法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容