CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構的區別


   先說DNN,從結構上來說他和傳統意義上的NN(神經網絡)沒什么區別,但是神經網絡發展時遇到了一些瓶頸問題。一開始的神經元不能表示異或運算,科學家通過增加網絡層數,增加隱藏層可以表達。並發現神經網絡的層數直接決定了它對現實的表達能力。但是隨着層數的增加會出現局部函數越來越容易出現局部最優解的現象,用數據訓練深層網絡有時候還不如淺層網絡,並會出現梯度消失的問題。我們經常使用sigmoid函數作為神經元的輸入輸出函數,在BP反向傳播梯度時,信號量為1的傳到下一層就變成0.25了,到最后面幾層基本無法達到調節參數的作用。值得一提的是,最近提出的高速公路網絡和深度殘差學習避免梯度消失的問題。DNN與NN主要的區別在於把sigmoid函數替換成了ReLU,maxout,克服了梯度消失的問題。下圖附有深度網絡DNN結構圖

 

 

  深度學習的深度沒有固定的定義,2006年Hinton解決了局部最優解問題,將隱含層發展到7層,這達到了深度學習上所說的真正深度。不同問題的解決所需要的隱含層數自然也是不相同的,一般語音識別4層就可以,而圖像識別20層屢見不鮮。但隨着層數的增加,又出現了參數爆炸增長的問題。假設輸入的圖片是1K*1K的圖片,隱含層就有1M個節點,會有10^12個權重需要調節,這將容易導致過度擬合和局部最優解問題的出現。為了解決上述問題,提出了CNN。

  CNN最大的利用了圖像的局部信息。圖像中有固有的局部模式(比如輪廓、邊界,人的眼睛、鼻子、嘴等)可以利用,顯然應該將圖像處理中的概念和神經網絡技術相結合,對於CNN來說,並不是所有上下層神經元都能直接相連,而是通過“卷積核”作為中介。同一個卷積核在所有圖像內是共享的,圖像通過卷積操作后仍然保留原先的位置關系。卷積神經網絡隱含層,通過一個例子簡單說明卷積神經網絡的結構。假設m-1=1是輸入層,我們需要識別一幅彩色圖像,這幅圖像具有四個通道ARGB(透明度和紅綠藍,對應了四幅相同大小的圖像),假設卷積核大小為100*100,共使用100個卷積核w1到w100(從直覺來看,每個卷積核應該學習到不同的結構特征)。用w1在ARGB圖像上進行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個像素是四幅輸入圖像左上角100*100區域內像素的加權求和,以此類推。同理,算上其他卷積核,隱含層對應100幅“圖像”。每幅圖像對是對原始圖像中不同特征的響應。按照這樣的結構繼續傳遞下去。CNN中還有max-pooling等操作進一步提高魯棒性。

 一個典型的卷積神經網絡結構,注意到最后一層實際上是一個全連接層。在這個例子里,我們注意到輸入層到隱含層的參數個數瞬間降低到了,這使得我們能夠用已有的訓練數據得到良好的模型。適用於圖像識別,正是由於模型限制參數了個數並挖掘了局部結構的這個特點,順着同樣的思路,利用語音語譜結構中的局部信息,CNN照樣能應用在語音識別中。CNN結構圖如下:

 

 

  全連接的DNN還存在着另一個問題——無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。對了適應這種需求,就出現了另一種神經網絡結構——循環神經網絡RNN。在普通的全連接網絡或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網絡(Feed-forward Neural Networks)。而在RNN中,神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!表示成圖就是這樣的:

 

 

 

 我們可以看到在隱含層節點之間增加了互連。為了分析方便,我們常將RNN在時間上進行展開,得到如圖6所示的結構

 

 

RNN可以看成一個在時間上傳遞的神經網絡,它的深度是時間的長度!正如我們上面所說,“梯度消失”現象又要出現了,只不過這次發生在時間軸上。對於t時刻來說,它產生的梯度在時間軸上向歷史傳播幾層之后就消失了,根本就無法影響太遙遠的過去。因此,之前說“所有歷史”共同作用只是理想的情況,在實際中,這種影響也就只能維持若干個時間戳。為了解決時間上的梯度消失,機器學習領域發展出了長短時記憶單元。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM