干貨|簡(jiǎn)單理解梯度下降及線性回歸
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
在回歸分析中,一個(gè)自變量和一個(gè)因變量的關(guān)系可用一條直線近似表示,稱(chēng)為一元線性回歸分析。當(dāng)自變量大于一個(gè)的時(shí)候,稱(chēng)為多元線性回歸。以房?jī)r(jià)-住宅面積為例。
我們希望模型擬合出一條直線 y=ax+b,以此表示住宅面積和房?jī)r(jià)之間的關(guān)系。當(dāng)二維坐標(biāo)系上分布的點(diǎn)離直線的距離之和越?。ù蠖鄶?shù)點(diǎn)離直線很近),擬合的效果越好。此時(shí)你輸入X(住宅面積),模型就會(huì)輸出一個(gè)與真實(shí)值相近的預(yù)測(cè)值(房?jī)r(jià))。更一般直線方程表示為:
用向量的內(nèi)積表示方程會(huì)帶來(lái)很多便利(以后會(huì)知道的)。
但如果房?jī)r(jià)不僅與住宅面積有關(guān),還和臥室的數(shù)量有關(guān)。直線方程仍然可以同樣的式子(向量的內(nèi)積)表示。
顯然,這時(shí)的點(diǎn)分布在一個(gè)三維空間,我們要用一個(gè)平面去擬合房?jī)r(jià)與住宅面積以及臥室之間的關(guān)系,如果三維空間上的點(diǎn)離平面的距離之和最小(大多數(shù)點(diǎn)離平面很近),我們認(rèn)為此時(shí)的模型是最好的。
這樣我們把在二維的線性回歸推廣到三維。在n維空間中,n-1個(gè)自變量與1個(gè)因變量的關(guān)系可以表示為n-1維的超平面。
上面我們將坐標(biāo)系中上所有點(diǎn)到超平面(超過(guò)3維則無(wú)法畫(huà)出圖像)的距離之和作為模型好壞的判別標(biāo)準(zhǔn)。距離之和越小,則可認(rèn)為模型越好。則我們的損失函數(shù)定義為:
損失函數(shù)的值 等于 對(duì)每個(gè)樣本點(diǎn)的預(yù)測(cè)值與實(shí)際值差的平方和求和。之所以對(duì)平方和求和,是為了避免正負(fù)誤差相互抵消 。(使用預(yù)測(cè)值與實(shí)際值差與使用上面的距離是等價(jià)的,而且計(jì)算量更小)1/2 是為了之后求偏導(dǎo)的時(shí)候可以讓式子的系數(shù)等于1而存在。(1/2有沒(méi)有都沒(méi)關(guān)系,系數(shù)只要非0,對(duì)結(jié)果都不會(huì)有影響,因?yàn)樵诒容^兩個(gè)不同模型的優(yōu)劣的時(shí)候,實(shí)際是比較他們損失函數(shù)的值,兩個(gè)數(shù)值乘以同一個(gè)非0因子,他們的大小關(guān)系不會(huì)改變。)
得出損失函數(shù)之后,我們就得到了一個(gè)求解最佳模型的策略——求解使損失函數(shù)達(dá)到最小的參數(shù)??。這里給大家介紹一種求解最優(yōu)解的一個(gè)辦法梯度下降。
學(xué)過(guò)高等數(shù)學(xué)的pong友肯定知道,順著梯度方向,函數(shù)值增加最快,逆著梯度函數(shù)值下降越快。所以在求解一個(gè)無(wú)約束求最值的問(wèn)題,梯度下降是一個(gè)非常常用的方法。(求最大和求最小是等價(jià)的,例如上面的損失函數(shù)加一個(gè)負(fù)號(hào),學(xué)習(xí)的過(guò)程就變成一個(gè)求解損失函數(shù)取最大值時(shí)的模型參數(shù)過(guò)程)
梯度下降的過(guò)程可以概括為一個(gè)遞推表達(dá)式:
更新后的參數(shù) = 當(dāng)前參數(shù) - 學(xué)習(xí)速度*當(dāng)前梯度
上式中,學(xué)習(xí)速度又稱(chēng)步長(zhǎng),用來(lái)控制每次迭代參數(shù)的改變量。所以梯度下降的關(guān)鍵在于不斷計(jì)算當(dāng)前的梯度,按照一定的學(xué)習(xí)速度,更新模型參數(shù),直到收斂到極值。
關(guān)于能否達(dá)到全局最優(yōu)值。如果該函數(shù)是凸函數(shù),則必定能收斂大最小值;否則能否達(dá)到全局最優(yōu)不僅取決于初值,學(xué)習(xí)速度也會(huì)影響。如上圖所示,初值選取不一樣,梯度下降所指向的極小值也不一樣。如果說(shuō)學(xué)習(xí)速度過(guò)大,梯度下降有可能會(huì)進(jìn)入到另一局部最優(yōu)解中。
梯度下降算法也有很多種,最常見(jiàn)的有批量梯度下降算法、隨機(jī)梯度下降算法,他們各有有優(yōu)缺點(diǎn)。
批量梯度下降: 求梯度的時(shí)候利用了所有的樣本
隨機(jī)梯度下降:求梯度的時(shí)候隨機(jī)使用一個(gè)樣本
批量梯度可以保證每次更新參數(shù)可以使得模型被優(yōu)化,因?yàn)榕刻荻认陆邓愠龅奶荻仁钦_的(使用了所有的樣本);而隨機(jī)梯度下降由于每次更新只選擇使用一個(gè)樣本來(lái)求梯度,所求出的梯度往往沒(méi)有那么準(zhǔn)確。但是批量梯度下降每次迭代的開(kāi)銷(xiāo)很大(數(shù)據(jù)量很大時(shí),計(jì)算梯度非常耗時(shí)間)。
隨機(jī)梯度計(jì)算的梯度雖然不是很準(zhǔn)確,但是它迭代的速度很快,每次接近最小值一點(diǎn)點(diǎn),也還是能達(dá)到極值。在接近極值的時(shí)候,隨機(jī)梯度會(huì)在極值附近震蕩,不容易踩到極小值。所以在數(shù)據(jù)量很大,對(duì)精度要求并沒(méi)特別嚴(yán)苛的時(shí)候使用隨機(jī)梯度下降是一個(gè)不錯(cuò)的選擇。
也有一個(gè)小批量梯度下降算法,每次只用少量的數(shù)據(jù)計(jì)算梯度,提高了梯度的準(zhǔn)確率,也不需要很大迭代的開(kāi)銷(xiāo)。但是并不能說(shuō)明這種方法比隨機(jī)梯度和批量梯度好。
此外,在梯度下降中,要適當(dāng)控制學(xué)習(xí)速度,特別是在接近最優(yōu)值附近的時(shí)候,過(guò)大的學(xué)習(xí)速率會(huì)越過(guò)最優(yōu)值,在最優(yōu)值附近震蕩。還有在開(kāi)始學(xué)習(xí)的時(shí)候,如果學(xué)習(xí)速率很小,則需要更多次迭代才能達(dá)到局部最優(yōu)。
回到線性回歸,用批量梯度下降來(lái)求解線性回歸模型的最佳參數(shù)。(用隨機(jī)梯度也是可以,這里不過(guò)是舉例)那么我們首先要求解梯度
上式為J(??)對(duì)??求偏導(dǎo),1/2其實(shí)只是為了抵消求導(dǎo)產(chǎn)生的那個(gè)2的因子。更新一次的過(guò)程如下所示。
訓(xùn)練的過(guò)程就是不斷的求偏導(dǎo),更新模型參數(shù),直到損失函數(shù)收斂,訓(xùn)練過(guò)程就結(jié)束了。
訓(xùn)練完的線性回歸模型接受你的輸入,然后輸出一個(gè)預(yù)測(cè)值。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~











