0
本文作者: JocelynWang | 2019-12-15 21:47 |
雷鋒網(wǎng) AI 科技評(píng)論按:對(duì)于諸位“機(jī)器學(xué)習(xí)兒”而言,梯度下降這個(gè)概念一定不陌生,然而從直觀上來看,梯度下降的復(fù)雜性無疑也會(huì)讓人“敬而遠(yuǎn)之”。本文作者 Suraj Bansal 通過對(duì)梯度下降背后的數(shù)學(xué)原理進(jìn)行拆解,并配之以簡(jiǎn)單的現(xiàn)實(shí)案例,以輕松而有趣的口吻帶大家深入了解梯度下降這一在機(jī)器學(xué)習(xí)領(lǐng)域至關(guān)重要的方法。
敏捷軟件開發(fā)定義了迭代產(chǎn)品開發(fā)的過程,以下步驟可通過這一過程執(zhí)行。
1)市場(chǎng)調(diào)研后進(jìn)行產(chǎn)品構(gòu)建
2)產(chǎn)品商業(yè)化并進(jìn)入市場(chǎng)
3)評(píng)估消費(fèi)者滿意度和市場(chǎng)滲透率
4)對(duì)反饋及時(shí)回應(yīng),并更新迭代產(chǎn)品
5)重復(fù)上述過程
這個(gè)過程實(shí)質(zhì)上是將市場(chǎng)測(cè)試、 收集反饋和產(chǎn)品迭代反復(fù)進(jìn)行,直到能以最小的誤差實(shí)現(xiàn)最大的市場(chǎng)滲透率。此循環(huán)重復(fù)多次,并確保消費(fèi)者可以在每個(gè)步驟中提供一定的反饋來影響產(chǎn)品的更改策略。
實(shí)際上,這種看似簡(jiǎn)單的反復(fù)迭代過程很好地體現(xiàn)在梯度下降原理中。梯度下降能夠通過首先計(jì)算出成本函數(shù)的梯度、然后更新梯度對(duì)應(yīng)的現(xiàn)有參數(shù)從而最小化成本函數(shù)來處理。
梯度將具有眾多變量的函數(shù)轉(zhuǎn)換為一個(gè)向量,稍后我們將對(duì)該話題進(jìn)行討論。
WOAHHHHHHHHHH......就此打住——這看起來太復(fù)雜啦!
你也許會(huì)對(duì)這張圖片感到驚訝,但實(shí)際上你完全不用擔(dān)心。
了解梯度下降背后的多元演算聽起來可能會(huì)讓人十分畏懼,別怕,下面我將對(duì)梯度下降背后的原理做出解釋并且僅跟大家探討理解梯度下降所需的數(shù)學(xué)概念。
在此之前,我強(qiáng)烈建議你們查看我此前寫的一篇關(guān)于機(jī)器學(xué)習(xí)的文章或視頻先對(duì)基礎(chǔ)知識(shí)進(jìn)行復(fù)習(xí)!
視頻鏈接:https://www.youtube.com/watch?v=yvouUpxIqts&t=145s
梯度下降采用機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)了三種主要的變體,每個(gè)變體在計(jì)算效率上各異并且都具有各自獨(dú)特的優(yōu)勢(shì)。
1、第一種變體:批量梯度下降
批量梯度下降(Batch Gradient Descent)可以說是梯度下降變體中最簡(jiǎn)單的一種。這整個(gè)過程可以看作是訓(xùn)練迭代的次數(shù)(Epoch),即以決定訓(xùn)練用來更新模型權(quán)重的向量的次數(shù)。
批量梯度下降的誤差通過訓(xùn)練集每一批單獨(dú)的樣本計(jì)算出來,并且在所有訓(xùn)練點(diǎn)數(shù)都在一個(gè) Epoch 內(nèi)經(jīng)過機(jī)器學(xué)習(xí)算法的訓(xùn)練后更新模型參數(shù)。
更多相關(guān)信息可參考下面這篇文章(文中為大家推薦了五本機(jī)器學(xué)習(xí)相關(guān)的書籍):
https://www.datadriveninvestor.com/2019/03/03/editors-pick-5-machine-learning-books/
該方法的誤差梯度和收斂速度較為穩(wěn)定,可以實(shí)現(xiàn)足夠水平的計(jì)算效率。但是,由于該模型僅在分析了整個(gè)訓(xùn)練集之后才對(duì)權(quán)重進(jìn)行迭代,此時(shí)的收斂狀態(tài)可能不是最優(yōu)的狀態(tài),事實(shí)上,該模型還可以優(yōu)化以達(dá)到更精確的結(jié)果!
2、第二種變體:隨機(jī)梯度下降
下面進(jìn)入……隨機(jī)梯度下降!這兩種方法之間的根本區(qū)別在于,隨機(jī)梯度下降法隨機(jī)化了整個(gè)數(shù)據(jù)集并對(duì)每個(gè)單獨(dú)的訓(xùn)練樣本進(jìn)行權(quán)重和參數(shù)的更新,而批量梯度下降是在分析了整個(gè)訓(xùn)練集之后對(duì)參數(shù)進(jìn)行更新。
對(duì)模型連續(xù)更新可以提供更高的準(zhǔn)確率和更快的計(jì)算速度。但是,頻繁的更改會(huì)產(chǎn)生更多的梯度噪聲,這意味著它會(huì)在誤差最小值區(qū)域(成本函數(shù)最低的點(diǎn))內(nèi)來回振蕩。因此,每次運(yùn)行測(cè)試都會(huì)存在一些差異。
好的,這兩種方法都有一些明顯的優(yōu)缺點(diǎn),那么到底哪種方法更適合你的機(jī)器學(xué)習(xí)模型?這也不是什么很難的問題——都不是!
3、第三種變體:迷你批量梯度下降
再接下來進(jìn)入……迷你批次梯度下降!它基本上結(jié)合了批量梯度下降的效率和隨機(jī)梯度下降的整體魯棒性。
該方法通過將數(shù)據(jù)集聚類為更小的批量(通常在30–500個(gè)訓(xùn)練點(diǎn)數(shù)之間),并且模型對(duì)每個(gè)單獨(dú)批量執(zhí)行迭代。它通過使用高度優(yōu)化的矩陣來提高效率和準(zhǔn)確性,這有效減小了參數(shù)更新的方差。
所有梯度下降變體都將使用以下公式進(jìn)行建模。每當(dāng)模型進(jìn)行反向傳播后,都會(huì)執(zhí)行此迭代,直到成本函數(shù)達(dá)到其收斂點(diǎn)為止。
權(quán)重向量存在于 x-y 平面中,將對(duì)應(yīng)每個(gè)權(quán)重的損失函數(shù)的梯度與學(xué)習(xí)率相乘,然后用向量減去二者的乘積。
偏導(dǎo)數(shù)是用于更新參數(shù) θ0、θ1和alpha(學(xué)習(xí)率)的梯度,而alpha是需要用戶自己給定的非常重要的超參數(shù)。M 代表更新的次數(shù),i 代表梯度更新的起始點(diǎn)。
1、偏導(dǎo)數(shù)
我們知道一個(gè)多變量函數(shù)的偏導(dǎo)數(shù),就是它關(guān)于其中一個(gè)變量的導(dǎo)數(shù)而保持其他變量恒定。但是該函數(shù)的整個(gè)求導(dǎo)過程是怎樣的呢?
首先,讓我們了解偏導(dǎo)數(shù)背后的數(shù)學(xué)原理。計(jì)算像 f(x,y)=x2* y 這樣的多變量函數(shù)的過程可以分解如下:
好吧,我知道你此時(shí)在想什么——導(dǎo)數(shù)本身已經(jīng)很復(fù)雜很枯燥,為什么還使用偏導(dǎo)數(shù)而不完全使用導(dǎo)數(shù)!
函數(shù)輸入由多個(gè)變量組成,因此,其中涉及的概念就是多變量演算。偏導(dǎo)數(shù)用于評(píng)估每個(gè)變量相對(duì)于其他變量作為常量時(shí)的變化情況。
2、梯度
梯度實(shí)質(zhì)上輸出的是標(biāo)量值多變量函數(shù)多維輸入的一維值。梯度表示圖形切線的斜率,該斜率指向函數(shù)最大增長(zhǎng)率的方向。這個(gè)導(dǎo)數(shù)代表了成本函數(shù)的趨勢(shì)或斜率值。
本質(zhì)上,任何給定函數(shù) f 的梯度(通常用?f表示)可以解釋為一個(gè)向量所有偏導(dǎo)數(shù)的集合。
想象自己站在函數(shù) f 以一定間隔排列的點(diǎn)(x0,y0…)之中。向量?f(x0,y0…)將識(shí)別出使 f函數(shù)值增加的最快行進(jìn)方向。有趣的是,梯度矢量?f(x0,yo…)也垂直于函數(shù) f 的輪廓線!
是的,多變量函數(shù)計(jì)算絕對(duì)是令人生畏的。下面,我們來總結(jié)一下。
假設(shè)偏導(dǎo)數(shù)是具有 n 個(gè)偏導(dǎo)數(shù)的 n 次導(dǎo)數(shù),這些偏導(dǎo)數(shù)可以將每個(gè)單獨(dú)的變量與其他看作常數(shù)的變量隔離開來。而梯度將每個(gè)偏導(dǎo)數(shù)組合成一個(gè)向量。
3、學(xué)習(xí)率
梯度可以確定移動(dòng)的方向。學(xué)習(xí)率將決定我們采取步長(zhǎng)的大小。學(xué)習(xí)率本質(zhì)上是一個(gè)超參數(shù),它定義了神經(jīng)網(wǎng)絡(luò)中權(quán)重相對(duì)于損失梯度下降的調(diào)整幅度。
這個(gè)參數(shù)決定了我們朝著最佳權(quán)重移動(dòng)的速度的快慢,同時(shí)將每個(gè)步長(zhǎng)的成本函數(shù)最小化。高學(xué)習(xí)率可以在每一步中覆蓋更多的區(qū)域,但是可能會(huì)跳過成本函數(shù)的最小值;低學(xué)習(xí)率則需要花上很久的時(shí)間才能到達(dá)成本函數(shù)的最小值。
下面我以我的小外甥和他對(duì)狗的喜愛為例,來對(duì)這兩種情況進(jìn)行說明:
我們假設(shè) Arnav 美夢(mèng)成真:看到了25只漂亮的拉布拉多犬,并且它們都是黑色的。那自然而然地,Arnav 就會(huì)識(shí)別出這種一致的黑色,并將這種黑色關(guān)聯(lián)為他之后在辨認(rèn)狗這種動(dòng)物時(shí)要尋找的主要特征。
假設(shè)我突然給他看一條白色的狗,然后告訴他這是一只狗,如果學(xué)習(xí)率低,他會(huì)繼續(xù)認(rèn)為所有的狗都一定具備黑色的特征,而這條白色的狗就是一條異常的狗。
如果學(xué)習(xí)率高,Arnav 就會(huì)轉(zhuǎn)而相信所有的狗都應(yīng)該是白色的,并且任何跟他的新預(yù)想不一致的情況都會(huì)被視為錯(cuò)誤,即便之前他看到過 25只黑色狗。
在理想的學(xué)習(xí)率下,Arnav 將意識(shí)到顏色不是對(duì)狗進(jìn)行分類的主要屬性,他將繼續(xù)去發(fā)現(xiàn)狗的其他特征。理想的學(xué)習(xí)速率無疑是最好的,因?yàn)樗軌蛟跍?zhǔn)確性和時(shí)間成本之間找到一個(gè)平衡點(diǎn)。
4、成本函數(shù)
成本函數(shù)可以衡量模型的性能,在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,我們要確保將成本函數(shù)一直減小,直到達(dá)到最小值。
成本函數(shù)實(shí)質(zhì)上是通過回歸指標(biāo),例如平均絕對(duì)誤差和均方誤差,來量化預(yù)測(cè)值和期望值之間的總誤差。
5、平均絕對(duì)誤差
平均絕對(duì)誤差測(cè)量的是一組預(yù)測(cè)樣本中平均誤差的大小,而無需評(píng)估其方向或矢量,可以通過以下公式進(jìn)行建模。
6、均方誤差
均方誤差可找到預(yù)測(cè)值與實(shí)際值之間平均差的平方。除了最后取值為平方而不是絕對(duì)值這一點(diǎn)以外,均方誤差與平均絕對(duì)誤差 MAE 的原理基本一致。其對(duì)于部分誤差值的度量標(biāo)準(zhǔn)不再是坐標(biāo)系內(nèi)點(diǎn)之間的距離,而是找到由測(cè)量點(diǎn)之間的距離產(chǎn)生的形狀(通常為正方形)區(qū)域。
7、梯度下降(再次介紹)
讓我們看這樣一個(gè)類比,以進(jìn)一步了解梯度下降的直觀原理!
想象一下,你站在珠穆朗瑪峰峰頂上,現(xiàn)在要完成通往山底的任務(wù),這聽起來相當(dāng)簡(jiǎn)單且直觀對(duì)吧?
然而,(現(xiàn)在有一個(gè)你需要考慮的細(xì)節(jié)信息是——你完全是一個(gè)盲人)這里出現(xiàn)了一則你需要重新考慮的小信息——你是盲人。
這無疑使得任務(wù)變得更加艱巨,但目標(biāo)也并非完全不可能實(shí)現(xiàn)。在你開始朝著更大傾斜度的方向移動(dòng)前,你需要邁出一小步一小步。在你抵達(dá)山底之前,此方法需要進(jìn)行無數(shù)次迭代以最終達(dá)到目的地。
這從本質(zhì)上模仿了梯度下降的理念,在梯度下降中,模型通過后向傳播以最終到達(dá)山的最低點(diǎn)。
山脈類似于在空間中繪制的數(shù)據(jù)圖,行走的步長(zhǎng)類似于學(xué)習(xí)率,感受地形陡峭程度就類似于算法計(jì)算數(shù)據(jù)集參數(shù)的梯度。
若假設(shè)正確,選擇的方向會(huì)降低成本函數(shù)。山的底部代表了機(jī)器的權(quán)重的最佳值(成本函數(shù)已經(jīng)被最小化)。
8、線性回歸
對(duì)于那些不熟悉的變量,在所有統(tǒng)計(jì)模型學(xué)科中常常使用回歸分析來研究多變量函數(shù)之間的關(guān)系以進(jìn)行預(yù)測(cè)分析。
代表期望值和實(shí)驗(yàn)值之間誤差的線稱為回歸線,每個(gè)殘差值都可以通過與其方差與最佳擬合線連接的垂直線段描繪出來。
下面的公式將 x 表示為輸入的訓(xùn)練數(shù)據(jù)(參數(shù)為單變量或單輸入變量),假設(shè)進(jìn)行了監(jiān)督學(xué)習(xí),則 y 表示數(shù)據(jù)的標(biāo)簽。
讓我們通過以下示例對(duì)此做進(jìn)一步了解。
Elon 在 salesx 擔(dān)任兼職市場(chǎng)總監(jiān),他收集了過去一年的促銷工作促銷活動(dòng)的付款額與銷售額的數(shù)據(jù),給未來銷售和促銷提供一些指導(dǎo)性建議。
Elon認(rèn)為該數(shù)據(jù)應(yīng)該是線性的,所以用散點(diǎn)圖的方式來呈現(xiàn)這些信息,橫縱坐標(biāo)分別為新客戶數(shù)量和花費(fèi)的成本。Elon構(gòu)造了回歸線,其目的是為了更好地理解和預(yù)測(cè)salesx將通過新的營(yíng)銷理念獲得多少客戶。
9、多項(xiàng)式回歸
線性回歸可以很好地顯示數(shù)據(jù)集中兩個(gè)相關(guān)變量中存在的結(jié)構(gòu)和趨勢(shì)。但是,考慮到線性函數(shù)的行為,而由于在非線性關(guān)系中依然可以清楚地表現(xiàn)出一定的相關(guān)性,它們無法將非線性的回歸關(guān)系進(jìn)行準(zhǔn)確反映。
多項(xiàng)式回歸能夠?qū)?n 次方函數(shù)之間的關(guān)系進(jìn)行建模,并且可以以低于線性回歸的誤差函數(shù)值擬合某些數(shù)據(jù)集。
盡管多項(xiàng)式回歸可以更好地?cái)M合函數(shù)的曲率,并且可以最準(zhǔn)確地表示兩個(gè)變量之間的關(guān)系,但它們對(duì)異常值極為敏感,那些異常值很容易造成數(shù)據(jù)偏離。
感謝閱讀我的文章,希望大家能學(xué)到更多有關(guān)梯度下降的知識(shí), 以及如何將這些原理應(yīng)用到機(jī)器學(xué)習(xí)和人工智能中!
Via https://medium.com/datadriveninvestor/the-math-and-intuition-behind-gradient-descent-13c45f367a11
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。