(萬(wàn)字干貨)如何訓(xùn)練優(yōu)化“AI神經(jīng)網(wǎng)絡(luò)”模型?

果釀
0 評(píng)論 2545 瀏覽 21 收藏 40 分鐘

在上一篇文章中,我們?cè)敿?xì)介紹了神經(jīng)網(wǎng)絡(luò)的基本概念和原理,神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)和應(yīng)用場(chǎng)景,以及神經(jīng)網(wǎng)絡(luò)的產(chǎn)品案例:網(wǎng)易有道AI翻譯。如果想了解神經(jīng)網(wǎng)絡(luò)的更多詳情,可以翻閱我之前寫(xiě)的《8000字干貨說(shuō)清楚AI產(chǎn)品經(jīng)理必修的“神經(jīng)網(wǎng)絡(luò)” 》

在了解神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和原理后,我產(chǎn)生了進(jìn)一步的好奇,明明就是一些抽象的數(shù)學(xué)模型卻可以實(shí)現(xiàn)類(lèi)似人腦的智慧,神經(jīng)網(wǎng)絡(luò)是如何通過(guò)數(shù)據(jù)訓(xùn)練來(lái)實(shí)現(xiàn)這樣奇妙的效果呢?本篇就以這個(gè)問(wèn)題作為切入點(diǎn)來(lái)展開(kāi)說(shuō)說(shuō)。

本篇為大家揭曉,AI如此“神機(jī)妙算”的背后,也是需要經(jīng)歷一段訓(xùn)練過(guò)程的,如何訓(xùn)練AI神經(jīng)網(wǎng)絡(luò)?又如何識(shí)別訓(xùn)練過(guò)程是有效的?

在這個(gè)碎片化學(xué)習(xí)的環(huán)境中,也許已經(jīng)很少有人可以沉下心來(lái)看完一篇長(zhǎng)文了,但我還是希望你可以堅(jiān)持看完,相信會(huì)給你帶來(lái)不一樣的,更深厚的收獲。
照例,開(kāi)篇提供本篇文章結(jié)構(gòu)導(dǎo)圖,方便大家在閱讀前總攬全局,有大致的畫(huà)面框架。

一、AI神經(jīng)網(wǎng)絡(luò)需要被訓(xùn)練后,才能派上用場(chǎng)

看過(guò)上一篇文章的朋友會(huì)知道,神經(jīng)網(wǎng)絡(luò)中有兩個(gè)主要部分,:結(jié)構(gòu)和權(quán)重。結(jié)構(gòu)包括神經(jīng)元及其連接, 權(quán)重是一些數(shù)字,是連接神經(jīng)元之間的參數(shù)。

它們可以微調(diào)神經(jīng)元中的數(shù)學(xué)運(yùn)算方式,從而得到一個(gè)輸出。如果神經(jīng)網(wǎng)絡(luò)犯了錯(cuò)誤,也就是說(shuō)輸出的結(jié)果和預(yù)期不符,這通常意味著權(quán)重沒(méi)有正確調(diào)整,我們需要更新它們,以便它們下次做出更好的預(yù)測(cè)。

聽(tīng)起來(lái)是不是覺(jué)得很簡(jiǎn)單,其實(shí)這背后的訓(xùn)練過(guò)程是很復(fù)雜的,我這樣說(shuō)只是為了好理解一些。但我們畢竟是在討論AI領(lǐng)域的知識(shí),內(nèi)容中無(wú)法避免會(huì)遇到一些專業(yè)詞匯,于是乎,后面講到了我再逐一解釋吧。

神經(jīng)網(wǎng)絡(luò)中的權(quán)重決定了不同神經(jīng)元之間的連接強(qiáng)度,為神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)找到最佳權(quán)重的過(guò)程稱為優(yōu)化。

神經(jīng)網(wǎng)絡(luò)作為一種模型,想讓它真正有“神機(jī)妙算”的本領(lǐng),就需要我們用大量的數(shù)據(jù)去訓(xùn)練它,未被訓(xùn)練過(guò)的模型往往容易給出很多的錯(cuò)誤答案,這也是為什么市面上那么多AI模型,需要被數(shù)據(jù)大量訓(xùn)練后才能真正面市了。

接下來(lái),我們可以再追問(wèn)一步,計(jì)算機(jī)是如何通過(guò)數(shù)據(jù)訓(xùn)練并優(yōu)化神經(jīng)網(wǎng)絡(luò)的呢?

提到訓(xùn)練神經(jīng)網(wǎng)絡(luò),我們就離不開(kāi)被數(shù)學(xué)支配的現(xiàn)實(shí),神經(jīng)網(wǎng)絡(luò)的每一個(gè)神經(jīng)元中都裝著數(shù)學(xué)模型,若以非線性函數(shù)來(lái)舉例解釋神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程,些許復(fù)雜了,也不易理解。

還是以線性回歸為例吧,畢竟本篇的重點(diǎn)不是在數(shù)學(xué)模型上,而是說(shuō)清楚神經(jīng)網(wǎng)絡(luò)是如何訓(xùn)練和優(yōu)化的。

所以,我們以線性回歸為例,來(lái)聊聊神經(jīng)網(wǎng)絡(luò)的訓(xùn)練優(yōu)化策略。

二、以線性回歸為例的訓(xùn)練優(yōu)化策略

線性回歸是一種統(tǒng)計(jì)學(xué)方法,用于研究?jī)蓚€(gè)或多個(gè)變量之間的關(guān)系。它基于一個(gè)假設(shè),即觀察到的數(shù)據(jù)點(diǎn)可以通過(guò)一條直線(在二維空間中)或一個(gè)超平面(在多維空間中)進(jìn)行最佳擬合。

線性回歸的目標(biāo)是找到這條直線或超平面的參數(shù),使得預(yù)測(cè)值與實(shí)際觀測(cè)值之間的誤差最小化。

