深度學習背後的數學思想



深度神經網絡(DNN)本質上是經過具備多個鏈接的感知器而造成的,其中感知器是單個神經元。能夠將人工神經網絡(ANN)視爲一個系統,其中包含沿加權路徑饋入的一組輸入。而後處理這些輸入,併產生輸出以執行某些任務。隨着時間的流逝,ANN「學習」了,而且開發了不一樣的路徑。各類路徑可能具備不一樣的權重,而且在模型中,比那些產生較少的理想結果的路徑,以及被發現更重要(或產生更理想的結果)的路徑分配了更高的權重。javascript

在DNN中,若是全部輸入都密集鏈接到全部輸出,則這些層稱爲密集層。此外,DNN能夠包含多個隱藏層。隱藏層基本上是神經網絡輸入和輸出之間的點,激活函數對輸入的信息進行轉換。之因此稱其爲隱藏層,是由於沒法從系統的輸入和輸出中直接觀察到這一點。神經網絡越深,網絡能夠從數據中識別的越多,輸出的信息越多。html

可是,儘管目標是從數據中儘量多地學習,可是深度學習模型可能會遭受過分擬合的困擾。當模型從訓練數據(包括隨機噪聲)中學習太多時,就會發生這種狀況。而後,模型能夠肯定數據中很是複雜的模式,但這會對新數據的性能產生負面影響。訓練數據中拾取的噪聲不適用於新數據或看不見的數據,而且該模型沒法歸納發現的模式。非線性模型在深度學習模型中也很是重要,儘管該模型將從具備多個隱藏層的內容中學到不少東西,可是將線性形式應用於非線性問題將致使性能降低。java


如今的問題是,「這些層如何學習東西?」 好吧,咱們能夠在這裏將ANN應用於實際場景以解決問題並瞭解如何訓練模型以實現其目標。案例分析以下:python

        在當前的大流行中,許多學校已經過渡到虛擬學習,這使一些學生擔憂他們經過課程的機會。「我將經過本課程」這個問題是任何人工智能系統都應該可以解決的問題。git

        爲簡單起見,讓咱們考慮該模型只有3個輸入:學生參加的講座的數量,在做業上花費的時間以及整個講座中互聯網鏈接丟失的次數。該模型的輸出將是二進制分類。學生要麼經過了課程,要麼沒有經過,其實就是0和1。如今到了學期期末,學生A參加了21堂課,花了90個小時進行做業,而且在整個學期中有7次失去互聯網鏈接。這些輸入信息被輸入到模型中,而且輸出預測學生有5%的機會經過課程。一週後,發佈了最終成績,學生A經過了該課程。那麼,模型的預測出了什麼問題?算法

        從技術上講,沒有任何問題。該模型原本能夠按目前開發的方式工做。問題在於該模型不知道發生了什麼。咱們將在路徑上初始化一些權重,可是該模型當前不知道對與錯。所以,權重不正確。這就是學習的主要源頭,其中的想法是模型須要掌握錯誤的時間的規律,咱們經過計算某種形式的「損失」來作到這一點。計算得出的損失取決於當前的問題,可是一般會涉及使預測輸出與實際輸出之間的差別最小化。編程


在上述狀況下,只有一名學生和一個錯誤點能夠減小到最小。可是,一般不是這種狀況。如今,若是考慮將多個學生和多個差別最小化,那,總損失一般將計算爲全部預測和實際觀察值之間的差別的平均值。微信

回想一下,正在計算的損失取決於當前的問題。所以,因爲咱們當前的問題是二元分類(0和1分類),所以適當的損失計算將是交叉熵損失,該功能背後的想法是,它比較學生是否將經過課程的預測分佈與實際分佈,並嘗試最小化這些分佈之間的差別。網絡

取而代之的是,咱們再也不但願預測學生是否會經過該課程,而是但願預測他們將在該課程中得到的分數。所以,交叉熵損失將再也不是一種合適的方法。相反,均方偏差損失將更合適。此方法適用於迴歸問題,其思想是將嘗試最小化實際值和預測值之間的平方差。app


