作者:Richmond Alake 翻譯:陳之炎 校對(duì):zrx本文約3300字,建議閱讀5分鐘
本文旨在為數(shù)據(jù)科學(xué)家提供一些基礎(chǔ)知識(shí),以理解在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)所需調(diào)用的底層函數(shù)和方法。
標(biāo)簽:神經(jīng)網(wǎng)絡(luò),梯度下降,反向傳播

人工神經(jīng)網(wǎng)絡(luò)[ANN)是人工智能技術(shù)的基礎(chǔ),同時(shí)也是機(jī)器學(xué)習(xí)模型的基礎(chǔ)。它們模擬人類大腦的學(xué)習(xí)過(guò)程,賦予機(jī)器完成特定類人任務(wù)的能力。數(shù)據(jù)科學(xué)家的目標(biāo)是利用公開(kāi)數(shù)據(jù)來(lái)解決商業(yè)問(wèn)題。通常,利用機(jī)器學(xué)習(xí)算法來(lái)識(shí)別模式,用算法模型實(shí)現(xiàn)預(yù)測(cè)。如何為特定的用例選擇正確的模型,并適當(dāng)?shù)卣{(diào)整參數(shù)?這需要對(duì)問(wèn)題和底層算法有清晰的理解,即充分理解問(wèn)題和算法,確保使用正確模型,并正確解釋結(jié)果。本文介紹并解釋了梯度下降算法和反向傳播算法。人工神經(jīng)網(wǎng)絡(luò)利用這些算法學(xué)習(xí)數(shù)據(jù)集,當(dāng)神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)發(fā)生變化時(shí),應(yīng)如何去修正網(wǎng)絡(luò)參數(shù)。在深入探討技術(shù)細(xì)節(jié)之前,首先來(lái)看看人類如何學(xué)習(xí)。人類大腦的學(xué)習(xí)過(guò)程是復(fù)雜的,當(dāng)前的研究工作只涉及到人類學(xué)習(xí)方式的表像。然而,已知的研究結(jié)果對(duì)構(gòu)建模型非常有價(jià)值,與機(jī)器不同,在做邏輯預(yù)測(cè)時(shí),人類無(wú)需借助大量的數(shù)據(jù)來(lái)解決問(wèn)題,人們直接從經(jīng)驗(yàn)和錯(cuò)誤中吸取教訓(xùn)。人類通過(guò)突觸可塑性的過(guò)程來(lái)學(xué)習(xí),突觸可塑性是一個(gè)術(shù)語(yǔ),用來(lái)描述在獲得新的信息后,如何形成和加強(qiáng)新的神經(jīng)連接。當(dāng)人類經(jīng)歷新事件時(shí),大腦中的連接會(huì)加強(qiáng),通過(guò)訓(xùn)練人工神經(jīng)網(wǎng)絡(luò),計(jì)算出預(yù)測(cè)的錯(cuò)誤率,在此基礎(chǔ)上來(lái)決策是加強(qiáng)或削弱神經(jīng)元之間的內(nèi)部連接。梯度下降算法是一種標(biāo)準(zhǔn)的優(yōu)化算法,通常,它是機(jī)器學(xué)習(xí)優(yōu)化算法的首選算法。首先,來(lái)剖析一下術(shù)語(yǔ)“梯度下降”,以更好地理解它與機(jī)器學(xué)習(xí)算法之間的關(guān)系。梯度是直線或曲線陡峭程度的量化度量,在數(shù)學(xué)上,它表示一條直線的上升或下降的方向。下降是指向下走的行為。因此,從這個(gè)術(shù)語(yǔ)的定義可以得出:梯度下降算法是對(duì)向下運(yùn)動(dòng)程度的量化。為了訓(xùn)練一個(gè)機(jī)器學(xué)習(xí)算法,需要識(shí)別網(wǎng)絡(luò)中的權(quán)重和偏差,這將有助于問(wèn)題的解決。例如,在分類問(wèn)題中,當(dāng)查看圖像時(shí),需要確定圖像是否為貓或狗。為此,必須構(gòu)建模型,將需求建模為函數(shù),更具體地說(shuō),是成本函數(shù)。成本函數(shù)又稱為損失函數(shù),利用成本函數(shù)衡量模型的出錯(cuò)程度。成本函數(shù)的偏導(dǎo)數(shù)影響模型的權(quán)重和偏差。梯度下降是一種算法,用于搜索使成本函數(shù)最小化或準(zhǔn)確度最優(yōu)的那些參數(shù)。神經(jīng)網(wǎng)絡(luò)中的成本函數(shù)、梯度下降和反向傳播神經(jīng)網(wǎng)絡(luò)令人印象深刻,同樣令人印象深刻的是:在尚未明確告知要檢測(cè)的特征的情況下,計(jì)算程序能夠區(qū)分圖像和圖像中的對(duì)象。把神經(jīng)網(wǎng)絡(luò)看作是一個(gè)接收輸入(數(shù)據(jù))的函數(shù),并生成一種輸出預(yù)測(cè),該函數(shù)的變量便是神經(jīng)元的參數(shù)或權(quán)重。因此,神經(jīng)網(wǎng)絡(luò)的關(guān)鍵任務(wù)是以一種近似或最佳的方式來(lái)調(diào)整數(shù)據(jù)集的權(quán)重和偏差值。下圖描述了一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),它接收輸入(X1、X2、X3、Xn),將這些輸入推送給包含權(quán)值(W1、W2、W3、Wn)的神經(jīng)元。輸入和權(quán)值經(jīng)過(guò)乘法運(yùn)算,結(jié)果由加法器()求和,激活函數(shù)調(diào)節(jié)該層的最終輸出。
圖1:作者創(chuàng)建的淺層神經(jīng)網(wǎng)絡(luò)圖為了評(píng)估神經(jīng)網(wǎng)絡(luò)的性能,需要一種機(jī)制來(lái)量化神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)值和實(shí)際數(shù)據(jù)樣本值之間的差異,從而計(jì)算出影響神經(jīng)網(wǎng)絡(luò)內(nèi)權(quán)重和偏差的修正因子。成本函數(shù)填補(bǔ)了神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)值與數(shù)據(jù)樣本的實(shí)際值之間的誤差距離。
圖2:神經(jīng)網(wǎng)絡(luò)內(nèi)部連接和預(yù)測(cè)描述上圖描述了一個(gè)簡(jiǎn)單的密集連接神經(jīng)元的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),它對(duì)包含數(shù)字0-3的圖像進(jìn)行分類。輸出層中的每個(gè)神經(jīng)元都對(duì)應(yīng)一個(gè)數(shù)字,與神經(jīng)元連接的激活程度越高,神經(jīng)元輸出的概率就越高,該概率為通過(guò)前饋網(wǎng)絡(luò)的數(shù)字與被激活的神經(jīng)元相關(guān)聯(lián)的概率。當(dāng)數(shù)字 “3”通過(guò)網(wǎng)絡(luò)前饋時(shí),將為 “3”分類的連接(由圖中的箭頭表示)分配更高的激活,使得輸出與數(shù)字“3”神經(jīng)元關(guān)聯(lián)的概率更大。負(fù)責(zé)神經(jīng)元的激活,即偏差、權(quán)重和前一層的激活的組件有不少,這些特定的組件經(jīng)過(guò)迭代修正,使得神經(jīng)網(wǎng)絡(luò)在特定的數(shù)據(jù)集上執(zhí)行最優(yōu)操作。利用“均方誤差”成本函數(shù),獲取神經(jīng)網(wǎng)絡(luò)的誤差信息,通過(guò)網(wǎng)絡(luò)的權(quán)值和偏差,將這些信息后向傳播給神經(jīng)網(wǎng)絡(luò)進(jìn)行更新。神經(jīng)網(wǎng)絡(luò)使用的成本函數(shù)示例:在討論完如何通過(guò)一種網(wǎng)絡(luò)預(yù)測(cè)技術(shù)來(lái)提高神經(jīng)網(wǎng)絡(luò)的性能之后,下文將集中討論梯度下降、反向傳播和成本函數(shù)之間的關(guān)系。圖3繪制了x和y軸上的成本函數(shù),該成本函數(shù)保存函數(shù)參數(shù)空間內(nèi)的全部數(shù)值。接下來(lái),讓我們來(lái)看看神經(jīng)網(wǎng)絡(luò)是如何通過(guò)成本函數(shù)可視化來(lái)實(shí)現(xiàn)學(xué)習(xí),曲線為神經(jīng)網(wǎng)絡(luò)參數(shù)空間內(nèi)分布不均勻的權(quán)重/參數(shù)值。
上圖中的藍(lán)色點(diǎn)表示搜索局部最小值時(shí)進(jìn)行的一個(gè)步驟(成本函數(shù)中求參數(shù)值)。模型成本函數(shù)的最低點(diǎn)對(duì)應(yīng)于使成本函數(shù)最小的權(quán)重值的位置。成本函數(shù)越小,神經(jīng)網(wǎng)絡(luò)的性能越好。因此,可以根據(jù)上圖中獲取到的信息來(lái)修改網(wǎng)絡(luò)的權(quán)重。梯度下降是一種引導(dǎo)在每個(gè)步長(zhǎng)中選取接近最小值的算法。梯度下降算法通過(guò)計(jì)算可微函數(shù)的梯度并沿梯度的相反方向移動(dòng),搜索使得局部/全局函數(shù)最小化的那個(gè)值。反向傳播是通過(guò)對(duì)影響神經(jīng)元輸出的組件(偏差、權(quán)重、激活)進(jìn)行迭代調(diào)整,從而使得成本函數(shù)變小的機(jī)制。在神經(jīng)網(wǎng)絡(luò)的架構(gòu)中,神經(jīng)元的輸入,包括與前一層神經(jīng)元的所有連接,決定了它的輸出。反向傳播所涉及的關(guān)鍵數(shù)學(xué)公式是導(dǎo)數(shù)的計(jì)算。反向傳播算法計(jì)算成本函數(shù)相對(duì)于權(quán)重、偏差和前一層激活的偏導(dǎo)數(shù),以確定哪些值影響成本函數(shù)的梯度。
圖4:誤差的向后傳播 圖片來(lái)源:《深度學(xué)習(xí)》,第三章,3藍(lán)1棕通過(guò)計(jì)算梯度,最小化成本函數(shù),得到一個(gè)局部最小值。在每次迭代或訓(xùn)練步長(zhǎng)中,根據(jù)計(jì)算出的梯度對(duì)網(wǎng)絡(luò)的權(quán)值以及學(xué)習(xí)率進(jìn)行更新,它控制著權(quán)值的修改因子。在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練階段,每個(gè)步長(zhǎng)都重復(fù)這個(gè)過(guò)程。理想情況下,目標(biāo)是在經(jīng)過(guò)一個(gè)步長(zhǎng)之后,會(huì)更加接近局部最小值。“反向傳播”這個(gè)名稱來(lái)自于進(jìn)程的字面意思,即“誤差的反向傳播”,梯度的偏導(dǎo)數(shù)對(duì)誤差進(jìn)行量化。通過(guò)網(wǎng)絡(luò)向后傳播誤差,利用最后一層(最接近輸出層的層)梯度的偏導(dǎo)數(shù)來(lái)計(jì)算第二層到最后一層的梯度。利用當(dāng)前層中前一層的梯度的偏導(dǎo)數(shù)確定誤差在各層中的傳播,一直傳播到網(wǎng)絡(luò)中的第一層(與輸入層最近的層)。這只是一個(gè)關(guān)于梯度下降算法的入門(mén)介紹,梯度下降算法還涉及到數(shù)學(xué)和微積分知識(shí)。雖然諸如TensorFlow、SciKit-Learn、PyTorch等軟件包已經(jīng)將復(fù)雜的訓(xùn)練和優(yōu)化算法進(jìn)行了抽象,然而,這并未降低數(shù)據(jù)科學(xué)家和ML從業(yè)者充分理解這些智能“黑盒子”幕后細(xì)節(jié)的要求。想要了解更多與反向傳播算法相關(guān)的數(shù)學(xué)知識(shí)嗎?以下資源供參考:通過(guò)學(xué)習(xí)英偉達(dá)深度學(xué)習(xí)研究所的各種課程,深入了解深度學(xué)習(xí)的世界。作者:Richmond Alake
Richmond Alake是一名機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺(jué)工程師,他與各種初創(chuàng)公司合作,利用深度學(xué)習(xí)模型來(lái)解決商業(yè)應(yīng)用程序中的計(jì)算機(jī)視覺(jué)任務(wù)。他在技術(shù)領(lǐng)域深耕五年,為大型企業(yè)集團(tuán)構(gòu)建應(yīng)用程序,并將人工智能技術(shù)集成到移動(dòng)應(yīng)用程序中。他寫(xiě)了100多篇關(guān)于人工智能和機(jī)器學(xué)習(xí)主題的文章,瀏覽量超過(guò)100萬(wàn)次。Richmond認(rèn)為:機(jī)器學(xué)習(xí)在日常問(wèn)題中會(huì)有功能強(qiáng)大的應(yīng)用。目前,他正主持多個(gè)項(xiàng)目,利用機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)模型來(lái)解決與人體工程學(xué)和社會(huì)網(wǎng)絡(luò)有關(guān)的問(wèn)題。
A Data Scientist's Guide to Gradient Descent and Backpropagation Algorithmshttps://developer.nvidia.com/blog/a-data-scientists-guide-to-gradient-descent-and-backpropagation-algorithms/推薦閱讀
我逃到國(guó)企了
再也不接私活了
Kaggle出了一本競(jìng)賽書(shū)(500頁(yè))
機(jī)器學(xué)習(xí)基礎(chǔ):用 Lasso 做特征選
機(jī)器學(xué)習(xí)自動(dòng)補(bǔ)全代(hán)碼(shù)神器
整理不易,點(diǎn)贊三連↓