深度學習筆記-卷積神經網路CNN與迴圈神經網路RNN有什麼區別?
CNN與RNN本質的不同就是所基於的假設不同,由於核心假設的不同,導致實現方式的差異。
CNN
首先理解什麼叫做卷積,或者說為什麼要翻譯為卷積神經網路。
卷積的定義:https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF/9411006?fr=aladdin
簡單來說,卷積就是兩個相對運動的幾何圖形,在相交到相離之間,重疊的面積。
對於CNN神經網路,有一個基礎的假設——人類的視覺總是會關注視線內特徵最明顯的點
而CNN神經網路是模仿人類處理資訊的過程,我們首先來看一下人類處理資訊的幾個特點。
1)從空間頻率域來看,人眼是一個低通型線性系統,即人眼受幾何尺寸和視覺細胞大小的影響,人眼對太高的頻率不敏感。
2) 人眼對亮度訊號的空間分別率大於對色度訊號的空間解析度。
3) 由於人眼受神經系統的調節,從空間頻率的角度來說,人眼又具有帶通性線性系統的特性。由訊號分析的理論可知,人眼視覺系統對訊號進行加權求和運算,相當於使訊號通過一個帶通濾波器,結果會使人眼產生一種邊緣增強感覺——側抑制效應。
4)影象的邊緣資訊對視覺很重要,特別是邊緣的位置資訊。
5)人眼的視覺掩蓋效應使一種區域性效應,受背景照度,紋理複雜性和訊號頻率的影響。具有不同區域性特性的區域,在保證不被人眼察覺的前提下,允許改變的訊號強度不同。人眼的視覺特性是一個多通道模型。
總結來說就是,人眼對明顯的特徵最敏感,人眼解析食物的時候,相當於用濾鏡掃過影象。
CNN正是利用了這樣的一種特性,來掃描並記錄圖片資訊。
首先生成一個濾鏡,並對影象整體進行掃描過濾,通過這個濾鏡filter解析,得到很多個掃描後的圖片分支結果。
(圖片來源https://en.wikipedia.org/wiki/Convolutional_neural_network#/media/File:Typical_cnn.png)
上圖中的convolutions 就是在進行影象疊加濾鏡掃描,得到一系列結果的工作。
接下來,在得到一系列卷積之後的結果後,我們進行特徵的提取,也就是上圖中的subsampling。
(圖片來源https://en.wikipedia.org/wiki/Convolutional_neural_network)
這裡有個max pool的概念,也就是提取每個小特徵當中,值最大的那個。(值越大說明特徵越明顯,越符合上文說的人眼特性)
通過不停的特徵抽取,得到最後的結果,如果這個結果與我們的預期不符,則計算誤差值,反饋給每一層的卷積網路,進行微調整,再重複上面的步驟。
CNN過程中,對於邊界值的處理。
第一種是在邊界之外填充0,以保證濾鏡可以像多次掃過中間值一樣的掃過邊界值。但是這樣做容易產生噪聲(後新增進去的值)。
第二種是邊界停止,即濾鏡邊緣觸碰到圖片邊界就認為這一側過濾結束。
RNN
RNN的假設——事物的發展是按照時間序列展開的,即前一刻發生的事物會對未來的事情的發展產生影響。所以,在處理過程中,每一刻的輸出都是帶著之前輸出值加權之後的結果。
(圖片來源 http://d3kbpzbmcynnmx.cloudfront.net/wp-content/uploads/2015/09/rnn.jpg)
公式表示t時刻的輸出:
st為當前時刻的輸出,xt為當前時刻的輸入,U為當前時刻輸入值的加權計算,st-1為上一時刻的輸出,W為上一時刻輸出的權重。
通過這樣的計算方式,我們可以認為,當前的結果包含之前的結果,或者說受到之前結果的影響。
但是,RNN對於短期記憶的模型效果很好,卻無法進行長期記憶的輸出,因為權重累加過於龐大,可能導致結果失真、運算效率低下。
所以LSTM應運而生。
(圖片來源https://en.wikipedia.org/wiki/Long_short-term_memory#/media/File:Peephole_Long_Short-Term_Memory.svg)
整個單元內主要包含異或門和與門。
1 異或 1 = 0 認為是相同的資訊,捨棄
1 與 0 = 1 將不同的資訊疊加
通過這兩部運算就能減少我們的資料量,將重複資訊遺忘,將未知資訊記錄下來,將結果更新之後,再輸出。