分析深度學(xué)習(xí)背后的數(shù)學(xué)思想
深度神經(jīng)網(wǎng)絡(luò)(DNN)本質(zhì)上是通過具有多個(gè)連接的感知器而形成的,其中感知器是單個(gè)神經(jīng)元??梢詫⑷斯ど窠?jīng)網(wǎng)絡(luò)(ANN)視為一個(gè)系統(tǒng),其中包含沿加權(quán)路徑饋入的一組輸入。然后處理這些輸入,并產(chǎn)生輸出以執(zhí)行某些任務(wù)。隨著時(shí)間的流逝,ANN“學(xué)習(xí)”了,并且開發(fā)了不同的路徑。各種路徑可能具有不同的權(quán)重,并且在模型中,比那些產(chǎn)生較少的理想結(jié)果的路徑,以及被發(fā)現(xiàn)更重要(或產(chǎn)生更理想的結(jié)果)的路徑分配了更高的權(quán)重。
本文引用地址:http://m.butianyuan.cn/article/202009/418420.htm在DNN中,如果所有輸入都密集連接到所有輸出,則這些層稱為密集層。此外,DNN可以包含多個(gè)隱藏層。隱藏層基本上是神經(jīng)網(wǎng)絡(luò)輸入和輸出之間的點(diǎn),激活函數(shù)對(duì)輸入的信息進(jìn)行轉(zhuǎn)換。之所以稱其為隱藏層,是因?yàn)闊o法從系統(tǒng)的輸入和輸出中直接觀察到這一點(diǎn)。神經(jīng)網(wǎng)絡(luò)越深,網(wǎng)絡(luò)可以從數(shù)據(jù)中識(shí)別的越多,輸出的信息越多。
但是,盡管目標(biāo)是從數(shù)據(jù)中盡可能多地學(xué)習(xí),但是深度學(xué)習(xí)模型可能會(huì)遭受過度擬合的困擾。當(dāng)模型從訓(xùn)練數(shù)據(jù)(包括隨機(jī)噪聲)中學(xué)習(xí)太多時(shí),就會(huì)發(fā)生這種情況。然后,模型可以確定數(shù)據(jù)中非常復(fù)雜的模式,但這會(huì)對(duì)新數(shù)據(jù)的性能產(chǎn)生負(fù)面影響。訓(xùn)練數(shù)據(jù)中拾取的噪聲不適用于新數(shù)據(jù)或看不見的數(shù)據(jù),并且該模型無法概括發(fā)現(xiàn)的模式。非線性模型在深度學(xué)習(xí)模型中也非常重要,盡管該模型將從具有多個(gè)隱藏層的內(nèi)容中學(xué)到很多東西,但是將線性形式應(yīng)用于非線性問題將導(dǎo)致性能下降。
現(xiàn)在的問題是,“這些層如何學(xué)習(xí)東西?” 好吧,我們可以在這里將ANN應(yīng)用于實(shí)際場(chǎng)景以解決問題并了解如何訓(xùn)練模型以實(shí)現(xiàn)其目標(biāo)。案例分析如下:
在當(dāng)前的大流行中,許多學(xué)校已經(jīng)過渡到虛擬學(xué)習(xí),這使一些學(xué)生擔(dān)心他們通過課程的機(jī)會(huì)?!拔覍⑼ㄟ^本課程”這個(gè)問題是任何人工智能系統(tǒng)都應(yīng)該能夠解決的問題。
為簡(jiǎn)單起見,讓我們考慮該模型只有3個(gè)輸入:學(xué)生參加的講座的數(shù)量,在作業(yè)上花費(fèi)的時(shí)間以及整個(gè)講座中互聯(lián)網(wǎng)連接丟失的次數(shù)。該模型的輸出將是二進(jìn)制分類。學(xué)生要么通過了課程,要么沒有通過,其實(shí)就是0和1?,F(xiàn)在到了學(xué)期期末,學(xué)生A參加了21堂課,花了90個(gè)小時(shí)進(jìn)行作業(yè),并且在整個(gè)學(xué)期中有7次失去互聯(lián)網(wǎng)連接。這些輸入信息被輸入到模型中,并且輸出預(yù)測(cè)學(xué)生有5%的機(jī)會(huì)通過課程。一周后,發(fā)布了最終成績(jī),學(xué)生A通過了該課程。那么,模型的預(yù)測(cè)出了什么問題?
從技術(shù)上講,沒有任何問題。該模型本來可以按目前開發(fā)的方式工作。問題在于該模型不知道發(fā)生了什么。我們將在路徑上初始化一些權(quán)重,但是該模型當(dāng)前不知道對(duì)與錯(cuò)。因此,權(quán)重不正確。這就是學(xué)習(xí)的主要源頭,其中的想法是模型需要掌握錯(cuò)誤的時(shí)間的規(guī)律,我們通過計(jì)算某種形式的“損失”來做到這一點(diǎn)。計(jì)算得出的損失取決于當(dāng)前的問題,但是通常會(huì)涉及使預(yù)測(cè)輸出與實(shí)際輸出之間的差異最小化。
在上述情況下,只有一名學(xué)生和一個(gè)錯(cuò)誤點(diǎn)可以減少到最小。但是,通常不是這種情況?,F(xiàn)在,如果考慮將多個(gè)學(xué)生和多個(gè)差異最小化,那,總損失通常將計(jì)算為所有預(yù)測(cè)和實(shí)際觀察值之間的差異的平均值。
回想一下,正在計(jì)算的損失取決于當(dāng)前的問題。因此,由于我們當(dāng)前的問題是二元分類(0和1分類),因此適當(dāng)?shù)膿p失計(jì)算將是交叉熵?fù)p失,該功能背后的想法是,它比較學(xué)生是否將通過課程的預(yù)測(cè)分布與實(shí)際分布,并嘗試最小化這些分布之間的差異。
取而代之的是,我們不再希望預(yù)測(cè)學(xué)生是否會(huì)通過該課程,而是希望預(yù)測(cè)他們將在該課程中獲得的分?jǐn)?shù)。因此,交叉熵?fù)p失將不再是一種合適的方法。相反,均方誤差損失將更合適。此方法適用于回歸問題,其思想是將嘗試最小化實(shí)際值和預(yù)測(cè)值之間的平方差。
現(xiàn)在我們了解了一些損失函數(shù)(這里有損失函數(shù)的介紹:深度學(xué)習(xí)基礎(chǔ):數(shù)學(xué)分析基礎(chǔ)與Tensorflow2.0回歸模型 文章末尾可下載PDF書籍),我們可以進(jìn)行損失優(yōu)化和模型訓(xùn)練。擁有良好DNN的關(guān)鍵因素是擁有適當(dāng)?shù)臋?quán)重。損耗優(yōu)化應(yīng)嘗試找到一組權(quán)重W,以最小化計(jì)算出的損耗。如果只有一個(gè)重量分量,則可以在二維圖上繪制重量和損耗,然后選擇使損耗最小的重量。但是,大多數(shù)DNN具有多個(gè)權(quán)重分量,并且可視化n維圖非常困難。
取而代之的是,針對(duì)所有權(quán)重計(jì)算損失函數(shù)的導(dǎo)數(shù),以確定最大上升的方向?,F(xiàn)在,模型可以理解向上和向下的方向,然后向下移動(dòng),直到達(dá)到局部最小值的收斂點(diǎn)。完成這一體面操作后,將返回一組最佳權(quán)重,這就是DNN應(yīng)該使用的權(quán)重(假設(shè)模型開發(fā)良好的話)。
計(jì)算此導(dǎo)數(shù)的過程稱為反向傳播,它本質(zhì)上是來自微積分的鏈?zhǔn)椒▌t??紤]上面顯示的神經(jīng)網(wǎng)絡(luò),第一組權(quán)重的微小變化如何影響最終損失?這就是導(dǎo)數(shù)或梯度試圖解釋的內(nèi)容。但是,第一組權(quán)重被饋送到隱藏層,然后隱藏層又具有另一組權(quán)重,從而導(dǎo)致預(yù)測(cè)的輸出和損失。因此,還應(yīng)考慮權(quán)重變化對(duì)隱藏層的影響?,F(xiàn)在,這些是網(wǎng)絡(luò)中僅有的兩個(gè)部分。但是,如果要考慮的權(quán)重更多,則可以通過應(yīng)用從輸出到輸入的鏈?zhǔn)揭?guī)則來繼續(xù)此過程。
訓(xùn)練DNN時(shí)要考慮的另一個(gè)重要因素是學(xué)習(xí)率(可以看做是數(shù)學(xué)中的收斂因子)。當(dāng)模型行進(jìn)以找到最佳的權(quán)重集時(shí),它需要以某種因素來更新其權(quán)重。盡管這似乎微不足道,但是確定模型移動(dòng)的因素非常非常必要。如果因子太小,則該模型可以運(yùn)行一段指數(shù)級(jí)的長(zhǎng)時(shí)間,也可以陷入非全局最小值的某個(gè)位置。如果因數(shù)太大,則模型可能會(huì)完全錯(cuò)過目標(biāo)點(diǎn),然后發(fā)散。
盡管固定比率可能是理想的,但自適應(yīng)學(xué)習(xí)比率會(huì)減少前面提到的問題的機(jī)會(huì)。也就是說,該系數(shù)將根據(jù)當(dāng)前梯度,當(dāng)前權(quán)重的大小或其他可能影響模型下一步來尋找最佳權(quán)重的地方而變化。
可以看出,DNN是基于微積分和一些統(tǒng)計(jì)數(shù)據(jù)構(gòu)建的。評(píng)估這些深度技術(shù)過程背后的數(shù)學(xué)思想是有用的,因?yàn)樗梢詭椭藗兞私饽P椭姓嬲l(fā)生的事情,并且可以導(dǎo)致整體上開發(fā)出更好的模型。
評(píng)論