深度學習打卡作業

分析前饋神經網絡、卷積神經網絡和循環神經網絡的異同點。

前饋神經網絡

常規前饋神經網絡(FNN)。該網絡不考慮輸入數據可能具備的任何特定結構。儘管如此,它仍是非常強大的機器學習工具,尤其是與先進的正則化技術一起使用時。這些技術(稍後將會介紹)幫助解決人們處理「深度」網絡時遇到的訓練問題:神經網絡有大量隱藏層,隱藏層非常難以訓練(梯度消失和過擬合問題)。

前饋神經網絡架構

FNN 由一個輸入層、一個(淺層網絡)或多個(深層網絡,因此叫作深度學習)隱藏層,和一個輸出層構成。每個層(除輸出層以外)與下一層連接。這種連接是 FNN 架構的關鍵,具有兩個主要特徵:加權平均值和激活函數。接下來我們將深入講解這些特徵。

FNN 很重要的一個概念就是加權平均過程,使用Sigmoid 函數,tanh,Rule函數作爲激活函數。

 

卷積神經網絡

CNN 由若干個卷積和池化操作組成,通常跟隨着一個或多個全連接層(與傳統的 FNN 層相似)。

卷積運算是一種數學計算,和矩陣相乘不同,卷積運算可以實現稀疏相乘和參數共享,可以壓縮輸入端的維度。和普通DNN不同,CNN並不需要爲每一個神經元所對應的每一個輸入數據提供單獨的權重。

與池化(pooling)相結合,CNN可以被理解爲一種公共特徵的提取過程,不僅是CNN大部分神經網絡都可以近似的認爲大部分神經元都被用於特徵提取。

應用場景:雖然我們一般都把CNN和圖片聯繫在一起,但事實上CNN可以處理大部分格狀結構化數據(Grid-like Data)。舉個例子,圖片的像素是二維的格狀數據,時間序列在等時間上抽取相當於一維的的格狀數據,而視頻數據可以理解爲對應視頻幀寬度、高度、時間的三維數據。

 

循環神經網絡

雖然很多時候我們把這兩種網絡都叫做RNN,但事實上這兩種網路的結構事實上是不同的。而我們常常把兩個網絡放在一起的原因是:它們都可以處理有序列的問題,比如時間序列等。

舉個最簡單的例子,我們預測股票走勢用RNN就比普通的DNN效果要好,原因是股票走勢和時間相關,今天的價格和昨天、上週、上個月都有關係。而RNN有“記憶”能力,可以“模擬”數據間的依賴關係(Dependency)。

爲了加強這種“記憶能力”,人們開發各種各樣的變形體,如非常著名的Long Short-term Memory(LSTM),用於解決“長期及遠距離的依賴關係”。如下圖所示,左邊的小圖是最簡單版本的循環網絡,而右邊是人們爲了增強記憶能力而開發的LSTM。



同理,另一個循環網絡的變種 - 雙向循環網絡(Bi-directional RNN)也是現階段自然語言處理和語音分析中的重要模型。開發雙向循環網絡的原因是語言/語音的構成取決於上下文,即“現在”依託於“過去”和“未來”。單向的循環網絡僅着重於從“過去”推出“現在”,而無法對“未來”的依賴性有效的建模。

遞歸神經網絡和循環神經網絡不同,它的計算圖結構是樹狀結構而不是網狀結構。遞歸循環網絡的目標和循環網絡相似,也是希望解決數據之間的長期依賴問題。而且其比較好的特點是用樹狀可以降低序列的長度,從O(n)降低到O(log(n)),熟悉數據結構的朋友都不陌生。但和其他樹狀數據結構一樣,如何構造最佳的樹狀結構如平衡樹/平衡二叉樹並不容易。

應用場景:語音分析,文字分析,時間序列分析。主要的重點就是數據之間存在前後依賴關係,有序列關係。一般首選LSTM,如果預測對象同時取決於過去和未來,可以選擇雙向結構,如雙向LSTM。



RNN爲何不能像前饋神經網絡一樣的方式進行多樣本並行計算,他是通過怎樣的方式進行並行的

反向延時參數更新,下一時刻參數的更新依賴於上一時刻更新得到的參數,因此無法像前饋神經網絡一樣進行並行計算。

都是向量和矩陣的乘法,沒辦法做到矩陣矩陣的相乘,沒辦法做到batch訓練,無法發揮GPU性能

 

方法:把文本劃分爲N句話的t個樣本,最長的序列爲準,不夠的補0,然後,所有的第一時刻一起運算,所有第二個時刻一起並行化運算。。。

 

參考

https://blog.csdn.net/weixin_41481113/article/details/83270272

https://www.zhihu.com/question/34681168

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章