基于線性回歸的概念和特點(diǎn),我們可以發(fā)現(xiàn),在機(jī)器學(xué)習(xí)領(lǐng)域,線性回歸可以用來(lái)做數(shù)據(jù)預(yù)測(cè)。通過(guò)擬合數(shù)據(jù)點(diǎn)的最佳直線,我們可以預(yù)測(cè)連續(xù)值的結(jié)果。

比如,我們想要知道一家度假村的游客人數(shù)和氣溫之間有什么關(guān)系,我們需要知道過(guò)去的數(shù)據(jù),根據(jù)歷史數(shù)據(jù)找到和數(shù)據(jù)最擬合的公式,假設(shè)這個(gè)公式可視化為一條折線圖,可以直觀表示兩個(gè)數(shù)據(jù)之間的關(guān)系。

得出預(yù)測(cè)線后,我們就可以據(jù)此來(lái)預(yù)測(cè)未來(lái)日子里,不同氣溫下會(huì)有多少游客量,幫助預(yù)測(cè)明年在不同季節(jié)時(shí),提前準(zhǔn)備承載游客量的應(yīng)對(duì)方案,從而幫助度假村提高整體運(yùn)營(yíng)效益。

我們回想一下,圖中的折線是如何畫(huà)出來(lái)的?也就是說(shuō),計(jì)算機(jī)是如何知道這條折線可以最佳擬合游客人數(shù)和氣溫之間的關(guān)系呢?

這就是線性回歸在背后起到的關(guān)鍵作用。

剛開(kāi)始,計(jì)算機(jī)畫(huà)一條隨機(jī)的直線, 這條直線大概率就是不準(zhǔn)的。所以計(jì)算機(jī)就需要計(jì)算這條直線和每個(gè)數(shù)據(jù)點(diǎn)之間的距離, 全部加起來(lái), 量化直線上的數(shù)據(jù)和真實(shí)數(shù)據(jù)之間的差距。

下一步,已知差距就要減少差距,線性回歸的目標(biāo)是調(diào)整直線, 使誤差盡可能小, 我們通過(guò)歷史數(shù)據(jù)訓(xùn)練它,希望這條線符合訓(xùn)練數(shù)據(jù)。

最后,通過(guò)數(shù)據(jù)訓(xùn)練后,得出的直線被稱為最佳擬合線, 我們可以用這條直線, 預(yù)測(cè)在任何溫度下都會(huì)有多少游客出現(xiàn)。于是,你就看到計(jì)算機(jī)生成出了一條符合游客人數(shù)和氣溫之間關(guān)系的直線圖了。

在現(xiàn)實(shí)中,數(shù)據(jù)關(guān)系往往沒(méi)有那么簡(jiǎn)單,游客的人數(shù)并不是只和氣溫有關(guān),為了預(yù)測(cè)更準(zhǔn)確的結(jié)果, 我們可能需要考慮兩個(gè)以上的特性。

比如說(shuō), 加上節(jié)假日特征后,可視化圖表會(huì)從2D圖變成3D圖,,我們的最佳擬合線更像是一個(gè)最佳擬合平面。如果我們?cè)僭黾拥谒膫€(gè)特性, 比如是否下雨, 那么預(yù)測(cè)模型的圖表將會(huì)變得更加復(fù)雜,那就難以直觀可視化呈現(xiàn)清楚了。

所以,當(dāng)我們考慮更多的特性時(shí),需要在圖中添加更多的維度,優(yōu)化問(wèn)題會(huì)變得更復(fù)雜,擬合訓(xùn)練數(shù)據(jù)變得更加困難。

這時(shí)候,就是神經(jīng)網(wǎng)絡(luò)派上用場(chǎng)的地方了,通過(guò)將許多簡(jiǎn)單神經(jīng)元和權(quán)重連接在一起,神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)解決復(fù)雜的問(wèn)題,最佳擬合線變成了一個(gè)奇怪的多維函數(shù)。

現(xiàn)實(shí)中,當(dāng)我們面臨復(fù)雜預(yù)測(cè)時(shí),人工智能往往比普通人發(fā)揮得更好。比如,預(yù)測(cè)天氣。

三、用損失函數(shù)來(lái)表示誤差

了解了訓(xùn)練數(shù)據(jù)的優(yōu)化策略后,不如我們?cè)俸闷嬉稽c(diǎn),進(jìn)一步追問(wèn)下去,計(jì)算機(jī)是如何知道自己預(yù)測(cè)的數(shù)據(jù)和實(shí)際數(shù)據(jù)有差距呢?知道差距后又是如何減少差距,讓輸出的預(yù)測(cè)結(jié)果和實(shí)際結(jié)果最符合呢?

預(yù)測(cè)值和實(shí)際值之間的差距我們可以稱作誤差,計(jì)算機(jī)要想知道預(yù)測(cè)值與實(shí)際值之間是否產(chǎn)生誤差,還知道誤差有多大,就需要損失函數(shù)派上用場(chǎng)了。

神經(jīng)網(wǎng)絡(luò)中的損失函數(shù)是一種衡量模型預(yù)測(cè)結(jié)果與實(shí)際結(jié)果之間差距的方法。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),我們的目標(biāo)是最小化損失函數(shù)以使模型更好地?cái)M合數(shù)據(jù),從而實(shí)現(xiàn)更準(zhǔn)確的預(yù)期結(jié)果。

常見(jiàn)的損失函數(shù)有均方誤差(MSE)、絕對(duì)值誤差(MAE)、交叉熵?fù)p失(Cross-Entropy Loss)、Hinge損失(Hinge Loss)、對(duì)數(shù)損失(Log Loss)、Huber損失(Huber Loss)、平均絕對(duì)誤差(Mean Absolute Error,簡(jiǎn)稱MAE)等。

這些損失函數(shù)在不同場(chǎng)景下有各自的優(yōu)勢(shì)和適用性,選擇合適的損失函數(shù)對(duì)于提高模型的性能至關(guān)重要。在實(shí)際應(yīng)用中,我們可以根據(jù)數(shù)據(jù)的特點(diǎn)和任務(wù)需求來(lái)選擇合適的損失函數(shù)。

