????????我們?cè)谏弦黄P記中使用最小二乘法得到的目標(biāo)函數(shù)是一個(gè)形式簡(jiǎn)單的2次函數(shù)鞋吉,它是一個(gè)凸函數(shù),對(duì)它的各個(gè)參數(shù)求偏導(dǎo)并令偏導(dǎo)為0后得到的是一個(gè)線性方程組,如果這個(gè)線性方程組存在唯一解那么求解這個(gè)線性方程組就要求解X轉(zhuǎn)置乘X的逆矩陣,但是在實(shí)際中X轉(zhuǎn)置乘X不一定可逆,而且即便逆矩陣存在栗精,當(dāng)矩陣的維度很高時(shí)求解解析解也是極為耗時(shí)。另一方面瞻鹏,在其它一些復(fù)雜的模型中悲立,目標(biāo)函數(shù)并不是2次函數(shù),那么令偏導(dǎo)為0后得到的方程組可能是非線性方程組新博,使用計(jì)算機(jī)并不能很方便地直接求解這個(gè)非線性方程組薪夕。
????????由于上述的原因在機(jī)器學(xué)習(xí)中經(jīng)常放棄求解解析解,而使用計(jì)算機(jī)擅長(zhǎng)的迭代計(jì)算的方式去逐步地逼近目標(biāo)函數(shù)的局部最優(yōu)解赫悄,當(dāng)目標(biāo)函數(shù)是凸函數(shù)時(shí)原献,局部最優(yōu)解也是全局最優(yōu)解馏慨,在機(jī)器學(xué)習(xí)中目標(biāo)函數(shù)就是損失函數(shù)。
????????這篇筆記要介紹的梯度下降法就是這樣一種迭代算法姑隅。所謂函數(shù)F(x)在a點(diǎn)的梯度是指F(x)在a點(diǎn)的偏導(dǎo)數(shù)組成的向量写隶,例如,如果F是一個(gè)二元函數(shù)讲仰,即F = F(x, y)慕趴,且F在其定義域內(nèi)具有一階連續(xù)偏導(dǎo)數(shù),則對(duì)于其定義域內(nèi)每一點(diǎn)(x', y')其梯度?F(x', y')為:
????????梯度是一個(gè)向量鄙陡,向量是有方向的冕房,所以梯度有時(shí)也稱梯度方向,沿著梯度方向函數(shù)值增長(zhǎng)最快趁矾,沿著負(fù)梯度方向(梯度相反方向)函數(shù)值下降最快耙册。梯度下降算法的依據(jù)是:
????????如果函數(shù)F(x)在點(diǎn)a處可導(dǎo),那么F(x)在a點(diǎn)沿著負(fù)梯度的方向-?F(a)下降最快愈魏。F(x)在a點(diǎn)沿著負(fù)梯度方向前進(jìn)一小步到達(dá)一個(gè)新的點(diǎn)再沿著新的點(diǎn)的負(fù)梯度方向前進(jìn)一小步觅玻,重復(fù)這個(gè)步驟想际,直到到達(dá)F(x)的最小值點(diǎn)處培漏。
????????下面我們結(jié)合線性回歸模型來看看梯度下降算法的執(zhí)行過程。先看看最簡(jiǎn)單的單變量的情況胡本,在單變量線性回歸模型中牌柄,模型可以表述如下:
????????假設(shè)函數(shù):
????????為了和參考資料中的標(biāo)記保持一致,這里使用θ作為參數(shù)標(biāo)記侧甫,上一篇筆記中用的是w珊佣,實(shí)際上標(biāo)記符號(hào)是什么無所謂。
????????損失函數(shù):
????????損失函數(shù)是參數(shù)θ0和θ1的函數(shù)披粟,是二元的咒锻,我們的目標(biāo)是找到損失函數(shù)取最小值時(shí)θ0和θ1的值,即:
????????目標(biāo):
????????算法:我們解決這個(gè)最優(yōu)化問題所采用的算法是梯度下降算法守屉,總體步驟為:
????????1. 任意給定θ0和θ1的初始值惑艇,以及一個(gè)給定的步長(zhǎng)??;
????????2. 朝著負(fù)梯度方向不斷修改θ0和θ1的值直到達(dá)到最優(yōu)值點(diǎn)(或其附近)拇泛。θ0和θ1每次修改的增量是負(fù)梯度向量中對(duì)應(yīng)于θ0或θ1的分量與步長(zhǎng)??的乘積滨巴。
????????對(duì)于二元的目標(biāo)函數(shù),上面的步驟可以描述如下:
????????repeat until convergence的意思是“重復(fù)直到收斂”俺叭,也就是重復(fù)大括號(hào)里的值更新操作直到J(θ)達(dá)到最小值恭取。迭代公式中的??為每一次迭代的步長(zhǎng),在機(jī)器學(xué)習(xí)中稱為學(xué)習(xí)率熄守。J(θ0, θ1)對(duì)θj的偏導(dǎo)即為梯度向量中對(duì)應(yīng)于θj的分量蜈垮。
????????形象化解釋梯度下降:
????????我們可以結(jié)合下圖來形象化地理解梯度下降的過程耗跛。下圖為任意二元函數(shù)J可能的函數(shù)圖像J(θ0, θ1),我們需要找到這個(gè)函數(shù)J的一個(gè)局部的最小值窃款。首先任意找一個(gè)點(diǎn)课兄,比如下圖中的黑點(diǎn):
????????選定一個(gè)初始點(diǎn)后,朝著這個(gè)點(diǎn)的負(fù)梯度方向前進(jìn)一步到達(dá)一個(gè)新的點(diǎn)晨继,重復(fù)這個(gè)過程烟阐,持續(xù)朝負(fù)梯度方向前進(jìn),最終到達(dá)函數(shù)J的一個(gè)局部最小值紊扬,其軌跡可能如下:
????????我們可以把這個(gè)過程形象地想象成下山的過程蜒茄,初始點(diǎn)即為你在山上站的初始位置,然后你環(huán)顧四周餐屎,找到了一個(gè)下山最快的方向檀葛,然后朝這個(gè)方向邁了一步,你一直重復(fù)這個(gè)過程直到到達(dá)山腳下腹缩。
????????從上面的圖我們可以看出下山的路徑應(yīng)該是和初始位置有關(guān)的屿聋,即,選定不同的初始點(diǎn)藏鹊,梯度下降法可能會(huì)收斂到不同的局部最優(yōu)值润讥,如下所示:
????????一般而言這種情況的確是有可能的,但是對(duì)于線性回歸中的J(θ0, θ1)來說不會(huì)存在不同的局部最優(yōu)值盘寡,因?yàn)镴(θ0, θ1)是均方誤差的形式楚殿,它是一個(gè)凸函數(shù),只有一個(gè)唯一的最優(yōu)值竿痰,其形狀如下:
????????所以脆粥,對(duì)于線性回歸中的均方誤差損失函數(shù)來說,無論選取何初始點(diǎn)最終都會(huì)收斂到相同的最小值處影涉。
????????在這里還要提及兩個(gè)要點(diǎn):
????????要點(diǎn)一:同時(shí)更新
????????通過上一篇筆記变隔,我們知道,J(θ0, θ1)對(duì)θj的偏導(dǎo)數(shù)如下:
????????代入到算法中蟹倾,可得:
????????注意到h(x)是θ0和θ1的函數(shù):
????????所以匣缘,在更新θ0和θ1的值的時(shí)候是需要用到更新前的θ0和θ1的值的,需要注意的是喊式,在一次迭代中θ0和θ1的值是同時(shí)更新的孵户,θ0和θ1的新值都是基于θ0和θ1的更新前的值來算的,而并不是算完θ0后用新的θ0來計(jì)算θ1岔留。
????????要點(diǎn)二:學(xué)習(xí)率
????????如果學(xué)習(xí)率??太小夏哭,梯度下降的收斂過程可能會(huì)很慢,因?yàn)閷W(xué)習(xí)率??過小的話梯度下降的迭代次數(shù)會(huì)增多献联。
????????但是竖配,學(xué)習(xí)率??也不能太大何址,如果學(xué)習(xí)率太大,梯度下降的過程可能會(huì)越過最小值进胯,那么梯度下降過程可能無法收斂用爪。
????????這兩種情況如下圖所示:
????????還有一個(gè)問題,如果我們?cè)O(shè)定了一個(gè)學(xué)習(xí)率后胁镐,需要隨著迭代過程不斷調(diào)整學(xué)習(xí)率的大小嗎偎血?答案是,不需要盯漂。學(xué)習(xí)率不需要在每次迭代中改變颇玷,固定的學(xué)習(xí)率也可以保證收斂,因?yàn)樵浇咏顑?yōu)值時(shí)梯度越小就缆,梯度與學(xué)習(xí)率的乘積也就越小帖渠,對(duì)x的更新也就越小。也就是說竭宰,接近最優(yōu)值時(shí)空郊,梯度下降會(huì)自動(dòng)地使用較小的增量,如下圖所示:
????????但是切揭,記住狞甚,學(xué)習(xí)率不能太大,太大的學(xué)習(xí)率可能導(dǎo)致梯度下降無法收斂伴箩。
????????最后入愧,對(duì)于單變量線性回歸的梯度下降鄙漏,我們來可視化地看看其過程嗤谚。首先介紹一下等高線圖,我們已經(jīng)知道單變量線性回歸中的損失函數(shù)J(θ0, θ1)的形狀如下:
????????想象一下怔蚌,如果我們用一系列平行于θ0θ1平面的平面沿著縱軸去截函數(shù)J(θ0, θ1)的曲面巩步,那么這些平面與函數(shù)J(θ0, θ1)的交點(diǎn)為一系列的橢圓曲線,同一個(gè)橢圓上的所有點(diǎn)對(duì)應(yīng)的函數(shù)值J都相等桦踊,而且橢圓越大椅野,對(duì)應(yīng)的函數(shù)值J越大,橢圓越小J值越小籍胯,我們把這些橢圓曲線垂直投影到θ0θ1平面竟闪,得到如下的等高線圖,圖中同一個(gè)橢圓上的所有(θ0, θ1)點(diǎn)對(duì)應(yīng)的J(θ0, θ1)值相同杖狼,不同的橢圓上的點(diǎn)的J值不同炼蛤,橢圓越大J越大,橢圓越小J越小蝶涩,中心點(diǎn)處J最欣砼蟆:
????????現(xiàn)在假設(shè)我們要使用線性回歸模型來根據(jù)房屋面積來預(yù)測(cè)房?jī)r(jià)(顯然這不是一個(gè)很好的模型絮识,這里只是用于說明梯度下降的過程),我們的訓(xùn)練數(shù)據(jù)集中的樣本為(面積嗽上,售價(jià))數(shù)據(jù)對(duì)次舌。下面的這些圖中,右邊的坐標(biāo)圖為J(θ0, θ1)的等高線圖兽愤,圖中的紅色x點(diǎn)彼念,為某次迭代中θ0和θ1的取值。左邊坐標(biāo)圖的橫坐標(biāo)為面積浅萧,縱坐標(biāo)為售價(jià)国拇,圖中的散點(diǎn)為訓(xùn)練數(shù)據(jù)集中的樣本點(diǎn),圖中的藍(lán)色直線為θ0和θ1取右圖中紅色x點(diǎn)的值時(shí)對(duì)應(yīng)的h(x)=θ0 +? θ1x的函數(shù)圖像惯殊。
????????下面的每個(gè)圖對(duì)應(yīng)了梯度下降過程中的一次迭代酱吝,對(duì)于每次迭代,右圖確定了一個(gè)θ0和θ1土思,左圖顯示了對(duì)應(yīng)這個(gè)θ0和θ1時(shí)的h(x)的圖像务热。從下面這些圖我們可以看到,隨著梯度下降過程的進(jìn)行己儒,θ0和θ1不斷地朝著J(θ0, θ1)值減小的方向更新崎岂,對(duì)應(yīng)的h(x)對(duì)訓(xùn)練數(shù)據(jù)集的擬合程度也越來越好,最后梯度下降收斂在J(θ0, θ1)的最小值處闪湾,此時(shí)的θ0和θ1為最終的模型參數(shù)冲甘,得到的h(x)與訓(xùn)練數(shù)據(jù)擬合度最高,損失最型狙(訓(xùn)練誤差最薪肌)。
????????在這篇筆記中我們了解了梯度下降算法陶夜,以及它在線性回歸模型中的用途,還可視化地理解了梯度下降及其在單變量線性回歸中的執(zhí)行過程裆站。關(guān)于梯度下降還有一些內(nèi)容沒有提及条辟,將放在下一篇筆記中討論。
參考資料:
Andrew NG 《Machine Learning》課程宏胯。