因為最近剛好要對深度學習做個報告,這里做個小結。基本知識網上一搜都能找到,我只按著自己的理解從下面三個部分來說明神經網絡的一些通性。
發展溯源
深度學習發展到今天,經過一波三折,追溯它的起源其實是對它的原理,背景以及未來的發展做些了解,從而更好地去理解神經網絡演變到深度學習,這些算法之間的通性。
先來看一張圖:
圖中可見三個深度學習發展的低谷,同時也是興起的轉折點,先來看1943年的MCP人工神經元模型。
這個構架就已經涵蓋了現今很多神經網絡的特點,權重與輸入的乘積之和,通過激活函數輸出等等,1958年Rosenblatt用它發明了單層感知器,但1969年感知器被Minsky證明本質是線性模型,發展就此擱淺。
到1986年Hinton發明了BP神經網絡,采用Sigmoid函數進行非線性映射,有效解決非線性分類的問題,但是在1991年BP算法被指出有梯度消失的問題,陷入冰點。
2006年Hinton提出了深層網絡訓練中梯度消失問題的解決方案:無監督預訓練對權值進行初始化+有監督訓練微調。至此,深度學習就不斷地引起人們的重視,蓬勃發展至今。參考
每一層的輸入輸出
先來看幾個網絡。
BP神經網絡
可以看到,輸入是上一層輸出的值分別與權重相乘的和,而輸出是輸入通過激活函數變化后的值,BP中常用的激活函數是Sigmoid函數。
深度信念網絡(DBNs)
這個網絡是由多層的受限玻爾茲曼機(RBM)組成,多層的無監督學習和頂層的有監督學習。是為了解決BP神經網絡中出現的梯度消失的問題而出現的,從之前的發展歷程中也可以看到。
同樣的,它的輸入輸入輸出和BP神經網絡是一樣的,不過激活函數的選擇可以是不一樣的,不同的是它的訓練機制,我們下面再講。
卷積神經網絡(CNN)
卷積神經網絡適合于用作圖像識別分類上,輸入是一個(pp3)的矩陣,p的大小由圖像的像素大小決定,矩陣上的每一個值都是0-255之間的值,熟悉rgb三色通道的同志們應該了解這個,這也解釋了矩陣厚度為什么為3。
至于輸出,輸入矩陣通過濾波器來對圖像的特征進行提取,不同的濾波器得到的特征不同,得到的輸出也就不同,看下圖。
圖中兩個不同的濾波器,得到了兩個不同的矩陣(綠色),其實這種從高維圖像中提取低維信息的過程也就是卷積的目的。參考1參考2
如何訓練
關于訓練過程,有一個損失函數的概念,BP要使損失函數盡量小,那么需對損失函數求導,求極值,這里采用梯度下降的方式調整權重。但是會有局部極小值和梯度消失的問題。
而深度信念網絡,在受限玻爾茲曼機無標簽訓練的過程中,是希望每一層前向傳播的概率值和后向傳播的概率值盡量相等。可能難以理解,看張圖:
在重構階段,第一隱藏層的激活值成為反向傳遞中的輸入。這些輸入值與同樣的權重相乘,每兩個相連的節點之間各有一個權重,就像正向傳遞中輸入x的加權運算一樣。這些乘積的和再與每個可見層的偏差相加,所得結果就是重構值,亦即原始輸入的近似值。由于RBM權重初始值是隨機決定的,重構值與原始輸入之間的差別通常很大。可以將r值與輸入值之差視為重構誤差,此誤差值隨后經由反向傳播來修正RBM的權重,如此不斷反復,直至誤差達到最小。
經過無監督訓練之后,再通過有監督的訓練隊全局的權重進行調優。參考
卷積神經網絡的訓練也是一個是損失函數最小的過程,但是具體的話我還不理解。以后有機會再來寫。
最后
深度學習深究起來真是要掉不少頭發,網絡安全領域,我還是希望只把它當成數據分析的工具用,比方說深度學習態勢感知,惡意代碼檢測。
還是先學會用吧,轉化成有價值的東西,總比空想強。