以均方誤差(MSE)為例,均方誤差是預(yù)測(cè)值與真實(shí)值之間差值的平方和的平均值。具體來(lái)說(shuō),如果我們有n個(gè)預(yù)測(cè)值和對(duì)應(yīng)的實(shí)際值,MSE的計(jì)算公式就是:

MSE = (1/n) * Σ(yi – ?i)^2

其中,y_i表示實(shí)際值,?_i表示預(yù)測(cè)值,n表示樣本數(shù)量,Σ表示求和。

在均方誤差(MSE)的結(jié)果中,MSE越小,模型擬合效果越好,說(shuō)明預(yù)測(cè)模型的準(zhǔn)確性越高。相反,如果MSE的值較大,那么預(yù)測(cè)模型的準(zhǔn)確性就相對(duì)較低。

因此,在實(shí)際應(yīng)用中,我們通常希望MSE的值盡可能小,以獲得更好的預(yù)測(cè)效果。

任何一個(gè)模型都有其適用的邊界,均方誤差也不例外。均方誤差(MSE)適用于連續(xù)型數(shù)據(jù),尤其是回歸問(wèn)題。既然知道均方誤差在回歸問(wèn)題上比較有效,我們也有必要先對(duì)回歸問(wèn)題有個(gè)大概的了解。

在統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域中,回歸問(wèn)題常用于預(yù)測(cè)一個(gè)連續(xù)變量的值基于其他相關(guān)變量的影響,建立一個(gè)模型,通過(guò)分析已知的自變量和因變量的數(shù)據(jù),來(lái)理解它們之間的關(guān)系。

本文第二段“以線性回歸為例的訓(xùn)練優(yōu)化策略”中提到的線性回歸指的就是自變量和因變量之間存在線性關(guān)系的情況。

回歸問(wèn)題在現(xiàn)實(shí)生活中有著廣泛的應(yīng)用,如預(yù)測(cè)房?jī)r(jià),預(yù)測(cè)股票價(jià)格,又或者僅僅預(yù)測(cè)度假村游客人數(shù)和氣溫高低的關(guān)系等。

通過(guò)對(duì)大量歷史數(shù)據(jù)的分析和建模,我們可以為這些實(shí)際問(wèn)題提供有價(jià)值的預(yù)測(cè)結(jié)果。當(dāng)然,前提是數(shù)據(jù)的質(zhì)量是優(yōu)質(zhì)的,模型的選擇是匹配的。

綜上所述,我們通過(guò)損失函數(shù)來(lái)表示模型預(yù)測(cè)的誤差,以均方誤差為例,MSE用于表示某個(gè)線性回歸模型預(yù)測(cè)的準(zhǔn)確率。

接第二段中度假村的例子,如果首次MSE的值為10,通過(guò)多次調(diào)整后,最后一次MSE的值為0.1,MSE從10降到了1,則說(shuō)明調(diào)整后的預(yù)測(cè)模型變得更準(zhǔn)確了。

然而,我們不能僅從MSE的值來(lái)決定一個(gè)模型的好壞。這是因?yàn)椋诓煌膽?yīng)用場(chǎng)景中,我們對(duì)于模型的預(yù)測(cè)精度要求是不同的。

例如,在某些對(duì)預(yù)測(cè)精度要求極高的場(chǎng)景中,即使MSE的值只有0.01,我們也可能認(rèn)為這個(gè)模型的效果不好,而在一些對(duì)預(yù)測(cè)精度要求較低的場(chǎng)景中,即使MSE的值達(dá)到了0.1,我們也可能認(rèn)為這個(gè)模型的效果已經(jīng)足夠好。

值得注意的是:即使是標(biāo)準(zhǔn)化的AI模型,在實(shí)際運(yùn)用中,也需要具體問(wèn)題具體分析,切不可無(wú)腦照搬,采用什么模型,首要的就是先清楚待解決的問(wèn)題是什么,只用清楚了問(wèn)題的本質(zhì)才能找對(duì)適合的模型,這節(jié)奏,是不是有點(diǎn)拿著AI方案進(jìn)行私人訂制那味兒了?

四、用反向傳播來(lái)減少誤差

上段說(shuō)到,損失函數(shù)可以優(yōu)化AI模型預(yù)測(cè)的準(zhǔn)確性,這話不全對(duì)。因?yàn)?,僅僅是損失函數(shù),只是起到了一半的作用,需要完成另外一半,才可以真正達(dá)成模型的訓(xùn)練調(diào)優(yōu)。

這另外一半,就是反向傳播(Back Propagation),也被稱為反向訓(xùn)練或反向?qū)W習(xí),是一種重要的機(jī)器學(xué)習(xí)算法。

它的核心思想是通過(guò)計(jì)算網(wǎng)絡(luò)的輸出誤差并將其反向傳播到神經(jīng)網(wǎng)絡(luò)之前的每一層,從而更新原神經(jīng)網(wǎng)絡(luò)中的權(quán)重和偏置,以使得神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果更接近于真實(shí)的目標(biāo)值。

正如我們前幾篇文章中所了解到的,在神經(jīng)網(wǎng)絡(luò)中,每一層的神經(jīng)元都會(huì)對(duì)輸入數(shù)據(jù)進(jìn)行一系列的處理和變換,然后將處理后的結(jié)果傳遞給下一層。

這個(gè)過(guò)程可以被視為一個(gè)信息的傳遞過(guò)程,而在這個(gè)過(guò)程中,網(wǎng)絡(luò)的權(quán)重和偏置起著關(guān)鍵的作用。

然而,由于神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,我們很難直接通過(guò)數(shù)學(xué)公式計(jì)算出神經(jīng)網(wǎng)絡(luò)的最優(yōu)權(quán)重和偏置。因此,我們需要使用一種迭代的方法來(lái)逐步優(yōu)化這些參數(shù),這就是反向傳播算法的思想起源。

