Progressive Neural Networks 漸進式神經網絡(增量學習)


轉載自https://www.cnblogs.com/zeze/p/8268388.html

 

Progressive NN是第一篇我看到的deepmind做這個問題的。思路就是說我不能忘記第一個任務的網絡,同時又能使用第一個任務的網絡來做第二個任務。

為了不忘記之前的任務,他們的方法簡單暴力:對所有的之前任務的網絡,保留並且fix,每次有一個新任務就新建一個網絡(一列)。

而為了能使用過去的經驗,他們同樣也會將這個任務的輸入輸入進所有之前的網絡,並且將之前網絡的每一層的輸出,與當前任務的網絡每一層的輸出一起輸入下一層。

 

每次有一個新的任務,就重新添加一列,然后將前幾列的輸出fuse到當前列來。

比如說,如果兩個任務的low level特征類似,則當前任務網絡中的前幾層可能完全沒有用處,只需要用之前任務的輸出就夠了。

但是一個很明顯的問題是,這個網絡不能學到自己的low level feature的網絡,然后使用之前網絡的high level決策。因為1,當low level不一樣的時候,將輸入輸入之前的網絡就不make sense了;更重要的是,當前列的輸入根本無法輸入進之前列的網絡,只復用高層網絡根本無從談起。

所以這里的限制就是,兩個任務需要有類似的low level feature。當然啦,這篇文章還是有很酷的視頻,也確實用到了一些任務上。

 

用幾句話就能夠說明白這個所謂的progressive neural networks到底是什么了!簡直不能再簡單!

 

就是:

Step 1:構造一個多層的神經網絡,訓練某一個任務,上圖第一列

Step 2:構建第二個多層的神經網絡,然后固定第一列也就是上一個任務的神經網絡,將上一列的神經網絡的每一層(注意是每一層)都通過a處理連接到第二列的神經網絡的每一層作為額外輸入。也就是第二個神經網絡每一層除了原始的輸入,還加上經過a處理的之前的神經網絡對應層的輸入。

Step 3:構建第三個多層神經網絡,訓練第三個任務,將前兩列的神經網絡固定,然后同上一樣的方法連接到第三個神經網絡中。

上圖的線很清楚的表示了這個過程。

這就是把神經網絡和神經網絡連起來的方法!

a的作用其實主要是為了降維和輸入的維度統一(與原始輸入匹配),用簡單的MLP來表示!

除此之外,增強學習算法沒有任何變化。文章中使用A3C算法,一個比DQN強4倍的算法!

總的來說,就是抽取之前的神經網絡的信息與當前的輸入信息融合,然后訓練!訓練的效果就可以和沒有加前面的神經網絡的方法對比,如果效果好很多說明前面的神經網絡有用,知識有遷移!

這種方法的好處就是之前的訓練都保留,不至於像fine tune那樣更改原來的網絡!而且每一層的特征信息都能得到遷移,並且能夠更好的具化分析。

缺點就是參數的數量會隨着任務的增加而大量增加!並且不同任務的設計需要人工知識。


免責聲明!

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



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