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