所以說(shuō),為了訓(xùn)練優(yōu)化神經(jīng)網(wǎng)絡(luò),在損失函數(shù)得出誤差值后,反向傳播算法會(huì)將結(jié)果反饋給神經(jīng)網(wǎng)絡(luò)前幾層的神經(jīng)元并促其調(diào)整,一些神經(jīng)元的計(jì)算可能比其他神經(jīng)元的計(jì)算更容易造成錯(cuò)誤,,權(quán)重會(huì)調(diào)整得多一些,錯(cuò)誤少的就調(diào)整得少一些,層層幾次反饋和調(diào)整后,就可以讓計(jì)算機(jī)得出比之前更準(zhǔn)確的預(yù)測(cè)結(jié)果,神經(jīng)網(wǎng)絡(luò)模型也因此得到訓(xùn)練和優(yōu)化。

以上,就是反向傳播工作的基本原理了。不如,我們?cè)偻伦穯?wèn)一步,反向傳播算法是如何改變?cè)窠?jīng)網(wǎng)絡(luò)的權(quán)重和偏置呢?

我們已知,反向傳播的基本思想是從輸出層開(kāi)始,逐層向前計(jì)算每個(gè)神經(jīng)元對(duì)損失函數(shù)的負(fù)貢獻(xiàn)(即梯度),這其中的“梯度”,便可以更新神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置,從而獲得較低的損失函數(shù)值。

所以,我們還需要弄清楚兩個(gè)問(wèn)題:1.梯度是什么?2.梯度是如何更新權(quán)重和偏置的?

簡(jiǎn)而言之,梯度就是一個(gè)函數(shù)在某一點(diǎn)上的斜率或變化率。更具體地說(shuō),它表示的是函數(shù)輸出值關(guān)于輸入值的變化情況。這個(gè)梯度告訴我們,如果我們想減小損失函數(shù)的值,應(yīng)該如何調(diào)整網(wǎng)絡(luò)的權(quán)重。所以,我們需要先計(jì)算梯度,再更新網(wǎng)絡(luò)的權(quán)重。

在反向傳播算法中,梯度的計(jì)算分為前向傳播和反向傳播兩個(gè)階段。

在前向傳播階段,網(wǎng)絡(luò)首先將輸入數(shù)據(jù)傳遞到輸出層,然后逐層向前計(jì)算每一層的輸出和損失函數(shù)的值。

在這個(gè)過(guò)程中,每個(gè)神經(jīng)元都會(huì)根據(jù)其前一層的輸出和激活函數(shù)來(lái)計(jì)算自己的輸出,并將這個(gè)輸出傳遞給下一層。同時(shí),每個(gè)神經(jīng)元還會(huì)計(jì)算其輸入與輸出之間的誤差,這個(gè)誤差會(huì)隨著數(shù)據(jù)在網(wǎng)絡(luò)中的傳播而被累積起來(lái)。

在前向傳播完成后,反向傳播階段開(kāi)始計(jì)算梯度。

從輸出層開(kāi)始,每個(gè)神經(jīng)元都會(huì)根據(jù)其輸出誤差和激活函數(shù)的導(dǎo)數(shù)來(lái)計(jì)算其在反向傳播過(guò)程中對(duì)損失函數(shù)的貢獻(xiàn)。

然后,這些梯度信息會(huì)逐層向后傳播,直到傳回輸入層。這樣,我們就可以得到每個(gè)參數(shù)對(duì)于損失函數(shù)的貢獻(xiàn),即參數(shù)的梯度。

為了計(jì)算梯度,我們需要用到鏈?zhǔn)椒▌t(Chain Rule)。

鏈?zhǔn)椒▌t是微積分中的一個(gè)基本法則,它描述了復(fù)合函數(shù)的導(dǎo)數(shù)是如何分解為簡(jiǎn)單函數(shù)的導(dǎo)數(shù)之積的。

在反向傳播中,我們可以將整個(gè)神經(jīng)網(wǎng)絡(luò)看作是一個(gè)復(fù)合函數(shù),其中每個(gè)神經(jīng)元都是一個(gè)簡(jiǎn)單函數(shù)。

通過(guò)鏈?zhǔn)椒▌t,我們可以計(jì)算出損失函數(shù)關(guān)于每個(gè)權(quán)重的偏導(dǎo)數(shù)(即梯度),然后用這些梯度去更新網(wǎng)絡(luò)的權(quán)重。

得出了梯度后,計(jì)算機(jī)又是如何借助梯度來(lái)更新權(quán)重和偏置的呢?

俗話說(shuō),用魔法打敗魔法,算法應(yīng)對(duì)算法,所以我們需要借助一些優(yōu)化算法來(lái)更新梯度,從而實(shí)現(xiàn)權(quán)重和偏置的有效優(yōu)化。

常見(jiàn)的優(yōu)化算法有梯度下降法、隨機(jī)梯度下降法(SGD)、Adam這三種。

以梯度下降法為例,展開(kāi)說(shuō)一下其實(shí)現(xiàn)原理。

梯度下降法是一種在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中常用的優(yōu)化算法。它的核心思想是沿著目標(biāo)函數(shù)的梯度負(fù)方向進(jìn)行迭代,從而找到使目標(biāo)函數(shù)取得最小值的點(diǎn)。

為了形象地解釋這一過(guò)程,我們可以將其比喻為一個(gè)登山者在攀登一座陡峭的山峰。

假設(shè)這座山峰就是我們的目標(biāo)函數(shù),我們希望找到一個(gè)最低的位置(即目標(biāo)函數(shù)的最小值)。然而,這座山是如此陡峭,以至于我們無(wú)法一眼就看到最低點(diǎn)在哪里。因此,我們需要借助一些工具來(lái)幫助我們找到這個(gè)位置。

最開(kāi)始,我們需要確定一個(gè)初始位置,這個(gè)初始位置可以是一個(gè)隨機(jī)選擇的值,也可以是之前的迭代結(jié)果。然后,我們需要開(kāi)始攀登。在每一步攀登中,我們都會(huì)測(cè)量當(dāng)前的海拔高度,這就是我們計(jì)算目標(biāo)函數(shù)值的過(guò)程。

