韓紀(jì)東, 李玉鑑,2
(1.北京工業(yè)大學(xué)信息學(xué)部, 北京 100124; 2.桂林電子科技大學(xué)人工智能學(xué)院, 廣西 桂林 541004)
近年來,神經(jīng)網(wǎng)絡(luò)模型在很多方面已經(jīng)遠遠超過人類大腦,如在圍棋領(lǐng)域AlphaGo戰(zhàn)勝人類頂尖高手[1-2],在大規(guī)模視覺比賽ImageNet中表現(xiàn)出更強的圖像識別能力[3-4],在電子游戲中戰(zhàn)勝專業(yè)頂級游戲玩家[5-6]. 注意,本文中的神經(jīng)網(wǎng)絡(luò)泛指所有的神經(jīng)網(wǎng)絡(luò). 這不僅使得神經(jīng)網(wǎng)絡(luò)模型受到廣泛的關(guān)注,還極大地促進了神經(jīng)網(wǎng)絡(luò)模型的進一步發(fā)展,使得神經(jīng)網(wǎng)絡(luò)模型在更多領(lǐng)域取得了更加不凡的成就,如圖像分割[7-10]、目標(biāo)檢測[11-13]、自然語言處理[14-17]、姿態(tài)估計[18-21]等. 神經(jīng)網(wǎng)絡(luò)模型的快速發(fā)展,并沒有使其克服所有缺陷. 神經(jīng)網(wǎng)絡(luò)模型依然有很多不足,如災(zāi)難性遺忘、廣受爭議的黑箱子操作等,但是瑕不掩瑜,神經(jīng)網(wǎng)絡(luò)在很多方面的驚艷表現(xiàn)使它依然備受學(xué)者們的青睞.
一個顯而易見的事實是,人類在學(xué)習(xí)新知識后不會對舊知識發(fā)生災(zāi)難性遺忘,而這既是神經(jīng)網(wǎng)絡(luò)模型的一個重大缺陷,也是它的一個遺憾. 該問題在很久之前就已經(jīng)引起了學(xué)者們的注意. 20世紀(jì)八九十年代,連接網(wǎng)絡(luò)時期,Carpenter等[22]已經(jīng)提到了神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題,并且用了一個形象的比喻來說明,一個出生在波士頓的人搬到洛杉磯,他再回到波士頓時,仍然不會忘記他在波士頓的一切;也即他在洛杉磯學(xué)會新知識后,仍然會記得之前在波士頓的舊知識,而不會發(fā)生災(zāi)難性遺忘;McCloskey等[23]描述了神經(jīng)網(wǎng)絡(luò)在序列學(xué)習(xí)中遇到的災(zāi)難性遺忘問題,在文中稱該問題為災(zāi)難性干擾(catastrophic interference). 注意:當(dāng)時,神經(jīng)網(wǎng)絡(luò)常被稱為連接網(wǎng)絡(luò). 當(dāng)時,有很多學(xué)者提出了相關(guān)的方案試圖解決該問題,如有學(xué)者認(rèn)為災(zāi)難性遺忘是由于存儲在神經(jīng)網(wǎng)絡(luò)內(nèi)部表征重疊造成的,因此使用稀疏向量、輸入正交編碼等方法來避免神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘[24-25];有學(xué)者使用雙網(wǎng)絡(luò)來解決神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘[26-27];也有學(xué)者使用偽訓(xùn)練數(shù)據(jù)預(yù)演的方法來減少神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘[28].
現(xiàn)在,神經(jīng)網(wǎng)絡(luò)模型的參數(shù)量已經(jīng)達到十幾億[16]、幾百億[29],甚至一千多億[17,30];但是神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題依然廣泛存在,如卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)[31-32]、長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)[33]、生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)[34-35]等. 這是由于同20世紀(jì)相比,神經(jīng)網(wǎng)絡(luò)模型的思想變化并不大,變化最大的是訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型所使用的硬件設(shè)備及所使用的數(shù)據(jù)量. 目前,神經(jīng)網(wǎng)絡(luò)模型依然使用反向傳播算法進行反復(fù)迭代優(yōu)化,直到損失函數(shù)的值收斂,具體的優(yōu)化策略可能更豐富了,如自適應(yīng)梯度法(adaptive gradient,AdaGrad)[36]、AdaDelta[37]、 RMSprop[38]、自適應(yīng)矩估計(adaptive moment estimation,Adam)[39]等. 為了克服神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題,最近,很多學(xué)者提出了他們的解決方案. 如Rebuffi等[40]提出iCaRL方法,該方法選擇性地存儲之前任務(wù)的樣本;Sarwar等[41]提出基于部分網(wǎng)絡(luò)共享的方法,該方法使用“克隆- 分支”技術(shù);Li等[42]提出LwF方法,該方法主要以知識蒸餾的方式保留之前任務(wù)的知識;Zeng等[43]提出使用正交權(quán)重修改結(jié)合情景模塊依賴的方法;von Oswald等[44]提出任務(wù)條件超網(wǎng)絡(luò),該網(wǎng)絡(luò)表現(xiàn)出了保留之前任務(wù)記憶的能力;Li等[45]結(jié)合神經(jīng)結(jié)構(gòu)優(yōu)化和參數(shù)微調(diào)提出一種高效簡單的架構(gòu). 也有學(xué)者研究了神經(jīng)網(wǎng)絡(luò)中的訓(xùn)練方法、激活函數(shù)及序列學(xué)習(xí)任務(wù)之間的關(guān)系怎樣影響神經(jīng)網(wǎng)絡(luò)中的災(zāi)難性遺忘的問題,如Goodfellow等[46]就發(fā)現(xiàn)dropout方法在適應(yīng)新任務(wù)和記住舊任務(wù)中表現(xiàn)最好,激活函數(shù)的選擇受兩任務(wù)之間關(guān)系的影響比較大.
目前對神經(jīng)網(wǎng)絡(luò)模型中災(zāi)難性遺忘的研究主要是增量學(xué)習(xí)(incremental learning),在很多情況下,也被稱為持續(xù)學(xué)習(xí)(continous learning)或終身學(xué)習(xí)(lifelong learning)等. 這里如沒有特別說明統(tǒng)一稱為增量學(xué)習(xí),但是有時為與原論文保持一致也可能使用持續(xù)學(xué)習(xí)或終身學(xué)習(xí). 還有一些其他神經(jīng)網(wǎng)絡(luò)模型方法對災(zāi)難性遺忘問題的研究非常有意義且與增量學(xué)習(xí)有一定的交叉,如多任務(wù)學(xué)習(xí)(multi-task learning)、遷移學(xué)習(xí)(transfer learning). 多任務(wù)學(xué)習(xí)是同時學(xué)習(xí)多個任務(wù),利用不同任務(wù)的互補,相互促進對方的學(xué)習(xí)[47];遷移學(xué)習(xí)主要是將之前學(xué)習(xí)的知識遷移到新任務(wù)上[48],但是這種學(xué)習(xí)方式不關(guān)心學(xué)習(xí)到新知識后是否發(fā)生災(zāi)難性遺忘,也即該方法主要的關(guān)注點是怎樣將之前任務(wù)上的知識遷移到新任務(wù)上. 多任務(wù)學(xué)習(xí)、遷移學(xué)習(xí)和增量學(xué)習(xí)如圖1所示. 圖1(a)表示多任務(wù)學(xué)習(xí)的一個實例, modela和modelb分別針對taskA、taskB,涵蓋2個模型的藍色背景代表modela和modelb在同時訓(xùn)練2個任務(wù)時的某種聯(lián)系,如共享神經(jīng)網(wǎng)絡(luò)的前幾層等;圖1(b)表示遷移學(xué)習(xí),model1表示已經(jīng)使用任務(wù)taskA的數(shù)據(jù)訓(xùn)練好的模型,model2表示針對任務(wù)taskB的模型且尚未被訓(xùn)練,遷移學(xué)習(xí)就是將model1的知識遷移到model2;圖1(c)表示增量學(xué)習(xí),在t時刻,modelI學(xué)習(xí)任務(wù)taskA,在t+1時刻modelI學(xué)習(xí)任務(wù)taskB,增量學(xué)習(xí)要求modelI在學(xué)習(xí)過taskB后不能忘記taskA.
圖1 多任務(wù)學(xué)習(xí)、遷移學(xué)習(xí)和增量學(xué)習(xí)Fig.1 Multi-task learning, transfer learning and incremental learning
顯然,神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題已經(jīng)成為阻礙人工智能發(fā)展的絆腳石,該問題的解決無疑將是人工智能發(fā)展史上的一個重要里程碑. 為促進該問題的早日解決,本文對神經(jīng)網(wǎng)絡(luò)模型中災(zāi)難性遺忘問題的相關(guān)研究做了一個綜述. 該綜述的主要目的是為了總結(jié)之前在這方面的研究和對該問題提出一些研究建議.
之前的連接網(wǎng)絡(luò)模型中,F(xiàn)rench[49]對連接網(wǎng)絡(luò)的災(zāi)難性遺忘的問題做了一個綜述. 該文獻不僅詳細(xì)地分析了造成連接神經(jīng)網(wǎng)絡(luò)災(zāi)難性遺忘的原因,而且介紹了多種解決連接神經(jīng)網(wǎng)絡(luò)災(zāi)難性遺忘問題的方案. 該作者最后指出解決神經(jīng)網(wǎng)絡(luò)的災(zāi)難性遺忘問題需要2個單獨的相互作用的單元,一個用于處理新信息,另一個用于存儲先前學(xué)習(xí)的信息. 但是該文獻作者分析的是早期的神經(jīng)網(wǎng)絡(luò)模型,隨著神經(jīng)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,現(xiàn)在的神經(jīng)網(wǎng)絡(luò)模型與連接神經(jīng)網(wǎng)絡(luò)模型在神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)、深度以及優(yōu)化策略,甚至是訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的數(shù)據(jù)量等方面都有很大不同.
最近,為了總結(jié)對神經(jīng)網(wǎng)絡(luò)模型中災(zāi)難性遺忘的研究,也有部分學(xué)者做了一些綜述性研究. de Lange等[50]對持續(xù)學(xué)習(xí)中的圖像分類任務(wù)做了一個對比性研究,首先對持續(xù)學(xué)習(xí)的方法進行了綜合的介紹,如介紹很多持續(xù)學(xué)習(xí)的方法,將各種持續(xù)學(xué)習(xí)的方法進行了總結(jié)并歸為基于回放的方法、基于正則化的方法和基于參數(shù)隔離的方法;其次,為了公正地對比不同持續(xù)學(xué)習(xí)方法的效果,還提出了一種對比性研究持續(xù)學(xué)習(xí)性能的框架. Lesort等[51]綜合性地研究了機器人中的增量學(xué)習(xí). Parisi等[52]對基于神經(jīng)網(wǎng)絡(luò)的持續(xù)性終身學(xué)習(xí)做了一個綜述,首先對生物的終身學(xué)習(xí)做了詳細(xì)的介紹,如人類怎樣解決彈性- 穩(wěn)定性困境、赫布彈性穩(wěn)定性、大腦互補的學(xué)習(xí)系統(tǒng),這是該綜述與其他類似綜述最大的不同;然后,分析了神經(jīng)網(wǎng)絡(luò)模型中的終身學(xué)習(xí)方法,并將其分為:正則化方法、動態(tài)架構(gòu)方法和互補學(xué)習(xí)系統(tǒng)及記憶回放. Belouadah等[53]對視覺任務(wù)的類增量學(xué)習(xí)做了一個綜合性研究,提出了增量學(xué)習(xí)的6個通用屬性,即復(fù)雜度、內(nèi)存、準(zhǔn)確率、及時性、彈性和伸縮性,并將增量學(xué)習(xí)的方法分為基于微調(diào)的方法和基于固定表征的增量學(xué)習(xí)方法. Masana等[54]提出了類增量學(xué)習(xí)所面臨的挑戰(zhàn),即權(quán)重偏移、激活值偏移、任務(wù)間混淆和新舊任務(wù)失衡,并將類增量學(xué)習(xí)分為3類,基于正則化的方法、基于預(yù)演的方法和基于偏置- 校正的方法. 文獻[50-54]雖然都對神經(jīng)網(wǎng)絡(luò)中的克服災(zāi)難性遺忘的方法做了綜述性研究,但是它們均有一定的局限性,如文獻[50]僅介紹了持續(xù)學(xué)習(xí)中關(guān)于圖像分類的方法,且用來對比不同持續(xù)學(xué)習(xí)方法性能的框架也是針對圖像分類任務(wù)的,文獻[51]僅研究了針對機器人的增量學(xué)習(xí). 另外,文獻[50-54]都沒有涉及生成對抗模型或強化學(xué)習(xí)克服災(zāi)難性遺忘方法的介紹.
針對神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題,相關(guān)學(xué)者提出了很多解決方法. 盡管相關(guān)文獻大都聲稱提出的方法可以克服災(zāi)難性遺忘的問題,但實際上僅是不同程度地減緩神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題,為了表述的嚴(yán)謹(jǐn),本章的標(biāo)題為減緩災(zāi)難性遺忘問題的方法. 由第1節(jié)的內(nèi)容可以看出,不同的綜述文獻依據(jù)不同的規(guī)則,對減緩災(zāi)難性遺忘問題方法的分類并不相同,本節(jié)將減緩災(zāi)難性遺忘問題的方法分為4類,即基于樣本的方法、基于模型參數(shù)的方法、基于知識蒸餾的方法和其他方法.
為方便下文的敘述,這里對下文中的符號進行統(tǒng)一,符號及其含義具體如表1所示.
表1 符號及其含義
圖2 參數(shù)共享模塊和特定任務(wù)模塊Fig.2 Parameter sharing module and task-specific module
注意,由于增加新任務(wù)與增加新類非常相似,在下文中不做特別區(qū)分,均使用增加新任務(wù)表示;有些時候為與原論文表述一致,也會使用增加新類表示.
本文將直接或間接地用到Tdatapre樣本集中數(shù)據(jù)的方法稱為基于樣本的方法. 直接使用即為使用額外的內(nèi)存存儲Tdatapre樣本集中的部分?jǐn)?shù)據(jù)Tdataselect,在學(xué)習(xí)新任務(wù)時,將Tdataselect與Tdatanew混合,最后使用混合后的數(shù)據(jù)訓(xùn)練Modeltarget. 間接使用主要指生成偽數(shù)據(jù)或保存Tdatapre的特征,然后使用它們與Tdatanew或Tdatanew的特征混合訓(xùn)練Modeltarget. 在文獻[50,52]中也將該方法稱為回放. 注意:有些方法中雖然用到了Tdatapre中的部分樣本數(shù)據(jù),考慮到論文作者在克服災(zāi)難性遺忘中的主要思想是使用其他方法,因此這部分方法并沒有被認(rèn)為是基于樣本的方法.
2.1.1 直接使用樣本的方法
Guo等[56]為解決增量學(xué)習(xí)中的災(zāi)難性遺忘問題,提出了支持樣本表征的增量學(xué)習(xí)(exemplar-supported representation for incremental learning,ESRIL)方法. ESRIL包括3個部分:1) 記憶感知突觸(memory aware synapses,MAS)模塊,該模塊使用ImageNet數(shù)據(jù)集預(yù)訓(xùn)練的深度卷積神經(jīng)網(wǎng)絡(luò)(deep convolutional neural network,DCNN),是為了維持用之前任務(wù)Taskpre數(shù)據(jù)集訓(xùn)練的特征;2) 基于樣例的字空間聚類(exemplar-based subspace clustering,ESC)模塊,該模塊是為了提取每個任務(wù)中的樣本;3) 多質(zhì)心最近類(the nearest class multiple centroids,NCMC)模塊,該模塊作為一個輔助分類器,當(dāng)增加的新類數(shù)據(jù)與ImageNet數(shù)據(jù)很相似時,使用該分類器替代MAS中全連接層,減少訓(xùn)練時間. ESRIL的關(guān)鍵是每類數(shù)據(jù)中代表樣本的選擇,Guo等采用文獻[57]中的方法進行樣本的選擇,通過迭代的方式不斷優(yōu)化
(1)
Belouadah等[58]提出了一種基于雙內(nèi)存的增量學(xué)習(xí)方法,稱為IL2M. 與普通基于樣本的方法不同,該方法使用2個記憶模塊:1) 第1個記憶模塊存儲之前任務(wù)Taskpre的部分樣本Tdataselect; 2) 記憶模塊存儲之前任務(wù)Taskpre每類樣本初次學(xué)習(xí)時的統(tǒng)計量. 存儲之前任務(wù)Taskpre部分樣本Tdataselect的目的非常簡單,是為了與新任務(wù)Tasknew的數(shù)據(jù)混合,然后作為更新網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù);存儲每類樣本初次學(xué)習(xí)時的統(tǒng)計量,是由于初次訓(xùn)練時,該類樣本的數(shù)據(jù)最全,相應(yīng)地統(tǒng)計量也最準(zhǔn)確;該統(tǒng)計量的作用是為了矯正更新網(wǎng)絡(luò)時由于數(shù)據(jù)失衡(新任務(wù)Tasknew的數(shù)據(jù)多,而之前任務(wù)Taskpre的數(shù)據(jù)少)所造成的偏差.
Isele等[59]提出了一種選擇性存儲所有任務(wù)樣本的方法,避免強化學(xué)習(xí)的災(zāi)難性遺忘. 該方法包括長時存儲模塊和短時存儲模塊. 長時存儲模塊稱為情景記憶,存儲的樣本基于樣本的等級(使用排序函數(shù)對樣本排序). 短時記憶模塊是一個先進先出(first-in-first-out,F(xiàn)IFO)區(qū),該部分不斷刷新,以確保網(wǎng)絡(luò)能接觸到所有的輸入數(shù)據(jù).
2.1.2 間接使用樣本的方法
Hayes等[60]提出了一種別樣的基于樣本的模型,該模型稱為使用記憶索引的回放(replay using memory indexing,REMIND). REMIND模型并不存儲之前任務(wù)Taskpre的原始樣本,而是存儲樣本的特征. REMIND模型將樣本的特征經(jīng)過量化后給予索引號并存儲,增加新任務(wù)Tasknew時,將隨機抽取r個存儲的特征進行回放.
Atkinson等[61]提出了RePR(reinforcement-Pseudo-Rehearsal)模型. RePR模型使用偽數(shù)據(jù)- 預(yù)演的方式避免神經(jīng)網(wǎng)絡(luò)中的災(zāi)難性遺忘. RePR包括短時記憶(short-term memory,STM)和長時記憶模塊(long-term memory,LTM). STM模塊使用當(dāng)前任務(wù)Tasknew的數(shù)據(jù)Tdatanew訓(xùn)練針對當(dāng)前任務(wù)的深度強化網(wǎng)絡(luò)(deep Q-networks,DQNs);LTM模塊包括擁有之前所有任務(wù)Taskpre的知識和能生成之前所有任務(wù)偽數(shù)據(jù)的GAN. 結(jié)合遷移學(xué)習(xí),將DQNs的知識遷移到Modelpre中;在知識遷移的過程中,真實的數(shù)據(jù)使得Modeltarget學(xué)習(xí)到新知識,GAN生成的偽數(shù)據(jù)維持Modelpre中之前任務(wù)的知識.
Atkinson等[62]和Shin等[63]均使用中GAN生成相應(yīng)的偽數(shù)據(jù). Atkinson等[62]使用GAN生成偽圖像代替隨機生成的偽圖像,因為隨機生成的偽圖像明顯不同于自然的圖像,這將導(dǎo)致網(wǎng)絡(luò)能學(xué)習(xí)到很少的之前任務(wù)的知識. 當(dāng)訓(xùn)練第T1任務(wù)時,GAN被訓(xùn)練T1的數(shù)據(jù)集DT1,增加了T2任務(wù)后,GAN被訓(xùn)練使用T2的數(shù)據(jù)集DT2;增加了T3任務(wù)后,該方法顯然就出現(xiàn)了問題,前一步中,GAN僅使用數(shù)據(jù)集DT2,意味著GAN生成的偽數(shù)據(jù)也是T2的偽數(shù)據(jù). 為了不增加內(nèi)存的消耗,作者將GAN也使用偽標(biāo)簽進行訓(xùn)練,這樣GAN生成的數(shù)據(jù)就代表之前所有任務(wù)的數(shù)據(jù). Shin等[63]提出的模型具有雙架構(gòu)〈G,S〉,G是深度生成器模型用來生成偽樣本,S是解算器用來處理每個任務(wù).
基于模型參數(shù)的方法根據(jù)是否直接使用模型參數(shù)進行分類:1) 選擇性參數(shù)共享,該方法直接使用模型的參數(shù); 2) 參數(shù)正則化,該方法約束模型的重要參數(shù)進行小幅度變動,以保證對之前已學(xué)習(xí)知識的記憶.
2.2.1 選擇性共享參數(shù)
該方法在預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型Modelpre后,增加新任務(wù)Tasknew時選擇性地使用神經(jīng)網(wǎng)絡(luò)模型的參數(shù). 雖然神經(jīng)網(wǎng)絡(luò)模型的參數(shù)沒有發(fā)生改變,由于針對不同任務(wù)所選擇性激活神經(jīng)網(wǎng)絡(luò)中參數(shù)的不同,導(dǎo)致不同任務(wù)使用的神經(jīng)網(wǎng)絡(luò)的模型參數(shù)不同,進而使同一個神經(jīng)網(wǎng)絡(luò)模型的參數(shù)適應(yīng)不同的任務(wù). 可以看出,這種方式換一個角度解決神經(jīng)網(wǎng)絡(luò)中的災(zāi)難性遺忘問題. 這種方式的優(yōu)點:1)不需要使用之前任務(wù)Taskpre的數(shù)據(jù)Tdatapre;2)沒有對神經(jīng)網(wǎng)絡(luò)模型進行較大的改進. 這種方式也有一個顯著的缺點,雖然不需要使用先前任務(wù)的數(shù)據(jù)進行訓(xùn)練,但是需要針對不同任務(wù)存儲一個激活參數(shù),即使在相關(guān)文獻中,作者一再強調(diào)存儲的激活參數(shù)很小,但當(dāng)任務(wù)量非常多時,即使逐漸小幅度定量的增加也是非??膳碌?
Mallya等[64]提出了一種共享參數(shù)的方法,該方法不改變預(yù)訓(xùn)練骨干網(wǎng)絡(luò)的參數(shù)Θ,而僅對每個任務(wù)訓(xùn)練掩模m,具體如圖3所示. 以第k個任務(wù)為例進行說明:首先訓(xùn)練得到掩模mask′k;然后通過將掩模mask′k二值化處理得到二值化掩模maskk,如圖3中maskk所示(紅色實方框為表示1,深灰色實方框表示0);最后將二值化掩模maskk與預(yù)訓(xùn)練骨干網(wǎng)絡(luò)的參數(shù)Θbackbone逐元素運算得到適用于任務(wù)k的參數(shù)集Θk,如圖3中Θbackbone和Θk所示(Θbackbone中綠色實方框表示具體的參數(shù),Θk中綠色實方框表示激活的參數(shù),深灰色實方框表示未被激活的參數(shù)).
圖3 共享參數(shù)的方法[64]Fig.3 Method of sharing parameters[64]
(2)
(3)
2.2.2 參數(shù)正則化
使用該方法時,Modelpre在添加新任務(wù)后,需要對神經(jīng)網(wǎng)絡(luò)進行重新訓(xùn)練;但是,由于添加了參數(shù)正則項,神經(jīng)網(wǎng)絡(luò)在訓(xùn)練的過程中會保證對重要參數(shù)進行小幅度的改變,以保證對之前任務(wù)Taskpre的效果.
Kirkpatrick等[66]參考生物對特定任務(wù)的突觸鞏固原理,提出了類似于該原理的人工智能算法,即可塑權(quán)重鞏固(elastic weight consolidation,EWC). 小鼠在學(xué)習(xí)新任務(wù)后,一定比例的突觸會增強,并且能保持一段時間;相應(yīng)地,神經(jīng)網(wǎng)絡(luò)模型的參數(shù)并非全是等價的,有些參數(shù)可能是有用的,有些參數(shù)可能作用非常低甚至是沒有作用. 因此,作者提出緩慢改變神經(jīng)網(wǎng)絡(luò)模型中的重要參數(shù),以使得模型不忘記之前學(xué)習(xí)的知識. EWC使用損失函數(shù)來實現(xiàn)該目的,即
(4)
Chang等[35]為了使GAN避免災(zāi)難性遺忘,提出了記憶保護生成對抗模型(memory protection GAN,MPGAN) ,并設(shè)計了一種參數(shù)正則化方法(second derivative preserver,SDP). 考慮到已存在的參數(shù)正則化方法使用輸出函數(shù)的一階導(dǎo)數(shù)不能準(zhǔn)確地評估參數(shù)的重要性,SDP使用輸出函數(shù)的二階導(dǎo)數(shù). 使用F表示輸出函數(shù),θ表示模型的參數(shù),則SDP表示為
(5)
由于漢森矩陣計算較為復(fù)雜,在實際操作中使用費雪信息E[(?F/?θ)2]近似漢森矩陣. SDP使用
(6)
El等[67]借用參數(shù)正則化的思想,提出了一種方式約束增加新任務(wù)后模型參數(shù)的改變. 作者將卷積神經(jīng)網(wǎng)絡(luò)的特征提取模塊稱為編碼器,在編碼器后由有2個分支網(wǎng)絡(luò),一個分支網(wǎng)絡(luò)為了圖像分類,另一個分支網(wǎng)絡(luò)稱為解碼器,使用反卷積進行樣本的重建. 為了訓(xùn)練該網(wǎng)絡(luò),作者在損失函數(shù)中添加了一個非監(jiān)督重建損失,該損失的作用等同于參數(shù)正則化. 優(yōu)化網(wǎng)絡(luò)中的損失函數(shù)
L=Lcls(,y)+λLrec(,x)
(7)
式中:Lcls(,y)是圖像分類的交叉熵?fù)p失,y為圖像的真實標(biāo)簽,網(wǎng)絡(luò)輸出的預(yù)測標(biāo)簽;λ是超參數(shù);Lrec(,x)是重建損失,為重建樣本,x為樣本.Lrec表示為
(8)
式中:N為樣本x的數(shù)量;i、j、k三個索引分別為樣本x的3個維度,D是樣本x三個維度數(shù)的乘積;xijk為圖像在索引(i,j,k)處的灰度值;ijk為重建后圖像在索引(i,j,k)處的灰度值.
Hinton等[68]于2015年提出了一種模型壓縮的方法,即知識蒸餾. 該方法使用軟目標(biāo)輔助硬目標(biāo)進行訓(xùn)練小模型modelsmall,軟目標(biāo)即將樣本xi輸入到預(yù)訓(xùn)練的大模型modelbig中得到的輸出qi,硬目標(biāo)即為樣本的真實標(biāo)簽yi. 之所以這樣做,是因為軟目標(biāo)中包含的信息量巨大;而硬目標(biāo)包含的信息量較低. 如果modelbig中真實類的輸出結(jié)果遠遠大于其他類的結(jié)果,那就不能很好地使用軟目標(biāo)中的信息了,因此需要平滑softmax的輸出結(jié)果,即
(9)
式中:zi為softmax前一層(該層的神經(jīng)元個數(shù)已被映射為訓(xùn)練任務(wù)的類別數(shù))的輸出;T為溫度,T越大modelbig輸出的結(jié)果越軟. 知識蒸餾的方法被廣泛應(yīng)用于模型壓縮[69-71]、遷移學(xué)習(xí)[72-74]等領(lǐng)域,也被廣泛應(yīng)用于解決神經(jīng)網(wǎng)絡(luò)模型的災(zāi)難性遺忘問題中[75-79]. 圖4為知識蒸餾的示意圖,將訓(xùn)練樣本data同時輸入到modelbig和modelsmall,通過知識蒸餾的方式將modelbig的知識遷移到modelsmall.
圖4 知識蒸餾Fig.4 Knowledge distillation
Li等[42]結(jié)合知識蒸餾設(shè)計了學(xué)而不忘模型(learning without forgetting,LwF),該模型在增加新類Classnew時,僅需要使用新類Classnew的數(shù)據(jù)訓(xùn)練模型,且能避免對之前學(xué)習(xí)知識的遺忘. LwF模型使用前幾層作為特征提取模塊,為所有任務(wù)共享;之后幾層作為特定任務(wù)模塊,為不同任務(wù)的單獨所有. LwF使用的損失函數(shù)
L=λ0Lold(Y0,0)+Lnew(Yn,n)+R(s,o,n)
(10)
式中:λ0為一個超參數(shù),值越大,相應(yīng)地對蒸餾損失的權(quán)重就越大;Lold(Y0,0)為軟標(biāo)簽的損失,Y0為增加新類Classnew前模型的軟標(biāo)簽,0增加新類Classnew后訓(xùn)練過程中模型輸出的軟標(biāo)簽;Lnew(Yn,n)增加新類別的標(biāo)準(zhǔn)損失,Yn為新類別數(shù)據(jù)的真實標(biāo)簽,n為訓(xùn)練過程中模型的輸出;R(s,o,n)為正則項,s為共享參數(shù),o之前任務(wù)的特定任務(wù)參數(shù),n為新任務(wù)的特定任務(wù)參數(shù).
Shmelkov等[75]和Chen等[76]分別提出了新的損失函數(shù),將知識蒸餾的方法用到目標(biāo)檢測的災(zāi)難性遺忘中,這里以文獻[75]為例進行說明. Shmelkov等[75]提出的損失函數(shù)使Fast RCNN網(wǎng)絡(luò)在增加新的任務(wù)時,不用使用之前任務(wù)的數(shù)據(jù),且表現(xiàn)出對之前任務(wù)知識的不遺忘. 將當(dāng)前的網(wǎng)絡(luò)稱為CA,CA增加新任務(wù)后需要增加新的分類分支和使用新任務(wù)的數(shù)據(jù)進行重新訓(xùn)練,此時的網(wǎng)絡(luò)稱為CB. 由于目標(biāo)檢測任務(wù)中需要進行分類與回歸訓(xùn)練,因此作者結(jié)合分類與回歸提出蒸餾損失函數(shù)
(11)
Hou等[77]結(jié)合知識蒸餾與樣本回放的方式提出了適應(yīng)蒸餾的方法,該方法首先針對新任務(wù)tnew訓(xùn)練一個模型CNNexpert,然后通過知識蒸餾的方式將新任務(wù)的知識遷移到目標(biāo)模型CNNtarget,與LwF不同的是,該方法在知識蒸餾時用到少量的之前任務(wù)的樣本.
Castro等[78]使用之前任務(wù)的小部分?jǐn)?shù)據(jù)和當(dāng)前任務(wù)的數(shù)據(jù)設(shè)計了一個端到端的增量學(xué)習(xí)模型,由任務(wù)共享模塊特征提取和特定任務(wù)模塊組成. 針對該架構(gòu),作者提出了交叉- 蒸餾損失公式
(12)
式中:LC(ω)為新舊任務(wù)所有數(shù)據(jù)的交叉熵?fù)p失;LDf(ω)表示每個特定任務(wù)層的蒸餾損失.LC(ω)和LDf(ω)表示為
(13)
(14)
式中:N和C分別表示樣本的數(shù)目和樣本的類別數(shù);pij表示樣本真實標(biāo)簽,qij為模型的輸出;pdistij與qdistij類比于pij和qij.
(15)
除了上面所述的3類方法外,一些學(xué)者還提出了其他方法為避免神經(jīng)網(wǎng)絡(luò)中的災(zāi)難性遺忘. Muoz-Martín等[80]將有監(jiān)督的卷積神經(jīng)網(wǎng)絡(luò)與受生物啟發(fā)的無監(jiān)督學(xué)習(xí)相結(jié)合,提出一種神經(jīng)網(wǎng)絡(luò)概念;不同于參數(shù)正則化方法,Titsias等[81]提出一種函數(shù)正則化的方法;Cao在將學(xué)習(xí)系統(tǒng)視為一個纖維叢(表示一種特殊的映射),提出了一個學(xué)習(xí)模型[82]. 該學(xué)習(xí)模型的架構(gòu)如圖5所示,該圖根據(jù)文獻[82]所畫,與動態(tài)地選擇模型的參數(shù)不同,該模型動態(tài)地選擇解釋器. 圖5(a)表示了一個普通的神經(jīng)網(wǎng)絡(luò),即輸入x通過神經(jīng)網(wǎng)絡(luò)得到輸出y;圖5(b)表示作者所提出的學(xué)習(xí)模型的架構(gòu),該架構(gòu)主要有以下幾步:1)輸入x通過生成器Generator被編碼為潛在空間L中的xL,這里相似的樣本會得到xL; 2) 基于xL選擇神經(jīng)網(wǎng)絡(luò)中被激活的神經(jīng)元,得到解釋器Interpretor:fx; 3) 將樣本x輸入到解釋器fx得到輸出y. 為了使該學(xué)習(xí)模型能有對時間的感知,作者又在模型中引入了一個生物鐘,
T=Tmin+σ[ψ(x)](Tmax-Tmin)
(16)
Yt=(Asin(2πt/T),Acos(2πt/T))
(17)
式中:x表示輸入;Yt表示生物鐘的輸出;t表示當(dāng)前時刻;T表示周期;Tmin和Tmax均為超參數(shù),分別表示T的最小值與最大值;σ表示sigmoid函數(shù);ψ表示可訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型. 通過實驗作者發(fā)現(xiàn)該學(xué)習(xí)模型不僅具有良好的持續(xù)學(xué)習(xí)能力,而且還具有一定的信息存儲能力.
圖5 普通神經(jīng)網(wǎng)絡(luò)和纖維束學(xué)習(xí)系統(tǒng)[82]Fig.5 Common neural network and learning system with a fiber bundle[82]
針對神經(jīng)網(wǎng)絡(luò)中的災(zāi)難性遺忘問題,大量學(xué)者提出了自己的方法,無論是基于樣本的方法,或是基于模型參數(shù)的方法,又或是基于知識蒸餾的方法等等;總之,解決方案有很多,那么這又產(chǎn)生了一系列問題:如何確定哪種方法最優(yōu)?如何確定某種解決方案所適應(yīng)的環(huán)境?如何評價不同方法的優(yōu)劣?
針對如何評價不同方法這個問題,也有一些學(xué)者進行了相應(yīng)的研究. Kemker等[83]提出了衡量災(zāi)難性遺忘問題的實驗基準(zhǔn)和評估指標(biāo). 這里只介紹3個評價指標(biāo),該評指標(biāo)主要有3個新的評估參數(shù)
(18)
(19)
(20)
式中:T表示任務(wù)的數(shù)量;αbase,i表示訓(xùn)練第i個任務(wù)后,神經(jīng)網(wǎng)絡(luò)模型對第1個任務(wù)的準(zhǔn)確率;αideal表示訓(xùn)練基礎(chǔ)數(shù)據(jù)集(也即第1個任務(wù))后,神經(jīng)網(wǎng)絡(luò)模型對基礎(chǔ)數(shù)據(jù)集的準(zhǔn)確率;αnew,i表示訓(xùn)練第i個任務(wù)后,神經(jīng)網(wǎng)絡(luò)模型對該任務(wù)的準(zhǔn)確率;αall,i表示模型對當(dāng)前所能得到所有數(shù)據(jù)的準(zhǔn)確率. 這里式(18)中的Ωbase表示神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練T個任務(wù)之后,對學(xué)習(xí)到第1個任務(wù)知識的遺忘程度;式(19)中的Ωnew表示神經(jīng)網(wǎng)絡(luò)模型在學(xué)習(xí)到新任務(wù)后,對新任務(wù)的適應(yīng)能力;式(20)中的Ωall計算模型保留先前學(xué)習(xí)的知識和學(xué)習(xí)到新知識的能力. van de Ven等[84]也指出,雖然有很多針對神經(jīng)網(wǎng)絡(luò)中災(zāi)難性遺忘問題的解決方案,但是由于沒有統(tǒng)一的評價基準(zhǔn),導(dǎo)致直接對比不同解決方案的效果非常困難. 為了能結(jié)構(gòu)化地比較不同的解決方案,van de Ven等提出了3種困難度逐漸加大的連續(xù)學(xué)習(xí)的情景,每個情景包含2種任務(wù)協(xié)議. 3種任務(wù)情景分別為:1)測試時,已知任務(wù)ID;2)測試時,任務(wù)ID未知,且不需要判斷任務(wù)ID;3)測試時,任務(wù)ID未知,且需要判斷出任務(wù)ID. 第1種實驗情景針對的是任務(wù)增量學(xué)習(xí)(task-IL),即每個任務(wù)在輸出層都有與之對應(yīng)的特定的輸出單元,而其余網(wǎng)絡(luò)是共享的;第2種實驗情景是針對域增量學(xué)習(xí)(domain-IL),即任務(wù)的結(jié)構(gòu)相同但輸入分布卻不相同;第3種實驗情景針對類增量學(xué)習(xí)(class-IL),即遞增地學(xué)習(xí)新類. 在文獻中,作者將第1種任務(wù)協(xié)議稱為分割MNIST任務(wù)協(xié)議,該協(xié)議將MNIST數(shù)據(jù)集中分為5個任務(wù),每個任務(wù)包含2類;作者將第2種任務(wù)協(xié)議稱為置換MNIST任務(wù)協(xié)議,該協(xié)議包含10個任務(wù),每個任務(wù)包含10類,將原始MNIST作為任務(wù)1,在MNIST基礎(chǔ)上隨機生成另外9組數(shù)據(jù)即任務(wù)2~9的數(shù)據(jù)集. Pfülb等[85]也提出了一個評價深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNNs)災(zāi)難性遺忘問題的范例. 該評價范例主要是針對實際應(yīng)用層面,主要包括:1)在DNNs上訓(xùn)練序列學(xué)習(xí)任務(wù)(sequential learning tasks,STLs)時,模型應(yīng)能保證能隨時增加新類;2)模型應(yīng)該對先前學(xué)習(xí)過的任務(wù)表現(xiàn)出一定的記憶力,即使災(zāi)難性遺忘不可避免,至少應(yīng)該緩慢的遺忘之前所學(xué)習(xí)的知識,而不是立即遺忘;3)DNNs如果應(yīng)用到嵌入式設(shè)備或機器人中,應(yīng)該滿足內(nèi)存占用低、添加任務(wù)時重新訓(xùn)練的時間或內(nèi)存復(fù)雜度不應(yīng)依賴于子任務(wù)的數(shù)量等. 除了提出新的評價方法,也有學(xué)者提出了用于測試神經(jīng)網(wǎng)絡(luò)模型中災(zāi)難性遺忘問題性能的新數(shù)據(jù)集,如Lomonaco等[86]提出了基準(zhǔn)數(shù)據(jù)集CORe50,該數(shù)據(jù)集用于測試不同持續(xù)學(xué)習(xí)方法對目標(biāo)檢測的效果.
圖6 無限擴大的神經(jīng)網(wǎng)絡(luò)模型Fig.6 Infinitely expanding neural network model
圖7 逐漸增加模型的任務(wù)Fig.7 Gradually add tasks to the model
在盡量小地改變神經(jīng)網(wǎng)絡(luò)模型自身的情況下允許神經(jīng)網(wǎng)絡(luò)模型適應(yīng)更多的新任務(wù)且不發(fā)生災(zāi)難性遺忘. 如直接使用樣本回放的方法,并非簡單地將所有任務(wù)的樣本混合而是想要找到每個任務(wù)中具有代表性的樣本,并使用不同的方法對樣本進行排序,進而選擇具有代表性的樣本;在使用生成偽數(shù)據(jù)的方法中,想要生成適量的偽數(shù)據(jù)而不是無限擴展網(wǎng)絡(luò);參數(shù)正則化的方法中,想要找到神經(jīng)網(wǎng)絡(luò)模型中最重要的參數(shù),并對其進行約束,而不是簡單地約束所有參數(shù);在知識蒸餾中,想要將知識由一種網(wǎng)絡(luò)遷移到另一種網(wǎng)絡(luò),而不是簡單地將2個網(wǎng)絡(luò)并聯(lián). 另外,第3節(jié)中的很多方法依據(jù)生物的認(rèn)知記憶等原理進行改進創(chuàng)新,以期達到克服神經(jīng)網(wǎng)絡(luò)模型中災(zāi)難性遺忘的目的[66,80,82]. 注意:對減緩災(zāi)難性遺忘方法的分類并不是絕對的,如文獻[77-78]既用到了知識蒸餾的方法,也用到了樣本的方法;這里的分類依據(jù)是作者解決神經(jīng)網(wǎng)絡(luò)模型中災(zāi)難性遺忘問題的主要思想,以文獻[78]為例,作者在文中主要的關(guān)注點是使用知識蒸餾的方法避免災(zāi)難性遺忘,而使用之前任務(wù)所組成的小樣本集僅是作者使用的一個輔助的方式,因此將該方法歸類為知識蒸餾的類中.
首先將減緩神經(jīng)網(wǎng)絡(luò)模型災(zāi)難性遺忘的方法分為四大類,并對不同大類的方法進行了介紹;然后,介紹了幾種評價減緩神經(jīng)網(wǎng)絡(luò)模型災(zāi)難性遺忘性能的方法;接著,對神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題進行了開放性的探討.
如果將人類的大腦看成一個復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型,可以觀察到人類并沒有災(zāi)難性遺忘的問題. 這說明現(xiàn)在的神經(jīng)網(wǎng)絡(luò)模型與人腦相比仍有非常大的缺陷,仍有非常大的進步空間. 對于怎樣解決災(zāi)難性遺忘的問題,本文最后提出了幾個解決思路:1) 探索生物怎樣避免災(zāi)難性遺忘的機制,并根據(jù)該機制設(shè)計相似的神經(jīng)網(wǎng)絡(luò)模型. 2) 探索神經(jīng)網(wǎng)絡(luò)模型存儲信息的新機制,如果神經(jīng)網(wǎng)絡(luò)模型在學(xué)習(xí)新知識后仍能保持對之前學(xué)習(xí)的知識不遺忘,必然需要存儲一些關(guān)于之前學(xué)習(xí)的知識的一些信息,怎樣高效地存儲和利用這些信息值得研究. 3) 選取具有代表性的樣本也是一種方法. 該方法不僅存在于生物的認(rèn)知中,也廣泛存在于社會生活中. 如社會生活中的選舉,某一社會團體通常推選出該團體中的某幾位成員而不是全體成員代表該社會團體,這也從另一個角度說明,部分樣本往往可以近似代表總體樣本. 對比到神經(jīng)網(wǎng)絡(luò)模型中,選取某一任務(wù)中具有代表性的樣本,而不是使用所有樣本代表該任務(wù);該方法需要確定推選機制,即怎樣確定樣本集中的某些樣本具有代表該樣本集的能力. 一個顯而易見的事實是,神經(jīng)網(wǎng)絡(luò)模型是對生物神經(jīng)網(wǎng)絡(luò)的模仿,而現(xiàn)在神經(jīng)網(wǎng)絡(luò)模型出現(xiàn)災(zāi)難性遺忘的問題,說明對生物的神經(jīng)網(wǎng)絡(luò)研究的并不徹底,還有很多盲點. 思路1)進一步研究生物的避免研究災(zāi)難性遺忘的機制,應(yīng)該是研究的重點和趨勢.
為徹底解決神經(jīng)網(wǎng)絡(luò)模型中的災(zāi)難性遺忘問題,需要人工智能等方面學(xué)者們的努力,也需要腦科學(xué)、心理學(xué)等方面學(xué)者們的支持.