如今咱們瞭解了一些損失函數(這裏有損失函數的介紹深度學習基礎:數學分析基礎與Tensorflow2.0迴歸模型   文章末尾可下載PDF書籍),咱們能夠進行損失優化和模型訓練。擁有良好DNN的關鍵因素是擁有適當的權重。損耗優化應嘗試找到一組權重W,以最小化計算出的損耗。若是隻有一個重量份量,則能夠在二維圖上繪製重量和損耗,而後選擇使損耗最小的重量。可是,大多數DNN具備多個權重份量,而且可視化n維圖很是困難。

取而代之的是,針對全部權重計算損失函數的導數,以肯定最大上升的方向。如今,模型能夠理解向上和向下的方向,而後向下移動,直到達到局部最小值的收斂點。完成這一體面操做後,將返回一組最佳權重,這就是DNN應該使用的權重(假設模型開發良好的話)。

計算此導數的過程稱爲反向傳播,它本質上是來自微積分的鏈式法則。考慮上面顯示的神經網絡,第一組權重的微小變化如何影響最終損失?這就是導數或梯度試圖解釋的內容。可是,第一組權重被饋送到隱藏層,而後隱藏層又具備另外一組權重,從而致使預測的輸出和損失。所以,還應考慮權重變化對隱藏層的影響。如今,這些是網絡中僅有的兩個部分。可是,若是要考慮的權重更多,則能夠經過應用從輸出到輸入的鏈式規則來繼續此過程。



訓練DNN時要考慮的另外一個重要因素是學習率(能夠看作是數學中的收斂因子)。當模型行進以找到最佳的權重集時,它須要以某種因素來更新其權重。儘管這彷佛微不足道,可是肯定模型移動的因素很是很是必要。若是因子過小,則該模型能夠運行一段指數級的長時間,也能夠陷入非全局最小值的某個位置。若是因數太大,則模型可能會徹底錯過目標點,而後發散。

儘管固定比率多是理想的,但自適應學習比率會減小前面提到的問題的機會。也就是說,該係數將根據當前梯度,當前權重的大小或其餘可能影響模型下一步來尋找最佳權重的地方而變化。





能夠看出,DNN是基於微積分和一些統計數據構建的。評估這些深度技術過程背後的數學思想是有用的,由於它能夠幫助人們瞭解模型中真正發生的事情,而且能夠致使總體上開發出更好的模型。可是,即便不容易理解這些概念,對於大多數深度模型算法程序也會附帶自動區分等工具,不過,若是你想提升你的技術能力,保持學習纔是你屹立在工做崗位上的最好的建議,編程愉快!

參考文獻:

參考文獻及做者Trist'n Josephdigitaltrends.com/cool-tech/what-is-an-artificial-neural-network/deepai.org/machine-learning-glossary-and-terms/hidden-layer-machine-learning#:~:text=In%20neural%20networks%2C%20a%20hidden,input%20enter%20into%20the%20network。ncbi.nlm.nih.gov/pmc/articles/PMC4960264/、、、datascience.com/introduction-to-artificial-neural-networks-ann-1aea15775ef9說明thatstuff.com/introduction-to-neural-networks.htmlneuronetworksanddeeplearning.com/mathsisfun.com/calculus/derivatives-rules.htmld2l.ai/chapter_appendix-mathematics-for-deep-learning/multivariable-calculus.html

其餘引用材料:

deeplearning.mit.edu/math.ucdavis.edu/~kouba/CalcOneDIRECTORY/chainruledirectory/ChainRule.htmlyoutube.com/watch?v=tGVnBAHLApAhttps://www.inertia7.com/tristnyoutube.com/watch?v=aircAruvnKkyoutube.com/watch?v=bfmFfD2RIcghttps://towardsdatascience.com/what-is-deep-learning-adf5d4de9afc


本文分享自微信公衆號 - AI科技與算法編程(kangsinx)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索