接下來(lái),我們需要判斷當(dāng)前的位置是否已經(jīng)足夠接近最低點(diǎn)。為了實(shí)現(xiàn)這一點(diǎn),我們需要觀察并測(cè)量當(dāng)前位置附近的地形變化。在這座山的腳下到最高點(diǎn)之間,地形變化是逐漸減小的。

我們可以將這種地形變化稱為梯度。梯度的方向就是山坡最陡峭的地方,也就是我們下一步需要前進(jìn)的方向。通過(guò)不斷地測(cè)量梯度并朝相反的方向前進(jìn),我們可以逐漸降低海拔高度,從而更接近最低點(diǎn)。

在爬山過(guò)程中,我們還需要考慮一個(gè)重要的因素:步長(zhǎng)。

步長(zhǎng)過(guò)大可能導(dǎo)致我們跳過(guò)最低點(diǎn),步長(zhǎng)過(guò)小則可能導(dǎo)致我們陷入局部最低點(diǎn)而無(wú)法到達(dá)全局最低點(diǎn)。

因此,在梯度下降法中,我們需要根據(jù)實(shí)際情況調(diào)整步長(zhǎng)大小,以便更快地找到目標(biāo)函數(shù)的最小值。

以登山為例,梯度下降法就像是一場(chǎng)尋找最低點(diǎn)的攀登之旅。通過(guò)測(cè)量梯度并沿著梯度的負(fù)方向前進(jìn),我們可以逐步降低目標(biāo)函數(shù)值,最終找到全局最優(yōu)解。

此刻,我們?cè)賮?lái)試著回答這個(gè)問(wèn)題:梯度是如何更新權(quán)重和偏置的?

我們可以先定義一個(gè)損失函數(shù),這個(gè)函數(shù)用于衡量神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)結(jié)果與真實(shí)結(jié)果之間的差距,就像剛開(kāi)始找山峰的初始點(diǎn)。然后,我們通過(guò)反向傳播算法計(jì)算出損失函數(shù)對(duì)每個(gè)權(quán)重和偏置的梯度。

接下來(lái),需要設(shè)定一個(gè)學(xué)習(xí)率,這個(gè)學(xué)習(xí)率決定了我們每次更新參數(shù)時(shí)移動(dòng)的步長(zhǎng)。一般來(lái)說(shuō),學(xué)習(xí)率不能設(shè)置得太大,否則可能會(huì)導(dǎo)致算法在最小值點(diǎn)附近震蕩不前;也不能設(shè)置得太小,否則算法收斂速度會(huì)非常慢。

最后,我們就可以根據(jù)計(jì)算出的梯度和學(xué)習(xí)率來(lái)更新神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置了。

具體來(lái)說(shuō),對(duì)于每個(gè)權(quán)重和偏置,我們將其當(dāng)前值減去學(xué)習(xí)率乘以對(duì)應(yīng)的梯度,得到新的值。這樣,通過(guò)多次迭代,我們就能逐步找到使損失函數(shù)最小的參數(shù)值。

在這一系列的過(guò)程中,梯度便實(shí)現(xiàn)了對(duì)神經(jīng)網(wǎng)絡(luò)權(quán)重和偏置的優(yōu)化。而反向傳播算法也因借助梯度的幫助,減少了神經(jīng)網(wǎng)絡(luò)模型對(duì)預(yù)測(cè)結(jié)果的誤差。

最終,我們從表象結(jié)果看來(lái),AI的模型經(jīng)過(guò)訓(xùn)練優(yōu)化后,預(yù)測(cè)的準(zhǔn)確率變得越來(lái)越高。

五、神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)擬合問(wèn)題

有時(shí), 反向傳播在使神經(jīng)網(wǎng)絡(luò)適合于某些數(shù)據(jù)方面做得太好了, 在大數(shù)據(jù)集中產(chǎn)生了很多巧合的關(guān)系,這些關(guān)系可能并不是真實(shí)世界中的因果關(guān)系,而是由于數(shù)據(jù)集的特點(diǎn)或者訓(xùn)練過(guò)程中的隨機(jī)性所導(dǎo)致的。

比如,“香蕉和火災(zāi)”。根據(jù)數(shù)據(jù)顯示,當(dāng)香蕉價(jià)格上漲時(shí),火災(zāi)的發(fā)生率也會(huì)隨之上升。

然而,這并不意味著香蕉和火災(zāi)之間存在因果關(guān)系。實(shí)際上,這兩個(gè)事件之間并沒(méi)有必然的聯(lián)系。這就是一個(gè)典型的大數(shù)據(jù)中無(wú)因果關(guān)系但是數(shù)據(jù)顯示有關(guān)系的巧合例子。

所以,即使我們訓(xùn)練出了AI模型,但結(jié)果并不一定如你所愿,搞不好還會(huì)鬧出笑話,我們還需要關(guān)注AI中的數(shù)據(jù)擬合問(wèn)題。

數(shù)據(jù)擬合問(wèn)題可以分為過(guò)擬合與欠擬合,每個(gè)問(wèn)題的發(fā)生背后都有著不同的原因,也需要不同的解決方法。

當(dāng)然,關(guān)于數(shù)據(jù)擬合問(wèn)題也可以有其他不同的分類(lèi),本文主要還是就過(guò)擬合與欠擬合展開(kāi)介紹。

1. 過(guò)擬合(Overfitting)

過(guò)擬合是指模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)得非常好,但是在新的、未見(jiàn)過(guò)的數(shù)據(jù)上表現(xiàn)不佳。

這通常是因?yàn)槟P瓦^(guò)于復(fù)雜,學(xué)習(xí)到了訓(xùn)練數(shù)據(jù)中的噪聲和不具代表性的特征,過(guò)于依賴訓(xùn)練數(shù)據(jù)中的細(xì)節(jié),忽略了數(shù)據(jù)的一般規(guī)律。

