吳楚,王士同
1.江南大學 人工智能與計算機學院,江蘇 無錫214122
2.江蘇省物聯(lián)網(wǎng)應(yīng)用技術(shù)重點建設(shè)實驗室,江蘇 無錫214122
持續(xù)學習(continual learning)[1]是受哺乳動物大腦學習過程啟發(fā)的一種思想,用于學習一系列非獨立同分布的連續(xù)任務(wù),目的是在不影響先前學習任務(wù)性能的情況下不斷學習新任務(wù)。普通的深度神經(jīng)網(wǎng)絡(luò)在單一任務(wù)中有不錯表現(xiàn),而使用微調(diào)的遷移學習方法能高效地遷移源域的知識至目標域,并提升學習性能,但它在連續(xù)的任務(wù)序列中表現(xiàn)不佳:為了學習與當前任務(wù)相關(guān)的特征,不得不修改網(wǎng)絡(luò)的權(quán)重,導致對先前任務(wù)性能的大幅降低,也就是“災(zāi)難性遺忘”(catastrophic forgetting)[2]。而持續(xù)學習的優(yōu)勢恰恰在于能整合先前任務(wù)的知識用于當前任務(wù)的學習上,且不會發(fā)生“災(zāi)難性遺忘”。
常用的持續(xù)學習方法主要分為三種[3]:
第一種是樣本重演方法,這類方法以原本形式存儲樣本或者在一個生成模型中存儲樣本的“壓縮版本”。在學習新任務(wù)時通過重演先前的任務(wù)樣本來減輕遺忘。例如,梯度情景記憶思想(gradient episodic memory for continual learning,GEM)由Lopez和Ranzato[4]提出,作者受啟發(fā)于人腦生理結(jié)構(gòu),將先前任務(wù)訓練過的數(shù)據(jù)保存用于后續(xù)訪問(梯度記憶),為此定義一個梯度記憶損失函數(shù),并用一個不等式約束允許這個損失函數(shù)不增加,進而整體地優(yōu)化目標。重演方法的主要缺點是類別規(guī)模方面的限制,需要額外的內(nèi)存空間去存儲原始的輸入樣本。受限的存儲空間也限制了原始分布的復現(xiàn)。除此之外,存儲原始的樣本往往涉及隱私問題。
第二種是基于正則化的方法,這種方法考慮到數(shù)據(jù)隱私和內(nèi)存需求,不使用先前任務(wù)的數(shù)據(jù)和標簽,而是在損失函數(shù)中引入了一個額外的正則化項,在學習新任務(wù)時鞏固先前的知識。典型的有Li等人[5]于2017年提出的無遺忘學習(learning without forgetting,LwF),該方法運用了知識蒸餾技術(shù)來應(yīng)對“災(zāi)難性遺忘”問題,對于新任務(wù)數(shù)據(jù),使用舊任務(wù)模型作為教師模型,并用教師模型輸出的軟標簽對新任務(wù)模型的參數(shù)進行約束,以平衡新舊任務(wù)的性能。Kirkpatrick 等人[6]引入了一種彈性權(quán)重固化的思想(elastic weight consolidation,EWC),它用費舍爾矩陣定義模型中的參數(shù)的重要程度并進行保護,讓其變得不那么容易被更新,使得新任務(wù)的最優(yōu)參數(shù)中包含了一定程度先前任務(wù)的重要信息,從而避免遺忘先前任務(wù)的知識。此類方法的不足之處在于,由于包含了保護鞏固知識的額外損失項[7],這些損失項在數(shù)據(jù)樣本有限的情況下,可能導致對新舊任務(wù)性能的權(quán)衡問題。
第三種方法是參數(shù)獨立方法,此類方法為每個任務(wù)分配了不同的模型參數(shù)。當網(wǎng)絡(luò)規(guī)模沒有限制的時候,每個任務(wù)都可以擁有部分相應(yīng)網(wǎng)絡(luò),同時凍結(jié)先前任務(wù)參數(shù)或為每個任務(wù)分配不同的模型參數(shù),以防止遺忘。Rusu 等人2016年[8]提出的漸進神經(jīng)網(wǎng)絡(luò)(progressive neural networks,PNN)結(jié)合了深度網(wǎng)絡(luò)應(yīng)用到持續(xù)學習中。這種網(wǎng)絡(luò)結(jié)構(gòu)的構(gòu)成易理解,對所有之前任務(wù)的網(wǎng)絡(luò)進行保留,并且每學習一個新任務(wù)就新建立一個同樣的網(wǎng)絡(luò)分支,新任務(wù)的網(wǎng)絡(luò)層接收先前所有任務(wù)網(wǎng)絡(luò)分支的輸出與當前任務(wù)對應(yīng)網(wǎng)絡(luò)層的輸出相結(jié)合一起輸出到下一層。Wu等人于2020年[9]則提出了一個漸進學習的深度框架??蚣馨糠郑赫n程、漸進、剪枝。其中漸進過程采用了級聯(lián)運算而不是求和運算,以鼓勵特征重用。課程策略思想提倡有意義的任務(wù)順序,實驗表明采用課程策略訓練的模型要優(yōu)于未經(jīng)課程策略訓練的模型。然而這種方法沒有考慮到不同任務(wù)間的相關(guān)程度對學習性能的影響,同時級聯(lián)所有先前任務(wù)的參數(shù)進行訓練對存儲和學習效率也是不小的考驗。
本文關(guān)注的是參數(shù)獨立方法,通過在漸進學習階段添加新的網(wǎng)絡(luò)分支來學習新參數(shù)來避免遺忘問題和增強模型學習當前任務(wù)的能力,并做出了一些改進。主要貢獻可以歸納如下:
(1)提出了一種任務(wù)相似度引導的漸進學習方法。這種方法的主體基于一個用于持續(xù)學習的深度網(wǎng)絡(luò),參考了PNN 的漸進網(wǎng)絡(luò)[8],為每個任務(wù)分配網(wǎng)絡(luò)分支(漸進塊)來漸進地學習。
(2)在漸進網(wǎng)絡(luò)PNN的基礎(chǔ)上,本文在漸進過程前加入了任務(wù)相似性評估這一步驟,而評估以后再漸進學習的兩段式的思想符合人腦的直覺和解決問題的認知行為:首先估計任務(wù)之間的大致相似程度;然后據(jù)此利用腦中的相關(guān)知識來求解當前問題。這暗示在進行漸進學習時,應(yīng)該有一個評估任務(wù)間相似度的過程,然后將此作為漸進階段知識遷移的度量。本文采用了一種應(yīng)用于不同域之間數(shù)據(jù)分布差異計算的方法來評估任務(wù)間的相似度。漸進階段參照當前任務(wù)與先前任務(wù)的相似度,并以此引導任務(wù)之間的參數(shù)遷移,有選擇地吸收先前任務(wù)中的知識,從而使當前任務(wù)的性能提升。實驗結(jié)果表明,有指導的漸進過程相比PNN學習得更快、更穩(wěn)定。
(3)對于各個任務(wù)間知識遷移過程,該方法將各漸進塊間的網(wǎng)絡(luò)層的輸出級聯(lián)為一個級聯(lián)層,并作為當前漸進塊的下一網(wǎng)絡(luò)層的輸入,保留了各任務(wù)的信息,對級聯(lián)層基于閾值剪枝來選擇關(guān)鍵特征能促進正向遷移。在SPLIT-CIFAR100 和MNISTPermutation、MNIST-Rotation 數(shù)據(jù)集上實驗結(jié)果表明,任務(wù)相似度引導的漸進神經(jīng)網(wǎng)絡(luò)在學習多個連續(xù)任務(wù)時,能利用之前任務(wù)的知識來幫助學習當前任務(wù),多項評估指標與單任務(wù)學習、多任務(wù)學習模型和其他持續(xù)學習方法相比都要更好。
神經(jīng)網(wǎng)絡(luò)是基于感知機的擴展,而深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)是有很多隱藏層的前饋神經(jīng)網(wǎng)絡(luò)。在測試與訓練分布相同時表現(xiàn)良好。其中卷積神經(jīng)網(wǎng)絡(luò)在圖像識別領(lǐng)域具有很好的效果,循環(huán)神經(jīng)網(wǎng)絡(luò)被廣泛應(yīng)用于時間序列任務(wù)上。從DNN按不同層的位置劃分,DNN內(nèi)部的神經(jīng)網(wǎng)絡(luò)層可以分為三類:輸入層、隱藏層和輸出層。對于一個多層的深度神經(jīng)網(wǎng)絡(luò),其第l層的輸出表示如下:
其中,σ為隱藏層的激活函數(shù),θ(l)、b(l)分別表示第l層的權(quán)重矩陣和偏置向量矩陣。
深度神經(jīng)網(wǎng)絡(luò)常用卷積層[10]來高效提取更復雜的特征,使用ReLU[11]激活函數(shù)以克服梯度消失問題,對于復雜的網(wǎng)絡(luò)采用Dropout[12]技巧有效減少過擬合,同時隨著計算設(shè)備計算能力的飛速發(fā)展,大大縮短了網(wǎng)絡(luò)的訓練時間。此后新的深度網(wǎng)絡(luò)架構(gòu)不斷被提出和改進,如殘差網(wǎng)絡(luò)(residual network,ResNet)、生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)等,網(wǎng)絡(luò)向更深、更復雜的方向發(fā)展。在如語音識別、機器翻譯、問答系統(tǒng)等具體細分領(lǐng)域,深度神經(jīng)網(wǎng)絡(luò)也表現(xiàn)出了極佳的性能。
深度神經(jīng)網(wǎng)絡(luò)為目標域任務(wù)特化網(wǎng)絡(luò)結(jié)構(gòu),以達到出色的性能。然而,在連續(xù)學習多個任務(wù)時,單個的深度神經(jīng)網(wǎng)絡(luò)不會記住先前任務(wù)的任何特征或知識,這種遺忘現(xiàn)象可以視為一次性的單向?qū)W習行為,并不具備任何持續(xù)學習能力,克服這種遺忘現(xiàn)象是機器學習領(lǐng)域邁向更加智能化的重要一步,進行有效的持續(xù)學習也是人工智能的未來發(fā)展趨勢。
人和高級哺乳動物能在整個生命歷程中不斷、微調(diào)和轉(zhuǎn)移知識和技能。這種能力,被稱為終身學習(lifelong learning)或持續(xù)學習[13],是由一系列神經(jīng)認知機制協(xié)調(diào)的過程,這些機制共同促進了感知運動技能的發(fā)展以及對長期記憶的鞏固和檢索。而在機器學習中,持續(xù)學習通常指的是一個智能系統(tǒng)能夠從連續(xù)的非獨立同分布的任務(wù)中不斷地學習新知識,同時在新任務(wù)的學習過程中不會忘記以前學習到的知識。
一個從零開始的有監(jiān)督學習是指,基于獨立同分布的帶有標簽的數(shù)據(jù)集D={(x(i),y(i))|1 ≤i≤N}學習目標任務(wù),最終訓練出一個模型f來準確預(yù)測同一個域內(nèi)的未知數(shù)據(jù)(x*,y*)。
在連續(xù)學習的環(huán)境中,多個非獨立同分布的數(shù)據(jù)集D={D1,D2,…,DN}共同組成一個連續(xù)的任務(wù)序列T={t1,t2,…,tN}。任務(wù)序列可以來自于輸入域的各種變換(例如圖像的翻轉(zhuǎn)、裁剪),也可以是不同但相關(guān)聯(lián)的任務(wù)(例如細粒度分類任務(wù))。連續(xù)學習的目標是依照任務(wù)的順序依次學習,最終訓練出一個模型f能夠準確預(yù)測這些不同域內(nèi)的未知數(shù)據(jù)≤i≤N}。與從零開始的單任務(wù)學習相比,連續(xù)學習能兼顧多個任務(wù),且可以利用已經(jīng)學習過的任務(wù)知識來幫助學習新任務(wù)。
研究表明,深度神經(jīng)網(wǎng)絡(luò)能很好地提取數(shù)據(jù)的特征,而參數(shù)獨立的持續(xù)學習方法結(jié)合了深度神經(jīng)網(wǎng)絡(luò)的優(yōu)勢。一方面,參數(shù)獨立方法不需要訪問或存儲先前任務(wù)的數(shù)據(jù)來避免災(zāi)難性遺忘;另一方面,參數(shù)獨立方法也不需要通過正則化手段對新任務(wù)的參數(shù)進行二次懲罰來權(quán)衡新舊任務(wù)間的性能。圖1示意了結(jié)合深度神經(jīng)網(wǎng)絡(luò)的參數(shù)獨立的持續(xù)學習方法。對于三個非獨立同分布的圖像識別序列任務(wù),在持續(xù)學習過程中,為新任務(wù)分配額外的新網(wǎng)絡(luò),將各個任務(wù)網(wǎng)絡(luò)之間的參數(shù)重疊共享于新任務(wù)的參數(shù)訓練中,而網(wǎng)絡(luò)設(shè)計為深度結(jié)構(gòu)能獲取到更多的特征表示。這類持續(xù)學習方法注重的是前向遷移能力[14],其性能可以用平均分類精度(average accuracy,AA)和漸進知識遷移率(progressive knowledge transfer,PKT)[4,9]這兩項指標評估,這些評估標準將在實驗部分詳細介紹。
圖1 結(jié)合深度神經(jīng)網(wǎng)絡(luò)的參數(shù)獨立的持續(xù)學習方法Fig.1 Parameter-isolated continuous learning method combined with deep neural network
但是任務(wù)網(wǎng)絡(luò)之間的參數(shù)遷移是一個值得探究的問題,學習新任務(wù)時逐層全部遷移先前任務(wù)的參數(shù)是通用的基準方法,但不考慮任務(wù)間的相似程度很有可能造成負向遷移[15],導致新任務(wù)性能的降低。為改善這一問題,本文提出了一種任務(wù)相似度引導的漸進深度神經(jīng)網(wǎng)絡(luò)(task-similarity guided progressive neural network,TSGPNN)。
現(xiàn)實世界中,人腦在學習不同任務(wù)時常常用到“遷移”的概念,即人腦具有由一任務(wù)域到目標任務(wù)域適配的機制??紤]一組識別家貓和獵豹的任務(wù),在識別獵豹的過程中往往會借鑒家貓的特征,相反,在識別家貓和犬類的任務(wù)中,想要準確識別犬類,可能僅需要借鑒家貓的一些基本特征。在持續(xù)學習過程中,新舊任務(wù)之間的相似程度越高,數(shù)據(jù)的分布差異越小,它們之間可共用的特征信息也就越多,也就越能提升學習目標任務(wù)的性能。如果新舊任務(wù)之間的相似度很低,那么遷移過來的特征信息可能會對新任務(wù)的學習性能產(chǎn)生負影響[16]。
本文定義了一種不同域間距離計算的方法,利用這種計算方法衡量不同任務(wù)域的相似度,并依據(jù)相似度決定任務(wù)間參數(shù)的遷移量。這種方法受Shen的域適配計算方法——最大密度散度(maximum density divergence,MDD)啟發(fā)。于是在設(shè)置的多個漸進任務(wù)內(nèi),任務(wù)i有Ni個樣本{xi,1,xi,2,…,xi,Ni},任務(wù)j有Nj個樣本{xj,1,xj,2,…,xj,Nj},本文定義了一個參照量來評估這兩個具有不同分布的任務(wù)間的相似程度,相似度計算公式如下:
其中,是與xi獨立同分布的副本,為歐幾里德距離范數(shù)的平方。在上式中,參照量λi,j由兩部分組成,分子項代表兩個不同任務(wù)間的域間散度,分母項表示同一任務(wù)的域內(nèi)密度。在有限的概率空間中,如果兩個域相同,那么MDD 就等于0。相同地,在等式(2)中,因為是與xi獨立同分布的副本,所以如果兩個任務(wù)Ni與Nj十分相似,它們各自的域是近似對齊的,那么任務(wù)Ni中樣本與任務(wù)Nj中樣本的距離應(yīng)接近其副本域中樣本的距離,參照量λ應(yīng)趨近于1。本文選用這種計算方式進行任務(wù)間相似性評估主要有以下理由[17]:(1)在有限的概率空間內(nèi),MDD是對稱KL散度的一個下界。(2)這種計算方式繼承了MDD的優(yōu)勢,直接考慮了兩個任務(wù)域間所有樣本的距離信息,而不需要知道兩個域的概率分布信息,這與連續(xù)學習的場景十分契合。
對于N個任務(wù)的任務(wù)池,兩兩任務(wù)之間進行相似度計算后得到一個上三角的相似度矩陣λ,λi,j∈λ={λi,j|1 ≤i,j≤N,i≠j}表示第i個任務(wù)與第j個任務(wù)的相似度。
學習當前任務(wù)時理應(yīng)借鑒舊任務(wù)的知識,但是這部分舊任務(wù)的知識并不應(yīng)全部參與當前任務(wù)的訓練。因此在修剪漸進任務(wù)間的參數(shù)特征時,本算法在Han 等人的深度神經(jīng)網(wǎng)絡(luò)權(quán)重修剪方法[18]的基礎(chǔ)上,設(shè)置了相似度敏感因子c這一超參數(shù),它反映參數(shù)修剪量受各個任務(wù)間相似度的影響程度,用于懲罰漸進學習中與它較為不相似的任務(wù),根據(jù)它對舊任務(wù)漸進塊中的參數(shù)進行修剪,c將在不同的實驗中分別取不同值。修剪過程的具體步驟將在2.2.2小節(jié)中介紹。
參數(shù)修剪完成后,再將保留下來的參數(shù)與新任務(wù)前一層的輸出級聯(lián)作為新任務(wù)對應(yīng)漸進塊的輸入進行再訓練。實驗中對SPLIT-CIFAR100、MNISTPermutation 和MNIST-Rotation 數(shù)據(jù)集都進行了這樣的設(shè)置。
本文依據(jù)參數(shù)獨立的思想,提出了任務(wù)相似度引導的在多個任務(wù)間漸進學習的深度網(wǎng)絡(luò)TSGPNN。TSGPNN的基本結(jié)構(gòu)參考了Rusu等人[8]提出的PNN。本質(zhì)上是為每個任務(wù)單獨構(gòu)建一個深度網(wǎng)絡(luò),在整個漸進神經(jīng)網(wǎng)絡(luò)里稱為漸進塊,訓練時凍結(jié)先前任務(wù)的參數(shù)并基于任務(wù)相似度來引導吸收從先前任務(wù)的漸進塊級聯(lián)而來的參數(shù),在避免災(zāi)難性遺忘的同時,提升當前任務(wù)性能。漸進學習的目標是在任務(wù)池T訓練出一個包含多個漸進塊fi的模型F。每個漸進塊fi都是對應(yīng)于任務(wù)ti基于數(shù)據(jù)集Di訓練的深度神經(jīng)網(wǎng)絡(luò)。圖2 舉例介紹了TSGPNN 基于SPLITCIFAR100 數(shù)據(jù)集的第四個任務(wù)的漸進學習的過程,其中虛線代表輸入僅前向傳播。漸進學習過程分為漸進前向傳播、漸進塊間參數(shù)修剪和反向傳播三部分。
圖2 SPLIT-CIFAR100數(shù)據(jù)集第四個任務(wù)的漸進學習過程Fig.2 Progressive learning process of the fourth task in SPLIT-CIFAR100 dataset
2.2.1 漸進前向傳播
在漸進前向傳播過程中,首先對包含N個不同域的規(guī)定任務(wù)順序的任務(wù)池T={t1,t2,…,tN}中的所有任務(wù)使用等式(2)進行相似度計算,得到一個上三角的相似度矩陣λ,λi,j∈λ={λi,j|1 ≤i,j≤N,i≠j}表示第i個任務(wù)數(shù)據(jù)集Di與第j個任務(wù)數(shù)據(jù)集Dj間的相似度。
之后進行漸進神經(jīng)網(wǎng)絡(luò)的搭建,從任務(wù)池T={t1,t2,…,tN}中選出第一個任務(wù)t1。任務(wù)t1的數(shù)據(jù)集D1由樣本集X(1)和對應(yīng)標簽集Y(1)構(gòu)成。確定任務(wù)后,隨后為該任務(wù)建立一個漸進神經(jīng)網(wǎng)絡(luò)f1,在整個漸進學習中統(tǒng)稱為漸進塊。首個任務(wù)的網(wǎng)絡(luò)前向傳播與一般的深度神經(jīng)網(wǎng)絡(luò)相同。
其中,σ為隱藏層的激活函數(shù),θ(l)表示此漸進塊中第l層的權(quán)重矩陣。在訓練完首個任務(wù)的漸進塊后,將該漸進塊中的參數(shù)凍結(jié)。從任務(wù)池T中選出新任務(wù){(diào)ti|1 <i≤N} 。確定任務(wù)后,為其建立漸進塊{fi|1 <i≤N},漸進塊fi的不考慮偏置項的網(wǎng)絡(luò)層的前向傳播表示如下:用[19],從而使新任務(wù)漸進塊的每一層與舊任務(wù)漸進塊的相應(yīng)層建立了聯(lián)系,這點在Wu 等人[9]的實驗中已得到驗證。圖3為漸進過程中網(wǎng)絡(luò)層的級聯(lián)操作。
圖3 級聯(lián)操作表示Fig.3 Concatenation operation representation
2.2.2 漸進塊間參數(shù)修剪
這部分的修剪策略具體為設(shè)置一個修剪閾值用來刪除傳播到級聯(lián)層中不重要的小的參數(shù)。本文認為當前塊fi的修剪閾值應(yīng)由該塊與先前塊fk的任務(wù)相似度決定。相似度關(guān)系到漸進塊間各個網(wǎng)絡(luò)層輸出向量的修剪量r,相似度越低,修剪量r越大。如下式所示:
2.2.3 反向傳播
漸進學習中漸進塊的反向傳播與單個神經(jīng)網(wǎng)絡(luò)的反向傳播相同,所設(shè)置的目標函數(shù)為多分類任務(wù)常用的交叉熵損失函數(shù):
其中,m為輸入漸進塊的樣本數(shù)量,n為類別的數(shù)量。labelij為標簽的實際分布,當樣本i的真實類別等于j,取1,否則取0。yij為樣本i在漸進塊中經(jīng)前向傳播計算后的向量的第j個分量,pij為預(yù)測輸出,即漸進塊前向傳播中softmax分類器預(yù)測樣本i屬于類別j的概率值,在0 到1 之間,計算如等式(8)。交叉熵能夠衡量同一個隨機變量中的兩個不同概率分布的差異程度,在機器學習中就表示為真實概率分布與預(yù)測概率分布之間的差異。這個差異越小,代表模型預(yù)測效果就越好。
TSGPNN 使用帶動量的隨機梯度下降算法(stochastic gradient descent,SGD)[21],是受物理領(lǐng)域啟發(fā)的梯度下降優(yōu)化方法。一般而言,一個物體的動量指的是這個物體在它運動方向上保持運動的趨勢。在當前梯度更新時,引入動量會加強與歷史梯度方向相似的更新,減弱與歷史梯度方向不同的更新,使得梯度改變時就會有一段逐漸加速或逐漸減速的過程,從而加速學習過程,可以在鞍點處繼續(xù)前行,也可以逃離一些較小的局部最優(yōu)區(qū)域。算法2 舉例描述了漸進塊fi的參數(shù)θi的更新迭代過程。
算法2漸進塊fi的參數(shù)θi的更新迭代步驟
輸入:學習率α,漸進塊fi參數(shù)θi,動量m,動量的衰減率β,訓練次數(shù)epochs。
輸出:收斂后的參數(shù)θi,t。
t為迭代步時,mt為梯度gt的動量,超參數(shù)β為動量mt的衰減率。在漸進塊fi訓練完收斂后,依次為剩余任務(wù)建立漸進塊并訓練,待最后一個任務(wù)學習完成后,用于持續(xù)學習任務(wù)池T={t1,t2,…,tN}所有任務(wù)的整個漸進神經(jīng)網(wǎng)絡(luò)的模型F訓練完成。算法3簡要描述了以監(jiān)督學習為例的任務(wù)相似度引導的漸進式學習的基本步驟。
算法3任務(wù)相似度引導的漸進式學習在監(jiān)督學習實例中的基本步驟
輸入:有序任務(wù)池T={t1,t2,…,tN} ;數(shù)據(jù)池D={D1,D2,…,DN};訓練次數(shù)epochs。
輸出:模型F={f1,f2,…,fN}。
本章展示任務(wù)相似度引導的漸進神經(jīng)網(wǎng)絡(luò)在SPLIT-CIFAR100 和MNIST-Permutation 和MNISTRotation數(shù)據(jù)集上的實驗結(jié)果,并在相同的實驗環(huán)境下與單任務(wù)學習、多任務(wù)學習以及一些有代表性的持續(xù)學習方法進行了對比。環(huán)境配置為AMD Ryzen 5 3600 6-Core Processor 3.59 GHz,內(nèi)存16 GB,在python3.6基于Tensorflow-gpu2.5.0的框架下實現(xiàn)。
在實驗中主要考慮了以下3個持續(xù)學習數(shù)據(jù)集:
MNIST-Permutation 數(shù)據(jù)集[6]:它是手寫數(shù)字MNIST 數(shù)據(jù)集的一種變體,其中每個不同任務(wù)的圖像都由不同排列的像素打亂轉(zhuǎn)換而成。在這個數(shù)據(jù)集中,每個任務(wù)的分布都是不相關(guān)的。據(jù)此具體設(shè)置了5 個任務(wù),這些任務(wù)的訓練集為10 000 張28×28像素大小的圖像,測試集為2 000 張28×28 像素大小的圖像。
MNIST-Rotation數(shù)據(jù)集[4]:它也是手寫MNIST數(shù)據(jù)集的一種變體,其中每個不同任務(wù)的圖像都進行0°到180°內(nèi)的隨機角度旋轉(zhuǎn)處理。任務(wù)數(shù)量的設(shè)置和訓練集、測試集的劃分和大小都與MNIST-Permutation數(shù)據(jù)集相同。
SPLIT-CIFAR100 數(shù)據(jù)集[9,22]:它是CIFAR100 數(shù)據(jù)集[23]進行重新切分的變體。據(jù)此設(shè)置了10 個任務(wù),每個任務(wù)將從CIFAR100 數(shù)據(jù)集中的100 類中隨機抽取10個類,所有任務(wù)中的類別是互斥的,對于每個任務(wù),訓練集為5 000張32×32×3像素的圖像,測試集為1 000 張32×32×3 像素的圖像。而對于MNIST變形數(shù)據(jù)集(MNIST-Permutation、MNIST-Rotation)的實驗和SPLIT-CIFAR100 數(shù)據(jù)集的實驗采用了不同的網(wǎng)絡(luò)結(jié)構(gòu),如表1和表2所示。
表1 MNIST-Permutation和MNIST-Rotation數(shù)據(jù)集網(wǎng)絡(luò)結(jié)構(gòu)Table 1 Network structure of MNIST-Permutation and MNIST-Rotation datasets
在以上3個數(shù)據(jù)集的漸進學習實驗中,第一個任務(wù)上使用與單任務(wù)學習相同的網(wǎng)絡(luò)結(jié)構(gòu),而在隨后的任務(wù)中為每個塊后添加如表1、表2 所示的級聯(lián)層(concatenation layer)。漸進學習過程中級聯(lián)層級聯(lián)上一個任務(wù)平行的層的輸出,并作為當前任務(wù)下一層的輸入進行前向傳播,如圖2所示。在每個新任務(wù)漸進過程中,新任務(wù)所構(gòu)建的網(wǎng)絡(luò)參數(shù)將被重新初始化,并使用與先前任務(wù)相同的訓練超參數(shù)設(shè)置進行訓練。使用了早停法對SPILT-CIFAR100數(shù)據(jù)集實驗的訓練過程做監(jiān)控。為防止過擬合現(xiàn)象,訓練時每隔一個epoch 查看驗證集的loss 變化情況,如果在驗證集的loss 在給定的epoch 內(nèi)仍然沒有下降,則停止訓練,如圖4所示。
圖4 早停監(jiān)控演示Fig.4 Early stop monitoring demonstration
表2 SPLIT-CIFAR100數(shù)據(jù)集網(wǎng)絡(luò)結(jié)構(gòu)Table 2 Network structure of SPLIT-CIFAR100 dataset
本文所提出的方法將與單任務(wù)學習、多任務(wù)學習和三類經(jīng)典(樣本重演、正則化方法和參數(shù)獨立方法)的持續(xù)學習方法進行對比。為確保對比的公平性,以下對比方法所使用的網(wǎng)絡(luò)結(jié)構(gòu)都是相同的(除多任務(wù)學習外),所使用的優(yōu)化器、學習率以及迭代次數(shù)、訓練批次數(shù)與漸進學習實驗也都相同,如表3。各方法介紹如下:
表3 實驗的超參數(shù)設(shè)置Table 3 Hyperparameter settings in experiments
(1)ONE(one task learning):單任務(wù)學習。使用與TSGPNN相同的網(wǎng)絡(luò)結(jié)構(gòu)分別針對每個任務(wù)進行訓練和測試,即每個任務(wù)用一個重新初始化的模型來訓練。
(2)GEM(gradient episodic memory):梯度情景記憶。在學習當前任務(wù)時,訪問之前所有任務(wù)的部分數(shù)據(jù),這些數(shù)據(jù)被收集在一個稱為“梯度記憶”的地方。在復現(xiàn)實驗中,本文的超參數(shù)梯度記憶空間大小和記憶權(quán)分別為(256,256,1 024)、(0.5,0.5,0.5)。
(3)EWC(elastic weight consolidation):彈性權(quán)重固化。通過選擇出對于先前任務(wù)較重要的權(quán)重進行保護,在優(yōu)化時確保權(quán)重的更新不會對先前任務(wù)性能產(chǎn)生較大影響。在復現(xiàn)實驗中,本文的超參數(shù)設(shè)置參考了Facebook官方的復現(xiàn)腳本(https://github.com/facebookresearch)。
(4)MTL(multi-task learning):多任務(wù)學習。建立了一個比單任務(wù)學習模型更復雜的類似ZenkeNet[22]的網(wǎng)絡(luò)模型,采用了shared-bottom 結(jié)構(gòu)[24],不同的任務(wù)間共用輸入層和中間層(4個卷積層組成),而每個任務(wù)享有不同的頂層輸出(由兩個全連接層組成)。
(5)PNN(progressive neural network):漸進神經(jīng)網(wǎng)絡(luò),為每個任務(wù)建立相同的基礎(chǔ)網(wǎng)絡(luò),對所有的之前任務(wù)的網(wǎng)絡(luò)保留并固定。每次有一個新任務(wù)就新建一個網(wǎng)絡(luò),訓練時通過逐層的側(cè)邊連接以求和的方式融合參數(shù)來完成不同任務(wù)間的知識遷移。
本文使用平均分類精度(average accuracy,AA)、漸進知識遷移率(progressive knowledge transfer,PKT)和各任務(wù)精度標準差(pertask-accuracy standard deviation,STD)這3項指標評估模型的性能。
所有任務(wù)的平均分類精確率作為主要的評估標準:
其中,N是已學習任務(wù)的數(shù)量,Ai是指漸進網(wǎng)絡(luò)模型評估任務(wù)ti的精確率。
漸進知識遷移率被用來評估漸進學習模型和單任務(wù)學習模型同一任務(wù)之間的性能差異。一般而言,PKT越大,模型學習完序列任務(wù)后對先前任務(wù)的性能提升越大。如下所示:
其中,Ai指漸進網(wǎng)絡(luò)模型評估對應(yīng)任務(wù)ti的精確率,指單任務(wù)學習下第i個任務(wù)的精確率。漸進知識遷移率是從i=2 時開始計算的,因為當i=1時,漸進學習僅有一個漸進塊,等同于獨立學習,二者間無性能差異。
漸進學習任務(wù)間的精度標準差一定程度上反映了各任務(wù)學習過程中任務(wù)學習的穩(wěn)定程度。理想情況下,漸進學習多個任務(wù)時,應(yīng)盡量避免負向遷移的出現(xiàn),各任務(wù)的性能都應(yīng)處于較高的水平,使標準差控制在較小的范圍內(nèi)。
考慮到深度網(wǎng)絡(luò)帶來的精度波動,本文將如下所有對比方法與TSGPNN(相似度敏感因子c分別為0.5、5.0、12.0)在各數(shù)據(jù)集上運行10 次后,取各項評估標準的平均值進行對比和分析。
3.4.1 不同epoch學習性能分析
在MNIST-Permutation數(shù)據(jù)集上的5項任務(wù)中進行不同迭代次數(shù)的訓練后,測試集精度的對比實驗顯示,如圖5 所示。為確保比較公平性,所有比較方法網(wǎng)絡(luò)的參數(shù)初始化方法都是相同的。在1 到5 個epoch的訓練后進行測試,GEM方法的5項任務(wù)的平均學習性能表現(xiàn)最佳,能在較少的epoch 內(nèi)接近收斂,TSGPNN 次之。在10 到20 個epoch 后漸進神經(jīng)網(wǎng)絡(luò)學習方法(PNN、TSGPNN)的各項任務(wù)的學習性能表現(xiàn)均優(yōu)于單任務(wù)學習和其他持續(xù)學習方法,側(cè)面體現(xiàn)了漸進式學習明顯的學習速率優(yōu)勢,而本文提出的方法還要優(yōu)于PNN,這是因為TSGPNN 從體現(xiàn)了先前任務(wù)知識的各個漸進塊中使用級聯(lián)操作獲得了更多的信息,相較于其他方法收斂變得更平穩(wěn)和迅速。
圖5 不同epoch下MNIST-Permutation平均精確度Fig.5 Average accuracy on MNIST-Permutation dataset under different epochs
3.4.2 綜合評估標準對比
任務(wù)相似度引導的漸進學習方法與其他方法的平均精度、漸進知識遷移率以及精度標準差如表4~表6所示。實驗的超參數(shù)設(shè)置如表3。結(jié)合圖6可以看出,與基準方法相比,TSGPNN 帶來了更好的分類性能。在MNIST 變體數(shù)據(jù)集的5 項任務(wù)上,本文平均精度達到了91.75%和95.08%,每項任務(wù)的漸進遷移率為0.65%和0.63%。而在SPLIT-CIFAR100 這樣的類別信息較為復雜的數(shù)據(jù)集中,本文方法相比其他持續(xù)學習方法表現(xiàn)更好,平均精度提升到了65.36%,漸進知識遷移率達到了1.81%。
從表4~表6和圖6可以看出,對比參數(shù)正則化方法EWC和樣本重演方法GEM,漸進式學習方法的平均精度更高,且學習每個任務(wù)的效果相較于從零開始的單任務(wù)學習有明顯提升。與同樣是采用參數(shù)獨立方法的PNN 相比,TSGPNN 在MNIST-Permutation和MNIST-Rotation 數(shù)據(jù)集上的平均精度要更高,穩(wěn)定度也基本持平,而在SPLIT-CIFAR100數(shù)據(jù)集10個漸進任務(wù)的實驗中,PNN在前幾項任務(wù)中表現(xiàn)尚可,但是在最后的幾項任務(wù)中精度開始變差。在0.05的學習率下出現(xiàn)了較大的負遷移現(xiàn)象,需要對學習率等超參數(shù)進行一定的調(diào)整才能使后續(xù)任務(wù)性能達到理想水平,而在同樣的實驗參數(shù)設(shè)置上,本文提出的方法三項評估標準都要明顯優(yōu)于PNN,這表明了本文基于PNN改進的思路是正確的。
表4 MNIST-Permutation數(shù)據(jù)集上的測試結(jié)果(5漸進任務(wù))Table 4 Test result on MNIST-Permutation dataset(5 tasks) 單位:%
表5 MNIST-Rotation數(shù)據(jù)集上的測試結(jié)果(5漸進任務(wù))Table 5 Test result on MNIST-Rotation dataset(5 tasks) 單位:%
表6 SPLIT-CIFAR100數(shù)據(jù)集上的測試結(jié)果(10漸進任務(wù))Table 6 Test result on SPLIT-CIFAR100 dataset(10 tasks) 單位:%
圖6 各方法在SPLIT-CIFAR100數(shù)據(jù)集上的平均精度(10漸進任務(wù))Fig.6 Average accuracy of each method on SPLIT-CIFAR100 dataset(10 tasks)
3.4.3 相似度敏感因子分析
本文對不同漸進學習數(shù)據(jù)集的相似度敏感因子c的取值做了研究。c控制了各個任務(wù)漸進塊間的參數(shù)修剪量,而c由各個任務(wù)間的相似度決定(上文的等式(5)~(7)可以體現(xiàn))。如圖7所示,根據(jù)不同數(shù)據(jù)集的多個任務(wù)的相似度矩陣,為任務(wù)較多且任務(wù)域間相似度差別較小的數(shù)據(jù)集SPLIT-CIFAR100 實驗設(shè)置較大的c值,為任務(wù)較少且任務(wù)域間相似度差別較大的數(shù)據(jù)集MNIST-Permutation 實驗設(shè)置較小的c值,以防止修剪掉過多的先前任務(wù)知識。而對MNIST-Rotation數(shù)據(jù)集實驗選擇了折中的設(shè)置。
圖7 各個數(shù)據(jù)集的多個任務(wù)的相似度矩陣Fig.7 Similarity matrix of multiple tasks of each dataset
基于此,本文對超參數(shù)相似度敏感因子c做了多組不同的取值,在三個漸進數(shù)據(jù)集上做了實驗,MNIST變體數(shù)據(jù)集的各個任務(wù)(除第一個任務(wù),因為在漸進學習過程中,第一個任務(wù)相當于獨立學習)的平均精度變化隨c值影響如圖8 所示。MNIST-Permutation實驗各項任務(wù)的最佳表現(xiàn)的c值在0.5 附近;而MNIST-Rotation實驗各項任務(wù)的最佳表現(xiàn)的c值在2或5附近。
圖8 不同敏感因子在MNIST變體數(shù)據(jù)集上的精度Fig.8 Accuracy of different sensitive factors on variants of MNIST dataset
此外本文還關(guān)注了SPLIT-CIFAR100 數(shù)據(jù)集實驗的其他兩個評估標準,如表7所示??梢钥闯鲈诨贚eNet5 網(wǎng)絡(luò)的漸進式學習下,c值取在9 到15 之間能使整個模型表現(xiàn)更好,在能較高地提升對于任務(wù)的精度的同時使各個任務(wù)間精度的標準差也較小。而三項實驗的最佳c值都不處于兩端,這說明漸進任務(wù)之間過多或過少的參數(shù)修剪都將使得性能變差,特別是在任務(wù)數(shù)量多和數(shù)據(jù)場景較為復雜的情況下。在處理不同任務(wù)時,任務(wù)相似度引導的漸進階段需要有選擇地吸收不同任務(wù)間的知識,進而減少相關(guān)度小的任務(wù)間的負向影響,以此控制學習知識的穩(wěn)定性和緊湊性。
表7 不同敏感因子在SPLIT-CIFAR100數(shù)據(jù)集上的表現(xiàn)(10漸進任務(wù))Table 7 Performance of different sensitive factors on SPLIT-CIFAR100 dataset(10 tasks)
為了提高持續(xù)學習過程中的知識的前向遷移能力,本文提出了一種任務(wù)相似度引導的漸進深度網(wǎng)絡(luò)。一般的漸進神經(jīng)網(wǎng)絡(luò)PNN采用了參數(shù)獨立的思想,為每個任務(wù)額外分配網(wǎng)絡(luò)分支來漸進地學習任務(wù),以避免災(zāi)難性遺忘,且通過側(cè)邊連接的方式融合參數(shù)促進任務(wù)間的知識重用。本文認為不同任務(wù)域間的分布對漸進學習的參數(shù)遷移過程有重要影響。為避免任務(wù)間的負向遷移,將各任務(wù)的漸進塊間的參數(shù)級聯(lián),并以任務(wù)間相似度為參考修剪漸進塊的參數(shù),使當前任務(wù)能吸收先前任務(wù)重要的特征,從而提升當前任務(wù)的性能。實驗表明,該方法在多個的連續(xù)任務(wù)場景中對比單任務(wù)學習、多任務(wù)以及持續(xù)學習方法性能有較明顯的提升,且在各個任務(wù)的穩(wěn)定性也更佳,而對于不同的連續(xù)學習任務(wù)域需要選擇不同的任務(wù)相似度敏感因子。未來將關(guān)注差異更大的域之間任務(wù)對漸進式學習的影響以及探究在線的任務(wù)間相似度計算方法。