? ? ? ? 上一章中有提到利用解析解求解多元線性回歸,雖然看起來很方便,但是在解析解求解的過程中會涉及到矩陣求逆的步驟.隨著維度的增多,矩陣求逆的代價會越來越大(時間/空間),而且有些矩陣沒有逆矩陣,這個時候就需要用近似矩陣,影響精度.所以本章我們一起來學(xué)習(xí)求解多元線性回歸最常用的,也是后邊可能會講的深度學(xué)習(xí)最常用的求解辦法:梯度下降與隨機梯度下降.
? ? ? ? 其實隨機梯度下降才是咱們最常用的求解辦法,但是不知道梯度下降,理解隨機梯度下降就有些直接蓋二樓的感覺了(我的意思是空中樓閣).那什么是梯度下降呢?
? ? ? ? 從字面意思上,我們就可以get到他最重要的點--梯度.所以首先我們來看梯度的概念.(事先聲明,好多概念純粹為了方便理解)
什么是梯度:
? ? ? ? 1-先看官方解釋:
? ? ? ? ? ? ? ? ? ?梯度的本意是一個向量(矢量),表示某一函數(shù)在該點處的方向?qū)?shù)沿著該方向取得最大值贮预,即函數(shù)在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)搁嗓。
? ? ? ? 2-通俗理解:
? ? ? ? ? ? ? ? ? ?我們對一個多元函數(shù)求偏導(dǎo),會得到多個偏導(dǎo)函數(shù).這些導(dǎo)函數(shù)組成的向量,就是梯度.
? ? ? ? ? ? ? ? ? ?這里需要開拓一下你聰明的頭腦.一元函數(shù)的梯度是什么?思考一下.它的梯度可以理解為就是它的導(dǎo)數(shù).
? ? ? ? ? ? ? ? ? ?我們求解一元函數(shù)的時候有一種辦法是對函數(shù)求導(dǎo)得到導(dǎo)函數(shù),令導(dǎo)函數(shù)為零得到這個函數(shù)的解析解.那我們可不可以理解為求解一元函數(shù)時利用讓一元函數(shù)的梯度變?yōu)?的時候,梯度所在的位置就是函數(shù)的最優(yōu)解呢? ?(稍稍有點偷天換日,但是在一元函數(shù)中梯度和導(dǎo)數(shù)并無區(qū)別,這塊一定要理解)
? ? ? ? ? ? ? ? ? ?梯度中元素(導(dǎo)函數(shù))的個數(shù)的個數(shù)同未知數(shù)的個數(shù)是對應(yīng),每一個未知數(shù)都可以像求解一元一次函數(shù)一樣,通過它所對應(yīng)的梯度求得最優(yōu)解.其實求解多元函數(shù)和一元函數(shù)的道理是一樣的,只不過函數(shù)是一元的時候,梯度中只有一個導(dǎo)函數(shù),函數(shù)時多元的時候,梯度中有多個導(dǎo)函數(shù).
? ? ? ? ? ? ? ? ? 當(dāng)我們把梯度中的所有偏導(dǎo)函數(shù)都變?yōu)?的時候,就可以找到每個未知數(shù)的對應(yīng)解?(事實證明是這樣的)
? ? ? ? ? 附上一張?zhí)荻鹊膱D
? ? ? ? ? 假設(shè)這個曲面是一個多元函數(shù),我們可以把這個曲面看成是由無數(shù)條曲線組成,每條曲線代表了多元函數(shù)的一個維度,當(dāng)所有維度都下降到梯度為0的點,是不是這個點就是多元函數(shù)的解的那個點呢?
什么是梯度下降:
? ? ? ? 1-還是按照慣例,先看官方解釋.
? ? ? ? ?梯度下降是迭代法的一種,可以用于求解最小二乘問題(線性和非線性都可以)。在求解機器學(xué)習(xí)算法的模型參數(shù)箱靴,即無約束優(yōu)化問題時腺逛,梯度下降(Gradient Descent)是最常采用的方法之一,另一種常用的方法是解析解刨晴。
? ? ? ? ?上一段來源于網(wǎng)絡(luò),對于咱們要理解的內(nèi)容來看,上邊一段等于沒說.
? ? ? ? 2-通俗講
? ? ? ? ?梯度下降就是讓梯度中所有偏導(dǎo)函數(shù)都下降到最低點的過程.(劃重點:下降)
? ? ? ? ?都下降到最低點了,那每個未知數(shù)(或者叫維度)的最優(yōu)解就得到了,所以他是解決函數(shù)最優(yōu)化問題的算法
? ? ? ? ?這里需要注意一點,梯度是對所有未知數(shù)求偏導(dǎo),所得偏導(dǎo)函數(shù)組成的向量.在多元線性回歸中,誰才是未知數(shù)呢?我們使用梯度下降法的目的是求解多元線性回歸中的最小二乘函數(shù)的,在最小二乘函數(shù)中,已擁有的條件是一些樣本點和樣本點的結(jié)果,就是矩陣X和每一條X樣本的lable值y.X是矩陣,y是向量.
? ? ? ? ?所以我們要知道,梯度下降中求偏導(dǎo)數(shù)的未知數(shù)不是x和y,而是x的參數(shù)W或者叫(就是個名字,只不過常用這兩個字母表示).
? ? ? ? ?數(shù)據(jù)集中數(shù)據(jù)是固定的,結(jié)果是固定的,我們要找到的是數(shù)據(jù)中樣本與結(jié)果的對應(yīng)規(guī)律.所以求得才是我們的目的.我們梯度下降,下降的也是而不是X.
怎樣理解下降:
? ? ? ? ? 梯度下降中的下降,意思是讓函數(shù)的未知數(shù)隨著梯度的方向運動.什么是梯度的方向呢?把這一點帶入到梯度函數(shù)中,結(jié)果為正,那我們就把這一點的值變小一些,同時就是讓梯度變小些;當(dāng)這一點帶入梯度函數(shù)中的結(jié)果為負的時候,就給這一點的值增大一些.
? ? ? ? (圖一)
? ? ? ? ?如上圖,點A的導(dǎo)函數(shù)(此時把導(dǎo)函數(shù)看作梯度)為負,就讓點A沿著函數(shù)軌跡往右移動一點,點B的導(dǎo)數(shù)為正,就讓點B往左移動一點,這個移動的過程中,點A和店B的高度都在慢慢下降,所以這個過程叫做梯度下降.
? ? ? ? ?在這個下降的過程中.因為我們并不知道哪一個點才是最低點,也沒有辦法來預(yù)測下降多少次才能到最低點.這里梯度下降給出的辦法是:先隨便蒙一個點出來,然后根據(jù)這個點每次下降以丟丟.什么時候下降得到的值(點帶入偏導(dǎo)函數(shù)得到的)和上一次的值基本基本一樣也就是相差特別特別小的時候,我們認為就到了最低點.
? ? ? ? ?當(dāng)然這里有兩個問題:
? ? ? ? ? ? ? ? ?1-這個值并不是完全準(zhǔn)確:
? ? ? ? ? ? ? ? ? ? ? ? ? ? 我們并不需要一個完完全全準(zhǔn)確的值來當(dāng)做函數(shù)的解,因為多元線性回歸構(gòu)的理念中就講了,我們是用一條回歸線來預(yù)測未來結(jié)果,本身我們預(yù)測出的這個結(jié)果就存在一個誤差,所以梯度下降的結(jié)果是否完全準(zhǔn)確并不特別重要.
? ? ? ? ? ? ? ? ?2-如果函數(shù)圖像是一個波浪形,我們只能找到其中一個浪谷的最低點,這個點可能不是所有浪谷最低點中的最小值.
? ? ? ? ? ? ? ? ? ? ? ? ? ?我們初始點的位置是隨機蒙出來的造成了這種情況,多次隨機可以有效解決解決這個問題.
? ? ? ? ? ? ? ? ? ? ? ? ? ?如果我們多次有規(guī)律的隨機都沒有采集到的最低點,可能是因為這個最低點造成的原因是出現(xiàn)了某個離群值.(這句話不用理解,你就記得其實是不是最小值也并不是特別重要就行了.)
? ? ? ? 函數(shù)在點或的移動過程如何用公式來表達呢?公式如下:
? ? ? ??? ? ?(公式一)
? ? ? ? 公式中,為當(dāng)前時刻的值,為下一時刻的值.g為梯度.是一個正數(shù),我們先不看他.
? ? ? ? 此時我們隨機一個點,將這個點叫做k+1點,如果它的梯度為正,那么按照公式一,我們會將這個給它的梯度減去一個正數(shù),得到一個k+1點梯度更小的梯度的點k;如果k+1的梯度像圖一的點B一樣梯度為負數(shù),此時我們減去一個負數(shù),就等于給他加了一個正數(shù),得到的k點的梯度要比原來k+1點的梯度大.
? ? ? ? ?所以,按照公式一,無論k+1點的梯度是正還是負,我們都可以讓他沿著函數(shù)圖像向比原來更低的方向運動.
是什么:是學(xué)習(xí)率
? ? ? ? ?我們把公式一中的叫做學(xué)習(xí)率.
? ? ? ? ?讓點沿著梯度方向下降慢慢求得最優(yōu)解的過程我們叫做學(xué)習(xí),學(xué)習(xí)率就是用來限制他每次學(xué)習(xí)別太過"用功"的,因為機器學(xué)習(xí)也存在書呆子[奸笑].請看下圖:
? ? ? ? ?(圖二)
? ? ? ?圖二中,左圖是我們所期望的,一個點按照梯度方向下降,慢慢逼近最低點,右圖中展示的就是那個書呆子.模型每次下降都是減去梯度的值,當(dāng)這個梯度值過大的時候,點下降的step就過大了,一次性邁過了最低點,導(dǎo)致函數(shù)無法找到最優(yōu)解.
? ? ? ?就是來限制這種情況的.我們讓梯度乘以一個很小的數(shù),雖然增加了它到達最低點的step數(shù),但是可以讓圖二這種情況發(fā)生概率降低.
? ? ? ? 到現(xiàn)在,我們知道了梯度下降法到底是什么,也知道了每一步是如何下降的,按照這個方法一次一次迭代下降就可以得到函數(shù)的最優(yōu)解.但是還有很重要的一點:如何求梯度.
? ? ? ? 重復(fù)一下:梯度就是對一個多元函數(shù)的未知數(shù)求偏導(dǎo),得到的偏導(dǎo)函數(shù)構(gòu)成的向量就叫梯度.那我們要求解的多元函數(shù)是哪個?
? ? ? ? 是最小二乘函數(shù):
?? ? ? ? ? ? ? ? ? ? ? ?(公式二)
? ? ? ?求導(dǎo)過程如下:
? ? ? ? ? ? ? ? ? ? ? ? ?(公式三)
? ? ? ? 公式三種,是,y所有樣本點的lable值向量y.得到的公式()中,是一個維度的所有數(shù)據(jù),()本身是對這個維度的所有數(shù)據(jù)求梯度的和.所以我們得到梯度下降中的梯度g:
? ? ? ? ?g=1/m x?(). ? m為樣本點的個數(shù).
?公式的另一種表達形式:
到這里,梯度下降就講解完畢了.梯度下降又叫做批量梯度下降,簡稱BGD.
(休息兩分鐘)
下面我們來看隨機梯度下降(SGD):
? ? ? ? 批量梯度下降是,求出一個維度中所有的數(shù)據(jù),取個平均來當(dāng)做每一次梯度下降的step.這樣做雖然準(zhǔn)確,但是每次要計算一個維度的所有數(shù)據(jù)的梯度,花費資源較大.所以才有了隨機梯度下降的思想:每次只隨機取一個維度中的一條數(shù)據(jù)求梯度,來當(dāng)做這個維度梯度下降的step.公式如下:
? ? ? ? 可以看出,隨機梯度下降和梯度下降公式的區(qū)別就是,里邊的x由矩陣x變成了x的分量
? ? ? ?為了更好的讓大家理解梯度下降和隨機梯度下降的區(qū)別,看下圖:
? ? ? ?(批量梯度下降) ??(隨機梯度下降)
? ? ? ? 途中,藍色點為兩個的取值,圓形越靠近里邊表示誤差越小.
? ? ? ? BGD總是綜合所有數(shù)據(jù)的梯度,取到的下降至一直很平滑,SGD隨機抽取一條數(shù)據(jù)作為參數(shù),步子很不穩(wěn)定.但是最終都可以到達函數(shù)的最優(yōu)解位置.雖然看起來SGD比BGD的誤差要大一些,但是SGD隨著迭代次數(shù)的增加,誤差會越來越小.
最后,SGD因為每次只隨機抽取一條數(shù)據(jù)來做梯度下降,計算代價比SGD小的不是一點半點.所有后邊無論機器學(xué)習(xí)還是深度學(xué)習(xí),對SGD的應(yīng)用是非常非常廣泛的.
在SGD和BGD中間,還有一個集合了兩種下降法的有點的辦法:mini-bach-GD,你猜一猜他是啥?對了,是隨機抽取小批量數(shù)據(jù)來做下降,但是用的并不多.
利用梯度下降法求解梯度的過程:
? ? ? ? 一般情況下分為三步:
? ? ? ? 1-隨機一個初始值,在多元線性回歸中,我們隨機一組w,帶入到損失函數(shù)中,得到一個初始點.
? ? ? ? 2-讓這個點按照負梯度的方向運動,就是我們前邊講的?,梯度的計算如上文所述.
? ? ? ? 3-迭代第二步,當(dāng)?shù)颂庍_到某一個數(shù),或者上一步和這一步的結(jié)果誤差小于某個數(shù),就認為是最優(yōu)解了,停止迭代.迭代次數(shù)和最小誤差值都是可以設(shè)置的.
? ? ? ? 通過第三步,我們就可以得到一個我們想要的最優(yōu)解.
? ? ? ? 最后補充一點,梯度下降的公式? ? ?(公式一)看起來好像開玩笑一樣就定下來了,沒有任何依據(jù),其實不是這樣的,它背后的理論依據(jù)是泰勒展開式.這里不再過多贅述了.文章就到這里,請大家?guī)兔闭`.
————————————————
版權(quán)聲明:本文為CSDN博主「winrar_setup.rar」的原創(chuàng)文章屉来,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明狈癞。
原文鏈接:https://blog.csdn.net/weixin_39445556/article/details/83661219