為了更好理解過(guò)擬合問(wèn)題在實(shí)際應(yīng)用中的影響,假設(shè)我們用一個(gè)數(shù)學(xué)模型來(lái)預(yù)測(cè)學(xué)生的成績(jī)。

在數(shù)據(jù)訓(xùn)練中,我們可以從歷史數(shù)據(jù)中發(fā)現(xiàn),學(xué)生的身高和成績(jī)之間存在一定的正相關(guān)關(guān)系。于是我們訓(xùn)練了一個(gè)簡(jiǎn)單的線性回歸模型,將身高作為自變量,成績(jī)作為因變量。經(jīng)過(guò)訓(xùn)練,我們發(fā)現(xiàn)這個(gè)模型在訓(xùn)練集上的表現(xiàn)非常出色,預(yù)測(cè)成績(jī)與實(shí)際成績(jī)高度一致。

但有基本常識(shí)的我們即使不預(yù)測(cè)數(shù)據(jù)都會(huì)知道,學(xué)生的成績(jī)和身高之間并不會(huì)產(chǎn)生直接的相關(guān)關(guān)系。所以,當(dāng)我們將這個(gè)模型應(yīng)用到新的學(xué)生數(shù)據(jù)上時(shí),會(huì)發(fā)現(xiàn)預(yù)測(cè)的準(zhǔn)確性大幅下降,甚至可能出現(xiàn)完全錯(cuò)誤的預(yù)測(cè)。

在這個(gè)例子中,我們的線性回歸模型可能過(guò)于復(fù)雜,過(guò)分強(qiáng)調(diào)了身高對(duì)學(xué)生成績(jī)的影響,而忽略了其他潛在的影響因素,如學(xué)習(xí)態(tài)度、努力程度等。

因此,當(dāng)面對(duì)新的學(xué)生數(shù)據(jù)時(shí),由于這些數(shù)據(jù)中可能包含與訓(xùn)練數(shù)據(jù)不同的特征分布,模型的預(yù)測(cè)性能就大打折扣。所以,我們?cè)跀?shù)據(jù)訓(xùn)練的過(guò)程中,需要識(shí)別數(shù)據(jù)是否過(guò)擬合,來(lái)避免后續(xù)問(wèn)題。

為了識(shí)別過(guò)擬合現(xiàn)象,我們通常會(huì)將數(shù)據(jù)集分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。

訓(xùn)練集用于訓(xùn)練模型,驗(yàn)證集用于調(diào)整模型參數(shù)以獲得最佳的性能,而測(cè)試集則用于評(píng)估模型在未知數(shù)據(jù)上的表現(xiàn)。通過(guò)對(duì)比模型在這三個(gè)數(shù)據(jù)集上的表現(xiàn),我們可以判斷模型是否存在過(guò)擬合問(wèn)題。

那么,出現(xiàn)了過(guò)擬合問(wèn)題時(shí),我們?cè)撊绾谓鉀Q呢?

為了解決過(guò)擬合問(wèn)題,我們可以增加數(shù)據(jù)量、簡(jiǎn)化模型、正則化或交叉驗(yàn)證等方法來(lái)解決。

【增加數(shù)據(jù)量】

顧名思義就是引入更多的數(shù)據(jù),幫助模型更好地捕捉到潛在的模式,從而減少過(guò)擬合的風(fēng)險(xiǎn)。然而,在實(shí)際應(yīng)用中,獲取大量高質(zhì)量數(shù)據(jù)可能會(huì)有一些不現(xiàn)實(shí)。

【簡(jiǎn)化模型】

就是選擇較少的參數(shù)或者較簡(jiǎn)單的模型結(jié)構(gòu)來(lái)減小模型復(fù)雜度,例如減少神經(jīng)網(wǎng)絡(luò)中的隱藏層的數(shù)量或節(jié)點(diǎn)數(shù)。這個(gè)辦法可以降低模型對(duì)訓(xùn)練數(shù)據(jù)的依賴,從而減少過(guò)擬合的風(fēng)險(xiǎn)。但是,過(guò)于簡(jiǎn)化的模型可能會(huì)損失一些有用的信息,影響模型的性能。

【正則化】

正則化是通過(guò)向模型的損失函數(shù)添加額外的項(xiàng),來(lái)限制模型參數(shù)的大小,防止其過(guò)度膨脹。常用的正則化技術(shù)包括L1正則化和L2正則化。L1正則化傾向于使一些參數(shù)變?yōu)榱?,從而?shí)現(xiàn)特征選擇。而L2正則化通過(guò)懲罰參數(shù)的平方值,使得參數(shù)變得更為均勻。正則化可以幫助我們?cè)诒3帜P托阅艿耐瑫r(shí),降低過(guò)擬合的風(fēng)險(xiǎn)。

【交叉驗(yàn)證】

交叉驗(yàn)證是一種評(píng)估模型泛化能力的有效方法。它將數(shù)據(jù)集劃分為多個(gè)子集,然后使用不同的子集進(jìn)行訓(xùn)練和驗(yàn)證,最后將各個(gè)子集的結(jié)果綜合起來(lái)得到最終的評(píng)估指標(biāo)。交叉驗(yàn)證可以幫助我們發(fā)現(xiàn)過(guò)擬合問(wèn)題,并選擇合適的模型參數(shù)。

2.欠擬合(Underfitting)

欠擬合是指神經(jīng)網(wǎng)絡(luò)在訓(xùn)練數(shù)據(jù)和新數(shù)據(jù)上都表現(xiàn)不佳的現(xiàn)象。這通常是因?yàn)槟P瓦^(guò)于簡(jiǎn)單,無(wú)法捕捉到數(shù)據(jù)中的關(guān)鍵特征和規(guī)律。

