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

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