作者一直想嘗試不同類型的循環神經網絡(RNN),最近實現了這個夢想。以下是作者嘗試的不同的RNN情況列表。
案例a:“香草”式遞歸神經網絡("香草"是一種常見的"常規"或"沒有任何花哨的東西"的委婉說法)
案例b:Multi-Stream遞歸神經網絡
案例c:Concatenated 遞歸神經網絡
案例d:Internal Convolutional 卷積遞歸神經網絡
案例e:Lag 2遞歸神經網絡
香草遞歸神經網絡
作者希望實施的RNN總共有5個不同的案例。但是,為了完全理解所有的實現方式,最好對"香草"RNN有一定深入的瞭解。
案例a:香草遞歸神經網絡(結果)
紅框→3卷積層
橙框→全局平均池化層和SoftMax
綠色圓圈→隱藏單位時間o
藍色圓圈→輸入4個時間戳
黑框→帶4個時間戳的遞歸神經網絡
如上所述,基礎網絡是簡單的RNN結合卷積神經網絡來進行分類。RNN的時間戳為4,這意味著我們將在每個時間戳都給網絡4種不同的輸入。要做到這一點,作者將在原始圖像上添加一些噪點。
藍線→隨著時間的推移的訓練成本
橙線→隨著時間推移的訓練準確性
綠線→隨著時間推移的測試成本
紅線→隨著時間推移的測試準確性
如上所示,我們的基礎網絡運行良好。現在的問題是其他方法如何執行,它能夠比我們的基礎網絡更好地規範化嗎?
案例b:Multi-Stream遞歸神經網絡(想法/結果)
紅框→3卷積層
橙框→全局平均池化層和SoftMax
綠色圓圈→隱藏單位時間o
藍色圓圈→卷積輸入流
黃色圓圈→完全連接的網絡流
黑框→帶4個時間戳的遞歸神經網絡
這個RNN背後的想法僅僅是為RNN提供不同的數據表示。在我們的基礎網絡中,我們有原始圖像或者添加了一些噪音的圖像。
紅框→另外四個CNN / FNN圖層來"處理"輸入
藍框→在每個不同的時間戳創建輸入
如下圖所示,我們的RNN通過[batch_size,26,26,1]將寬度和高度減少2用來輸入張量大小。作者希望數據的不同表示可以用作正則化。(類似於數據增加)
藍線→隨著時間推移的訓練成本
橙線→隨著時間推移的訓練準確性
綠線→隨著時間推移的測試成本
紅線→隨著時間推移的測試準確性
如上所示,網絡的表現相當不錯,並且在測試圖像上的性能比基礎網絡高出1%。
案例c:Concatenated 遞歸神經網絡(想法/結果)
紅框→3卷積層
橙框→全局平均池和SoftMax
綠色圓圈→隱藏單位時間o
藍色圓圈→輸入4個時間戳
黑框→帶4個時間戳的遞歸神經網絡
黑色彎曲箭頭→連接輸入每個時間戳
這種方法非常簡單,其思想是每次標記不同的特性時都會被提取出來,並且隨著時間的推移,網絡可能會有具有更多有用的特性。(複發性層)
藍線→隨著時間推移的訓練成本
橙線→隨著時間推移的訓練準確性
綠線→隨著時間推移的測試成本
紅線→隨著時間推移的測試準確性
不幸的是,這是一次完全失敗的案例。作者猜想這個空的隱藏值對網絡的良好運行沒有幫助。
案例d:Internal Convolutional 遞歸神經網絡(想法/結果)
紅框→3卷積層
橙框→全局平均池和SoftMax
綠色圓圈→隱藏單位時間o
藍色圓圈→輸入4個時間戳
黑框→帶4個時間戳的遞歸神經網絡
灰色箭頭→在傳遞到下一個時間戳之前執行內部卷積
如上圖所示,該網絡與我們的基礎網絡具有完全相同的輸入。不過這次我們將在數據的內部表示中執行額外的卷積操作。
上圖(紅框)→如果當前內部圖層不是無,我們將執行額外的卷積操作。
實際上作者並沒有案例背後的理論原因,作者只是想看看它是否適用於LOL。
藍線→隨著時間推移的訓練成本
橙線→隨著時間推移的訓練準確性
綠線→隨著時間推移的測試成本
紅線→隨著時間推移的測試準確性
如上圖所述,網絡在融合方面做得很好,但遺憾的是它無法超越我們的基礎網絡。
案例e:Lag 2遞歸神經網絡(想法/結果)
紅框→3卷積層
橙框→全局平均池和SoftMax
綠色圓圈→隱藏單位時間o
藍色圓圈→輸入4個時間戳
黑框→帶4個時間戳的遞歸神經網絡
紫色圓圈→隱藏狀態滯後2
在傳統的RNN設置中,我們只依靠最前面的值來確定當前值。有一段時間,作者認為沒有理由將回顧時間(或滯後)限制為1,我們可以將這個想法延伸到滯後3或滯後4等。(為了簡單起見,作者選擇了滯後2)
藍線→隨著時間推移的訓練成本
橙線→隨著時間推移的訓練準確性
綠線→隨著時間推移的測試成本
紅線→隨著時間推移的測試準確性
謝天謝地,這一網絡比基礎網絡做的更好。(但邊距非常小),這種類型的網絡最適合於時間序列數據。
交互式代碼/透明度
對於Google Colab,你需要一個Google帳戶才能查看代碼,並且你無法在Google Colab中運行只讀腳本,因此請在遊戲環境中製作副本。
案例a的代碼:
(https://colab.research.google.com/drive/1d4cKR1VxFsxyXAck1Mk-zQGvlVuWdOEw)
日誌:(
https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/casea/casea.txt)
案例b的代碼:
(https://colab.research.google.com/drive/1U4zthQ9CmcwAi_mWrKVuTPqf88R0lxZz)
日誌:
(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/caseb/caseb.txt)
案例c的代碼:
(https://colab.research.google.com/drive/1oYvkITUp4WdfAx_xYw_Otg7dJr2rc2mz)
日誌:
(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/casec/casec.txt)
案例d的代碼:
(https://colab.research.google.com/drive/1cQ48nzeBCGm5shW634TQmi9mYLIzP4JE)
日誌:
(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/cased/cased.txt)
案例e的代碼:
(https://colab.research.google.com/drive/1ahrQMwLMhpqQLjO7AHSL3707JdnMH-VN)
日誌:
(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/casee/casee.txt)
閱讀更多 AI中國 的文章