例如,如果我們使用一個(gè)只有一層的神經(jīng)網(wǎng)絡(luò)來(lái)擬合復(fù)雜的非線性關(guān)系,那么模型很可能無(wú)法準(zhǔn)確地捕捉到數(shù)據(jù)中的模式,導(dǎo)致訓(xùn)練和測(cè)試效果都不理想。就像一個(gè)小學(xué)生去解大學(xué)微積分的題目,大概率是給不出正確答案的。

我們繼續(xù)以預(yù)測(cè)學(xué)生成績(jī)?yōu)槔?,?lái)具體解釋一下欠擬合現(xiàn)象。

假設(shè)我們有一份學(xué)生的成績(jī)數(shù)據(jù)集,但是這次我們的模型過(guò)于簡(jiǎn)單,只考慮了學(xué)習(xí)時(shí)間,而沒(méi)有考慮其他可能影響成績(jī)的因素,例如學(xué)生的先前知識(shí)水平、家庭背景、課程難度、考試形式等。

那么我們的模型就可能會(huì)出現(xiàn)數(shù)據(jù)欠擬合的問(wèn)題,那么我們就無(wú)法僅僅通過(guò)學(xué)習(xí)時(shí)間,來(lái)準(zhǔn)確預(yù)測(cè)學(xué)生成績(jī)。

我們?cè)跀?shù)據(jù)訓(xùn)練的過(guò)程中,又該如何識(shí)別數(shù)據(jù)欠擬合?其實(shí),欠擬合的主要表現(xiàn)包括高偏差和低方差。

【高偏差】

欠擬合模型的預(yù)測(cè)結(jié)果與真實(shí)值之間存在較大的差距,即模型無(wú)法準(zhǔn)確地估計(jì)出數(shù)據(jù)的均值。這通常是由于模型過(guò)于簡(jiǎn)單,無(wú)法捕捉到數(shù)據(jù)中的復(fù)雜關(guān)系所導(dǎo)致的。

例如,在回歸問(wèn)題中,如果采用線性回歸模型來(lái)處理非線性關(guān)系的數(shù)據(jù),那么模型就無(wú)法準(zhǔn)確地描述這種關(guān)系,從而導(dǎo)致預(yù)測(cè)結(jié)果偏離實(shí)際值。

【低方差】

欠擬合模型對(duì)訓(xùn)練數(shù)據(jù)的誤差較小,但在測(cè)試數(shù)據(jù)上的誤差較大。這是因?yàn)榍窋M合模型過(guò)于簡(jiǎn)單,不能很好地泛化到新的數(shù)據(jù)上。換句話說(shuō),雖然欠擬合模型在訓(xùn)練數(shù)據(jù)上的表現(xiàn)不錯(cuò),但在未知數(shù)據(jù)上可能表現(xiàn)得非常糟糕。

我們?cè)偕钔谝稽c(diǎn),為什么會(huì)出現(xiàn)欠擬合問(wèn)題?

欠擬合問(wèn)題產(chǎn)生的原因也有多種,通常發(fā)生在以下情況:

  • 模型復(fù)雜度不足: 使用過(guò)于簡(jiǎn)單的模型,例如線性模型去擬合非線性關(guān)系的數(shù)據(jù)。
  • 特征不足: 數(shù)據(jù)中的重要特征未被考慮,導(dǎo)致模型無(wú)法準(zhǔn)確地預(yù)測(cè)目標(biāo)變量。
  • 訓(xùn)練不足:模型在訓(xùn)練集上沒(méi)有足夠的迭代學(xué)習(xí),未能很好地適應(yīng)數(shù)據(jù)。
  • 噪聲干擾: 數(shù)據(jù)中的噪聲干擾過(guò)大,模型過(guò)于敏感,難以區(qū)分真實(shí)信號(hào)和噪聲。
  • 樣本量不足: 訓(xùn)練數(shù)據(jù)量過(guò)小,難以捕捉整體數(shù)據(jù)分布。

欠擬合是我們?cè)谟?xùn)練數(shù)據(jù)時(shí),必須要關(guān)注的問(wèn)題,因?yàn)樗赡軐?dǎo)致模型在實(shí)際應(yīng)用中的性能不佳,到最后讓團(tuán)隊(duì)之前的努力付諸東流。

那么,出現(xiàn)了欠擬合問(wèn)題時(shí),我們?cè)撊绾谓鉀Q呢?

當(dāng)我們知道欠擬合問(wèn)題的原因之后,解決該問(wèn)題的關(guān)鍵是增加模型的復(fù)雜性,以便計(jì)算機(jī)更好地捕捉數(shù)據(jù)中的關(guān)系和特征。同時(shí),還需要注意避免過(guò)擬合,以免過(guò)度復(fù)雜導(dǎo)致泛化性能下降。

為了解決欠擬合問(wèn)題,我們可以通過(guò)增加模型復(fù)雜度、增加更多的特征、降低正則化參數(shù)或增加訓(xùn)練數(shù)據(jù)等方法來(lái)解決。

【增加模型復(fù)雜度】

如果模型過(guò)于簡(jiǎn)單,無(wú)法捕捉數(shù)據(jù)中的復(fù)雜模式,可以考慮使用更復(fù)雜的模型,如增加更多的層或節(jié)點(diǎn),引入更多的特征或改變模型的結(jié)構(gòu),使其能夠更好地捕捉數(shù)據(jù)中的復(fù)雜關(guān)系。例如,可以嘗試使用多項(xiàng)式回歸、支持向量機(jī)等更復(fù)雜的模型來(lái)解決非線性問(wèn)題,或者在神經(jīng)網(wǎng)絡(luò)中,增加隱藏層的數(shù)量或節(jié)點(diǎn)的數(shù)量。

【增加更多的特征】

我們可以通過(guò)增加更多的特征來(lái)使模型變得更加復(fù)雜,從而更好地?cái)M合數(shù)據(jù)。這些特征可以是現(xiàn)有的特征的線性或非線性組合,也可以是新的、從其他數(shù)據(jù)源得到的特征。在學(xué)生考試成績(jī)的例子中,可以考慮加入更多可能影響成績(jī)的因素,如家庭背景、學(xué)生興趣等。

