圍觀:實操5種循環神經網絡案例結果分享

作者一直想嘗試不同類型的循環神經網絡(RNN),最近實現了這個夢想。以下是作者嘗試的不同的RNN情況列表。

案例a:“香草”式遞歸神經網絡("香草"是一種常見的"常規"或"沒有任何花哨的東西"的委婉說法)

案例b:Multi-Stream遞歸神經網絡

案例c:Concatenated 遞歸神經網絡

案例d:Internal Convolutional 卷積遞歸神經網絡

案例e:Lag 2遞歸神經網絡

香草遞歸神經網絡

圍觀:實操5種循環神經網絡案例結果分享

作者希望實施的RNN總共有5個不同的案例。但是,為了完全理解所有的實現方式,最好對"香草"RNN有一定深入的瞭解。

案例a:香草遞歸神經網絡(結果)

圍觀:實操5種循環神經網絡案例結果分享

紅框→3卷積層

橙框→全局平均池化層和SoftMax

綠色圓圈→隱藏單位時間o

藍色圓圈→輸入4個時間戳

黑框→帶4個時間戳的遞歸神經網絡

如上所述,基礎網絡是簡單的RNN結合卷積神經網絡來進行分類。RNN的時間戳為4,這意味著我們將在每個時間戳都給網絡4種不同的輸入。要做到這一點,作者將在原始圖像上添加一些噪點。

圍觀:實操5種循環神經網絡案例結果分享

藍線→隨著時間的推移的訓練成本

橙線→隨著時間推移的訓練準確性

綠線→隨著時間推移的測試成本

紅線→隨著時間推移的測試準確性

如上所示,我們的基礎網絡運行良好。現在的問題是其他方法如何執行,它能夠比我們的基礎網絡更好地規範化嗎?

案例b:Multi-Stream遞歸神經網絡(想法/結果)

圍觀:實操5種循環神經網絡案例結果分享

紅框→3卷積層

橙框→全局平均池化層和SoftMax

綠色圓圈→隱藏單位時間o

藍色圓圈→卷積輸入流

黃色圓圈→完全連接的網絡流

黑框→帶4個時間戳的遞歸神經網絡

這個RNN背後的想法僅僅是為RNN提供不同的數據表示。在我們的基礎網絡中,我們有原始圖像或者添加了一些噪音的圖像。

圍觀:實操5種循環神經網絡案例結果分享

紅框→另外四個CNN / FNN圖層來"處理"輸入

藍框→在每個不同的時間戳創建輸入

如下圖所示,我們的RNN通過[batch_size,26,26,1]將寬度和高度減少2用來輸入張量大小。作者希望數據的不同表示可以用作正則化。(類似於數據增加)

圍觀:實操5種循環神經網絡案例結果分享

藍線→隨著時間推移的訓練成本

橙線→隨著時間推移的訓練準確性

綠線→隨著時間推移的測試成本

紅線→隨著時間推移的測試準確性

如上所示,網絡的表現相當不錯,並且在測試圖像上的性能比基礎網絡高出1%。

案例c:Concatenated 遞歸神經網絡(想法/結果)

圍觀:實操5種循環神經網絡案例結果分享

紅框→3卷積層

橙框→全局平均池和SoftMax

綠色圓圈→隱藏單位時間o

藍色圓圈→輸入4個時間戳

黑框→帶4個時間戳的遞歸神經網絡

黑色彎曲箭頭→連接輸入每個時間戳

這種方法非常簡單,其思想是每次標記不同的特性時都會被提取出來,並且隨著時間的推移,網絡可能會有具有更多有用的特性。(複發性層)

圍觀:實操5種循環神經網絡案例結果分享

藍線→隨著時間推移的訓練成本

橙線→隨著時間推移的訓練準確性

綠線→隨著時間推移的測試成本

紅線→隨著時間推移的測試準確性

不幸的是,這是一次完全失敗的案例。作者猜想這個空的隱藏值對網絡的良好運行沒有幫助。

案例d:Internal Convolutional 遞歸神經網絡(想法/結果)

圍觀:實操5種循環神經網絡案例結果分享

紅框→3卷積層

橙框→全局平均池和SoftMax

綠色圓圈→隱藏單位時間o

藍色圓圈→輸入4個時間戳

黑框→帶4個時間戳的遞歸神經網絡

灰色箭頭→在傳遞到下一個時間戳之前執行內部卷積

如上圖所示,該網絡與我們的基礎網絡具有完全相同的輸入。不過這次我們將在數據的內部表示中執行額外的卷積操作。

圍觀:實操5種循環神經網絡案例結果分享

圍觀:實操5種循環神經網絡案例結果分享

上圖(紅框)→如果當前內部圖層不是無,我們將執行額外的卷積操作。

實際上作者並沒有案例背後的理論原因,作者只是想看看它是否適用於LOL。

圍觀:實操5種循環神經網絡案例結果分享

藍線→隨著時間推移的訓練成本

橙線→隨著時間推移的訓練準確性

綠線→隨著時間推移的測試成本

紅線→隨著時間推移的測試準確性

如上圖所述,網絡在融合方面做得很好,但遺憾的是它無法超越我們的基礎網絡。

案例e:Lag 2遞歸神經網絡(想法/結果)

圍觀:實操5種循環神經網絡案例結果分享

紅框→3卷積層

橙框→全局平均池和SoftMax

綠色圓圈→隱藏單位時間o

藍色圓圈→輸入4個時間戳

黑框→帶4個時間戳的遞歸神經網絡

紫色圓圈→隱藏狀態滯後2

在傳統的RNN設置中,我們只依靠最前面的值來確定當前值。有一段時間,作者認為沒有理由將回顧時間(或滯後)限制為1,我們可以將這個想法延伸到滯後3或滯後4等。(為了簡單起見,作者選擇了滯後2)

圍觀:實操5種循環神經網絡案例結果分享

藍線→隨著時間推移的訓練成本

橙線→隨著時間推移的訓練準確性

綠線→隨著時間推移的測試成本

紅線→隨著時間推移的測試準確性

謝天謝地,這一網絡比基礎網絡做的更好。(但邊距非常小),這種類型的網絡最適合於時間序列數據。

交互式代碼/透明度

圍觀:實操5種循環神經網絡案例結果分享

對於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)


分享到:


相關文章: