李宏毅——終身學習lifelong learning
導讀
人從小大大用同一個腦袋學習
但每個作業都訓練同一個神經網絡
爲什麼不用同一個網絡學習不同的任務呢?
終身學習的不同稱呼
LLL(life long learning)
continuous learning
never ending learning
incremental learning
可以做不同的任務
要解決的問題
1、學過的舊東西記下來,但要能學新的
例子:手寫數字辨識
在一個三層的網絡中學習第一個有噪音的任務,在任務1學到的東西可以用在任務2上。任務1的正確率甚至沒有任務2高,這個可以視爲遷移學習。
讓機器學任務2後,任務2的準確率更高,但是任務1的準確率下降
是否是因爲網絡過於簡單?不是的,因爲同時學任務1和任務2,能夠學的比較好
例子:問答系統。
機器學習的訓練資料是:文章、問題、答案
bAbi訓練集有20種不同的題型
機器從第一個任務開始學習,學到第20個。
看機器對題型5的回答,只有剛學完題型5時正確率比較高。
對於其他題型也是這樣的。
如果同時學20個任務的話,正確率還行。
證明網絡有能力學完這些東西,但是沒有做到。
這種現象叫做災難遺忘。
如何解決
1、多任務學習
很難實現,要保存所有的舊資料纔行,學習可能很久(存儲、計算問題)
遺忘問題
Elastic Weight Consolidation(EWC)
基本思想
有一些weight重要,但是有一些不重要;保護重要weight,只調不重要的額。
做法:對於每一個theta,有一個守衛參數b
修改loss,計算當前參數與之前的參數之間的距離。
b用來表示保護theta的程度
可以將theta視爲一種regularization
理解
假設有兩個任務,網絡有兩個參數theta,顏色越深,說明loss越小
學習任務1時,參數從theta0學到thetab,再學習任務2時,繼續訓練,學習到theta* ,此時任務2的loss變小,但是任務2的變大
在EWC中,可以使用某種方法算重要性,比如算微分,theta1比較小,也就是說在theta1上,改變參數,對結果影響不大,b1可以設爲比較小的值,但是theta2微分比較大,b2設置的比較大
移動時,儘量不要動theta2
當然求導不是唯一的方法,可以用其他的方法。
原始EWC的實驗結果
分別訓練A,B,C,橫軸表示在不同任務上的表現,縱軸表示訓練階段
EWC的變形
其他方法
生成數據
生成數據,來緩解數據過多佔用內存的問題
先讓機器學task1,然後學task2,同時要訓練generator,學會生成task1的數據,此時就可以把task1的data丟掉,用生成的數據和task2的放在一起訓練。
但是目前靠機器生成複雜數據,能不能做的起來尚待研究
新增類
如果訓練任務需要不同的網絡呢?比如類增量問題
knowledge transfer
不爲每個任務訓練模型,讓不同模型之間互通有無,也可以節省模型開銷空間
life-long vs transfer
不同點:在transfer時,只在乎任務2,不在乎任務1點表現,但是life-long希望都表現好
如何衡量life-long learning
通常用matrix,每個row代表學習的階段,column表示在任務X上的表現。
Accuracy是最後一行的平均
多不會遺忘:backward Transfer,學到某個階段時減去剛學過時的表現,求平均
(通常爲負)
forward Transfer:表示能transfer到沒學的任務的表現
GEM
gradient Episodic Memory
在新的任務算出gradient,再計算之前的Gradient的方向。算出現在移動的方向。這個方向不會傷害到原有的任務,而且和當前gradient的方向越近越好。
這種需要存一些過去的數據。
它的表現:後續的學習不會影響之前的任務,甚至能有所改善
Model Expansion
有可能真的學不下了,能不能擴張模型
模型擴張的速度應該比任務來的速度慢。這個是個尚待研究的問題,沒有太多研究。
Progressive Neural Network
一個網絡做任務1,網絡1的輸出當作網絡2的輸入,網絡1、2的輸出都當作網絡3的輸入
實操上做不了太多任務
expert gate
每個task訓練一個網絡,每個新任務進來,看和哪個舊任務最像,希望做到knoledege transfer。這裏模型擴張的速度和新任務到來的速度一樣,在任務較多的時候也是會有比較多的模型
Net2Net
讓網絡長寬
直接加neuron的話,可能會加噪聲,所以如何加神經元,但是不引入噪聲很重要
做法:把神經元分裂,w仍然是c和d,但是分裂後變爲f/2,但是問題是加入的神經元的gradient都一樣,所以要加一個小小的noise
也不是每進來一個任務就加網絡,而是看訓練效果怎麼樣,決定是否expand
curiculum learning
在未來可能會有的問題
這些任務的順序怎麼排序
例子中,先學任務1,再學任務2,效果不好
但是先學任務2,再學任務1時,一開始任務1效果不好,但是沒有忘記
所以說明,是否發生遺忘,和任務排序有非常重要的關係。
已有的研究