【降低正則化參數(shù)】

正則化是一種防止過(guò)擬合的方法,但在某些情況下,過(guò)度的正則化可能導(dǎo)致欠擬合。因此,可以適當(dāng)降低正則化參數(shù),以允許模型更靈活地適應(yīng)訓(xùn)練數(shù)據(jù)。

【增加訓(xùn)練數(shù)據(jù)】

欠擬合通常與訓(xùn)練數(shù)據(jù)量不足有關(guān)。通過(guò)收集更多的訓(xùn)練數(shù)據(jù),可以提高模型的學(xué)習(xí)能力和泛化能力,從而減輕欠擬合現(xiàn)象。

所以,當(dāng)我們知道了如何通過(guò)數(shù)據(jù)來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)之后,還需要關(guān)注在訓(xùn)練過(guò)程中出現(xiàn)的數(shù)據(jù)擬合問(wèn)題,也可以理解成AI訓(xùn)練中也需要過(guò)程監(jiān)督吧。

當(dāng)我們發(fā)現(xiàn)數(shù)據(jù)過(guò)擬合時(shí),需要借助增加數(shù)據(jù)量、簡(jiǎn)化模型、正則化或交叉驗(yàn)證等方法來(lái)解決。當(dāng)我們發(fā)現(xiàn)數(shù)據(jù)欠擬合時(shí),可以借助增加模型復(fù)雜度、增加更多的特征、降低正則化參數(shù)或增加訓(xùn)練數(shù)據(jù)等方法來(lái)解決。

六、全文總結(jié)

如果你看到此處,足以說(shuō)明你對(duì)AI也有著非一般的興趣和熱情,我在此送上真誠(chéng)的感謝。如果你和我一樣,也對(duì)AI模型是如何訓(xùn)練優(yōu)化的背后原理感興趣,相信這篇文章會(huì)給你帶來(lái)幫助。

在最后,我就本文做一個(gè)簡(jiǎn)單的總結(jié),如果你沒(méi)有第一時(shí)間全部理解,根據(jù)總結(jié)也可以帶走一些收獲。

神經(jīng)網(wǎng)絡(luò)是AI的核心,其真正發(fā)揮作用之前需要經(jīng)過(guò)充分的訓(xùn)練。本文討論了對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程及相關(guān)優(yōu)化策略,并深入探討神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)擬合問(wèn)題。

與人類(lèi)學(xué)習(xí)一樣,神經(jīng)網(wǎng)絡(luò)需要通過(guò)大量的數(shù)據(jù)輸入進(jìn)行學(xué)習(xí),以適應(yīng)特定任務(wù)。在訓(xùn)練的過(guò)程中,我們以線性回歸為例,通過(guò)優(yōu)化策略來(lái)提高模型的性能。

在訓(xùn)練優(yōu)化過(guò)程中,我們使用損失函數(shù)來(lái)表示模型的預(yù)測(cè)與實(shí)際結(jié)果之間的誤差。這個(gè)誤差越小,模型的性能就越好。通過(guò)調(diào)整模型的參數(shù),我們?cè)噲D最小化損失函數(shù),使得模型的預(yù)測(cè)更加準(zhǔn)確。

損失函數(shù)的引入使得我們能夠量化模型的誤差,從而為優(yōu)化提供方向。通過(guò)梯度下降等方法,我們可以找到使損失函數(shù)最小化的參數(shù)值,進(jìn)而提高模型的準(zhǔn)確性。這一過(guò)程中,反向傳播起到了關(guān)鍵作用。

反向傳播通過(guò)計(jì)算損失函數(shù)對(duì)模型參數(shù)的梯度,實(shí)現(xiàn)了誤差的反向傳遞。這意味著我們可以根據(jù)誤差的方向來(lái)更新模型的參數(shù),使得模型逐漸趨向最優(yōu)。

然而,即使經(jīng)過(guò)精心的訓(xùn)練,神經(jīng)網(wǎng)絡(luò)在處理數(shù)據(jù)時(shí)仍然可能面臨擬合問(wèn)題。數(shù)據(jù)擬合問(wèn)題表現(xiàn)為過(guò)擬合和欠擬合,面對(duì)不同的問(wèn)題,我們也需要有不同的解決方法。

神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程是一個(gè)復(fù)雜而精細(xì)的過(guò)程,通過(guò)本篇,希望各位看官可以理解和巧妙運(yùn)用這些概念和方法,也可以更好地利用神經(jīng)網(wǎng)絡(luò)來(lái)解決實(shí)際問(wèn)題。

《孫子·謀攻篇》有云,“知彼知己,百戰(zhàn)不殆;不知彼而知己,一勝一負(fù);不知彼不知己,每戰(zhàn)必殆。”

知是成事的前提。在此引用,不是要把AI當(dāng)作敵人,而是要知AI,懂AI,而后才能有效和AI共處,在AI的助力下做出更有價(jià)值的事情。

我們都是浩瀚星河中的一粒,在AI的浪潮中簇?fù)碇靶?。AI到底是什么,是我們必須要弄清楚的課題。

本文由 @果釀 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。

題圖來(lái)自 Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!
专题
15858人已学习7篇文章
AI在现实中的应用有很多,AI应用实例有哪些?AI的实现原理是什么你知道吗?本专题的文章分享了AI应用实例分析
专题
16020人已学习12篇文章
区别于普通业务,中台能让系统更好地满足业务需求,提升系统效率。本专题的文章分享了如何搭建业务中台。
专题
14525人已学习12篇文章
排行榜在帮助用户做决定的同时,引导用户购买目标产品,极大降低了用户的选择成本。本专题的文章分享了对于排行榜的设计思考。
专题
19801人已学习13篇文章
本专题的文章分享了产品经理面试题和解答思路。
专题
13169人已学习13篇文章
本专题的文章分享了产品经理数据分析方法论。
专题
12844人已学习13篇文章
在产品的不同生命周期,需要有对应的产品战略以应对市场。本专题的文章分享了如何做好产品战略规划。