第3章
終身監督學習
本章介紹終身監督學習(Lifelong Supervised Learning,LSL)的現有技術。首先,我們使用一個例子說明為什麼跨任務資訊共享是有用的,以及這種資訊共享如何用于LSL。這個例子涉及産品評論情感分類,其任務是建構一個分類器,以便對評論表達的是正面或負面意見進行分類。在傳統的設定中,我們首先标記大量的正面意見評論和負面意見評論,然後使用分類算法(例如SVM)建構分類器。在LSL設定中,我們假設已經從許多以前的任務中進行過學習(這些任務可能來自不同的領域)。現在有一個任務,它有一個特定産品(即領域,如相機、手機或汽車)的評論集。我們可以使用樸素貝葉斯(Naive Bayesian,NB)分類技術建構分類器。在樸素貝葉斯分類中,我們主要需要在給定每個類y(正面或負面)時每個詞w出現的條件機率P(wy)。當有一個來自新領域D的任務時,我們的問題是究竟是否需要領域D的訓練資料。衆所周知,在一個領域建構的分類器在另一個領域的分類效果并不好,因為不同領域使用的表達意見的詞和語言結構可能是非常不同的[Liu,2012]。更糟的情況是,同一個詞在一個領域表達或暗示的可能是正面意見,而在另一個領域表達或暗示的可能是負面意見。是以在一些情況下該問題的答案為否,但在另一些情況下為是。
答案為否的原因是我們可以簡單地添加所有以前領域的訓練資料,然後建構一個分類器(可能這是最簡單的LL方法),這個分類器可能在一些新領域的分類任務中表現得很好。與隻用适量的新領域D的訓練樣本訓練出來的分類器相比,它可以更好地分類,因為情感分類效果主要取決于表達正面或負面意見的詞,稱之為情感詞。例如,好、極好和漂亮是正面情感詞,壞、不好和糟糕是負面情感詞。這些詞是跨領域和跨任務共享的,但是在一個特定的領域隻有少部分詞會被用到。在見過大量領域的訓練資料後,系統可以非常清晰地知道哪些詞更傾向于表達正面或負面意見。這說明系統已經認識那些正面和負面情感詞,即使不使用領域D的訓練評論資料,也可以很好地進行分類。在某種程度上,這和人類的情況是相似的。我們不需要一個單獨的正面或負面訓練評論,就能夠把評論分類為正面或負面,因為我們過去已經積累了許多人們用來贊美或者批評事物的語言表達知識。顯然,對于LL,使用一兩個過去的領域是不夠的,因為在這些領域中使用的情感詞可能是有限的,甚至可能對于新領域是無用的。許多非情感詞可能會被錯誤地視為情感詞。是以,資料的大規模和多樣性是LL的關鍵。
當然,這種簡單的方法不總是有效。這就是上述問題答案為是的原因(即需要一些領域内的訓練資料)。原因是從過去的領域識别的情感詞在一些領域中表達的情感可能是錯的。例如,詞“玩具”在評論中通常暗含負面意見,因為人們常常說“這個相機是個玩具”和“這個筆記本是個玩具”。但是,當我們對兒童玩具的評論進行分類時,詞“玩具”不表示任何情感。是以我們需要使用一些領域D内的訓練資料來檢測這樣的詞,以重寫關于這些詞的過去認知。事實上,這是為了解決1.4節中的知識适用性問題。經過糾正後,終身學習器可以做得更好。我們在3.5節會讨論具體的技術細節。在這種情況下,LSL的知識庫(Knowledge Base,KB)在每個以前的任務中都會存儲計算條件機率P(wy)所需的經驗計數。
本章回顧LSL的代表性技術。大部分技術隻需使用少量的訓練樣本就可以表現得很好。
3.1 定義和概述
我們首先根據第1章中終身學習(Lifelong Learning,LL)的一般定義給出終身監督學習(Lifelong Supervised Learning,LSL)的定義。然後簡要概述現有的工作。
定義 3.1 終身監督學習是一個連續的學習過程,其中學習器已經完成了一系列N個監督學習任務T1,T2,…,TN,并将學習的知識存儲在知識庫中。當新任務TN+1到達時,學習器使用知識庫中過去的知識幫助從TN+1的訓練資料DN+1中學習一個新的模型fN+1。在學習TN+1後,KB會使用從TN+1中學習的知識進行更新。
LSL最初來自Thrun的論文[1996b],在基于記憶的學習和神經網絡的背景下,他提出了幾個早期的終身學習方法,我們将在3.2節和3.3節對它們進行回顧。Silver和Mercer[1996,2002]以及Silver等人[2015]改進了神經網絡方法。在這些論文中,每個新任務都聚焦于學習一個新概念或新類。LL的目标是借助過去的資料建構一個二進制分類器來識别新類中的執行個體。Ruvolo和Eaton[2013b]提出了ELLA算法,它改進了多任務學習(MTL)方法GO-MTL[Kumar et al.,2012],并使之成為一個LL方法。Chen等人[2015]進一步提出一個在樸素貝葉斯分類背景下的技術。Clingerman和Eaton[2017]提出GP-ELLA來支援ELLA中的高斯過程。Xu等人[2018]根據元學習為詞嵌入提出了一個LL方法。Pentina和Lampert[2014]在PAC學習架構下進行了理論研究。它為LL提供了一個PAC貝葉斯泛化邊界,這個邊界可以量化新任務的期望損失和現有任務的平均損失之間的關系。具體方法是把先驗知識模組化成一個随機變量,通過最小化新任務的期望損失獲得其最優值。這種損失可以通過邊界從現有任務的平均損失中進行轉移。他們分别展示了在參數轉移[Evgeniou and Pontil,2004]和低次元表示轉移[Ruvolo and Eaton,2013b]上的兩種邊界的實作。在接下來的章節中,我們會介紹現有的主要LSL技術。
3.2 基于記憶的終身學習
Thrun[1996b]為兩個基于記憶的學習方法(K近鄰法和Shepard方法)提出了LSL技術,下面我們讨論這兩個方法。
3.2.1 兩個基于記憶的學習方法
K近鄰法(K-Nearest Neighbor,KNN)[Altman,1992]是一個廣泛使用的機器學習算法。給定一個測試執行個體x,算法在訓練資料〈xi,yi〉∈D中找到K個樣本,這些樣本的特征向量xi距離x最近,這裡的距離是根據一些距離度量(例如歐幾裡得距離等)計算得到的。預測的輸出是這些最近鄰的平均值1/K∑yi。
Shepard方法[Shepard,1968]是另一個常用的基于記憶的學習方法。與KNN中隻使用K個樣本不同,這個方法使用領域D中的所有訓練樣本,并根據每個樣本到測試執行個體x的反距離為其賦予權重,公式如下:

其中,ε>0是一個較小的常數,用以避免分母為零。KNN和Shepard方法都不能利用具有不同分布和不同類标的先前任務的資料來幫助分類。
3.2.2 終身學習的新表達
Thrun[1996b]提出為上述兩種基于記憶的方法學習一個新的表達來縮小任務之間的差距,進而實作終身學習,結果表明這種方法可以提高預測性能,尤其是在有标記的資料較少時。
這篇論文關注的是概念學習。它的目标是學習一個函數f:I→{0,1},其中f(x)=1表示x∈I屬于一個目标概念(例如,貓或狗);否則,x不屬于這個概念。例如,fdog(x)=1表示x是概念狗的一個執行個體。先将以前N個任務的資料定義為Dp={D1,D2,…,DN}。每個過去任務的資料Di∈Dp與一個未知的分類函數fi相關。Dp在Thrun[1996b]中被稱為支援集。目标是在支援集的幫助下為目前新任務資料DN+1學習函數fN+1。
為了縮小不同任務之間的差距并能夠使用過去資料(支援集)的共享資訊,這篇論文提出學習一個新的資料表達方式,即學習一個空間轉換函數g:I→I′,将I中原始的輸入特征向量映射到一個新空間I′。然後,将新空間I′作為KNN或Shepard方法的輸入空間。直覺上,同一個概念的正樣本(y=1)應該有相似的新表達,而同一個概念的正樣本和負樣本(y=1和y=0)應該有非常不同的表達。這個思想可以被公式化地表示為一個關于g的能量函數E:
通過最小化能量函數E獲得最優函數g*,這要求同一個概念的每對正樣本(〈x,y=1〉和〈x′,y′=1〉)之間的距離要小,同一個概念的一個正樣本(〈x,y=1〉)和一個負樣本(〈x′,y′=0〉)之間的距離要大。在Thrun[1996b]的實作中,g由一個神經網絡實作,并使用支援集和反向傳播方法進行訓練。
給定映射函數g*,與其在原始空間〈xi,yi〉∈DN+1完成基于記憶的學習,不如在使用KNN和Shepard方法之前,首先使用g*将xi轉化到新空間〈g*(xi),yi〉。
由于這個方法不儲存任何過去學習的知識,而隻是積累過去的資料,是以,如果過去的任務很多,它是非常低效的,因為每當新任務到來時,它需要使用所有過去的資料(支援集)重新完成整個優化。Thrun[1996b]還為上述基于能量函數的方法提出了一種替代方法,它可以根據支援集學習一個距離函數,這個距離函數會在接下來的基于記憶的終身學習中被用到。這個方法有相似的缺點,即沒有解決共享知識g*的正确性和适用性問題(1.4節)。
3.3 終身神經網絡
這裡我們介紹LSL的兩個早期的神經網絡方法。
3.3.1 MTL網絡
盡管 MTL網絡[Caruana,1997]在Thrun[1996b]中被描述成一個LL方法,但它實際上是一個批量MTL方法。根據我們對LL的定義,它們是不同的學習範式。然而,由于曆史原因,我們仍然在這裡對它進行簡單的讨論。
MTL網絡不是為每個單獨的任務建立一個神經網絡,而是為所有任務建構一個通用神經網絡(見圖3.1)。在這個通用神經網絡中,所有任務的輸入都使用同一輸入層,每個任務(即在目前情況下的類)使用一個輸出單元。MTL也有一個共享的隐藏層,它使用反向傳播[Rumelhart et al.,1985]在所有任務上并行訓練,以最小化所有任務的誤差。這個共享層允許為一個任務開發的特征被其他任務使用。是以一些開發的特征可以表示這些任務的共同特性。針對一個具體的任務,它會激活一些與它有關的隐藏單元,同時使得與它無關的隐藏單元的權重變小。本質上,與标準的批量MTL方法一樣,這個系統會聯合優化所有過去/以前和現在/新任務的分類。是以,根據本書的定義(見2.2.4節)它不被視為一種LL方法。Silver和Mercer[2002]以及Silver和Poirier[2004,2007]對MTL網絡進行了擴充,他們通過生成和使用虛拟的訓練樣本來解決所有以前任務對訓練資料的需求,并以此增加上下文資訊。
3.3.2 終身EBNN
這種LL方法是在EBNN(Explanation-Based Neural Network,基于解釋的神經網絡)[Thrun,1996a]背景下同樣使用以前任務的資料(或支援集)來改進學習。正如3.2.2節所述,概念學習是這個工作的目标,即通過學習一個函數f:I→{0,1}來預測一個由特征向量x∈I表示的對象是(y=1)否(y=0)屬于一個概念。
在這個方法中,系統首先學習一個一般距離函數d:I×I→[0,1],在此過程中考慮所有過去的資料(或支援集),并使用這個距離函數将從過去任務學習到的知識共享或遷移到新任務TN+1中。給定兩個輸入向量(如x和x′),無論是什麼概念,函數d都可以計算x和x′屬于同一概念(或類)的機率。Thrun[1996b]使用神經網絡來學習d,并使用反向傳播訓練神經網絡。用于學習距離函數的訓練資料按如下方式生成:對于每個過去任務的資料Di∈Dp,概念的每對樣本生成一個訓練樣本。一對樣本〈x,y=1〉∈Di和〈x′,y′=1〉∈Di可以生成一個正訓練樣本〈(x,x′),1〉。一對樣本〈x,y=1〉∈Di和〈x′,y′=0〉∈Di,或者〈x,y=0〉∈Di和〈x′,y′=1〉∈Di,可以生成一個負訓練樣本〈(x,x′),0〉。
利用學習到的距離函數,EBNN按如下方式工作:不像傳統的神經網絡,EBNN在每個資料點x估算目标函數的斜率(正切),并将它加入資料點的向量表達中。在新任務TN+1中,一個訓練樣本的表示形式是〈x,fN+1(x),▽xfN+1(x)〉,其中,fN+1(x)是x∈DN+1(新任務的資料)的原始類标。這個系統使用正切傳播(Tangent-Prop)算法[Simard et al.,1992]進行訓練。▽xfN+1(x)是使用從神經網絡獲得的距離d的梯度估算的,即
,其中,〈x′,y′=1〉∈DN+1,dx′(x)=d(x,x′)。這裡的基本原理是,x與一個正訓練樣本x′之間的距離是x為正樣本的機率估算,近似于fN+1(x)。是以,通過▽xfN+1(x)和d,所建構的EBNN既适用于目前的任務資料DN+1,也适用于支援集。
與3.2節的終身KNN相似,在這種情況下,這個系統中學習距離函數(共享知識)和完成EBNN的部分是1.4節提到的基于知識的學習器。再次,知識庫隻存儲過去的資料。同樣,這種技術也沒有解決共享知識d的正确性和适用性問題(參見1.4節)。
與終身KNN一樣,由于終身EBNN也不存儲在過去學習的任何知識,而隻是積累過去的資料,是以當以前的任務很多時,它是非常低效的。因為每當一個新任務到達時,它都需要使用所有過去的資料(支援集)來重新訓練距離函數d。另外,由于學習距離函數d所用的一個訓練樣本由每個過去任務資料集的每對資料點組成,是以,用于學習d的訓練資料可以非常多。
3.4 ELLA:高效終身學習算法
本節讨論由Ruvolo和Eaton[2013a,b]提出的 終身監督學習(Lifelong Supervised Learning,LSL)系統 ELLA(Efficient Lifelong Learning Algorithm,高效終身學習算法)。它為所有任務模型維持着一個稀疏共享基礎(過去的知識),然後将知識從基礎遷移到新任務,并不斷改善基礎以最大化所有任務的性能。不像累積學習,ELLA中的每個任務都獨立于其他任務。ELLA也遵循MTL的傳統,目标是優化所有任務的性能。LL的許多其他方法主要優化新任務的性能,盡管在有需要時,它們可以幫助優化任何以前的任務。為了友善參考,在下面的介紹中我們盡可能使用與原論文相同的符号。
3.4.1 問題設定
與在一般的LL問題中一樣,ELLA以終身方式接收一系列的監督學習任務1,2,…,N。每個任務t有它的訓練資料Dt={(xti,yti):i=1,…,nt},其中nt是Dt中訓練執行個體的數量,Dt由一個從執行個體空間
到标簽集Yt(或對于回歸問題來說yt=R)的隐藏的(或潛在的)真實映射ft(x)定義。d表示特征次元。
ELLA擴充批量MTL模型GO-MTL[Kumar et al.,2012](也在2.2.2節)以使其更加高效并成為一種增量或線上MTL系統,它被看作是一種LL系統。與Go-MTL類似,ELLA使用一種參數化方法建立模型,其中每個任務t的模型或預測函數ft(x)=ft(x;θt)被一個特定任務的參數向量θt∈Rd控制。ELLA的目标是建立任務模型f1,…,fN,使得
1.對每個任務,都有ft≈ft;
2.當新任務t的訓練資料到達時,可以很快增加一個新模型ft;
3.在增加新任務後,可以高效地更新每個過去的模型ft。
ELLA假設任務的總數量、分布和順序都是未知的[Ruvolo and Eaton,2013b]。它也假設任務的數量可能很多,而且每個任務可能有大量的資料點。是以,我們需要一種有效且高效的LL算法。
3.4.2 目标函數
ELLA使用與GO-MTL模型[Kumar et al.,2012](見2.2.2節)同樣的方式,對所有的任務模型保持k個稀疏共享的基礎模型元件。
表示k個基礎模型元件。假定每個任務模型的參數向量θt是權重向量st∈Rk和基礎模型元件L的一個線性組合,我們可以得出下面的公式(與公式(2.7)相同):
其中,
。對每個任務t,θt=Lst。ELLA的初始目标函數與GO-MTL中的公式(2.8)一樣,隻不過它優化的是所有任務訓練資料的平均(而不是總和)損失,這對保證收斂性很重要:
。因為目标函數在L和st上不是共凸的,為了優化它,我們可以使用一種常見的方法計算局部最優值,即交替地進行固定L優化st和固定st優化L。但是,正如Ruvolo和Eaton[2013b]指出的,上面的目标函數存在兩個主要的低效問題(GO-MTL中也存在)。
1.對所有以前的訓練資料的顯式依賴(通過内在總和)。就是說,為了計算目标函數,我們需要疊代所有任務的所有訓練執行個體來計算損失函數值。如果任務的數量很大,或者每個任務的訓練執行個體的數量很大,疊代的效率會很低。
2.當在公式(3.4)中評估一個單一候選L時,為了重新計算每個st的值,必須解決優化問題。這意味着當L更新時,每個st都要更新。當任務越來越多時,代價會越來越高。
Ruvolo和Eaton[2013b]提出了一些近似技術來解決上面兩個低效問題,我們會在下面進行詳述。其基本思想是,以從過去任務中學到的模型元件為基礎,使用單個任務的解作為一個估算點來近似地拟合新任務模型,然後更新該基礎以吸收來自新任務中的新知識。
3.4.3 解決第一個低效問題
為了解決第一個問題,Ruvolo和Eaton[2013b]使用二階泰勒展開式進行近似。在給出技術細節之前,我們先簡單地回顧一些數學基礎。
泰勒展開式
在單變量情況下,即當g(x)是個一進制函數時,在一個常數a附近的二階泰勒展開式是:
其中g′()和g″()是函數g的一階和二階導數。
在多變量情況下,即當g(x)是個多元函數時(假定x有n個值),在一個n(n為常數)維向量a附近的二階泰勒展開式是:
其中‖v‖2A=vTAv,H(a)稱為函數g的海森矩陣。
無限制優化的優化條件
考慮最小化函數f∶Rn→R問題,其中f在Rn上二次連續可微:
定理3.2 求最優的一階必要條件。使函數f∶Rn→R在點x∈Rn處可微。如果x是局部最小點,那麼
。
證明 根據一階泰勒展開式的定義,有:
也就是,
其中
使
,其中α是一個正常數。把它插入到公式(3.9),那麼:
取極限
時,得到:
是以,
移除依賴
我們回到ELLA算法。為了移除對所有任務訓練資料的顯式依賴,它使用二階泰勒展開式近似公式(3.4)中的目标函數。首先定義函數g(θt)如下:
其中θt=Lst。那麼公式(3.4)中的目标函數變為:
假設函數g的最小解是
,即
(它是一個僅在任務t的訓練資料上學習得到的最優預測器)。那麼,
附近的二階泰勒展開式如下:
是函數g的海森矩陣。
鑒于公式(3.13)的外部最小化使用到了函數g,那麼公式(3.14)的第一個常數項可以被移除。根據一階必要條件(定理3.2),由于
是函數g的局部最小解,是以▽g(
)=0,進而公式(3.14)的第二項也可以移除。是以,将函數g插入公式(3.13)後得到的新目标函數為:
由于
,公式(3.15)可以重寫為:
注意,如果任務t的訓練資料不改變,
會保持不變。是以,公式(3.16)中的新目标函數移除了要對所有以前任務的訓練資料進行優化的依賴。
3.4.4 解決第二個低效問題
第二個低效問題是當計算單一候選L時,為了重新計算每個st的值,必須要解決一個優化問題。為了解決這個問題,Ruvolo和Eaton[2013b]采取了以下政策:當最近一次遇到任務t的訓練資料時,隻更新st,其他任務t′的st′保持不變。也就是,當最近一次遇到任務t的訓練資料時計算st,之後在其他任務上訓練時不再更新st。盡管這看起來阻止了以前的任務對後面的任務産生影響,但它們會從基礎潛在模型元件L的後續調整中獲益。使用之前計算的st的值,執行下面的優化過程:
其中符号Lm指的是在第m次疊代時潛在元件的值,假定t是剛到達的訓練資料所對應的任務。注意,若t是已有的任務,新訓練資料會被合并到t的已有的訓練資料。
有關先前公式中更新執行的具體步驟,請參考原論文。它們取決于使用的模型和損失函數的類型。論文介紹了兩種情況:線性回歸和邏輯回歸。
3.4.5 主動的任務選擇
在上面的問題設定(3.4.1節)中,LL是一個被動的過程,即系統無法控制學習任務出現的順序。Ruvolo和Eaton[2013a]考慮在主動任務選擇的設定中使用ELLA。假設有一個候選任務池,Ruvolo和Eaton[2013a]不像ELLA中随機選擇一個任務,他們以一定的順序選擇任務,其目的是使用盡可能少的任務來最大化未來的學習性能。這是個實際的問題,因為每個學習任務可能需要大量的時間進行手工标記或者每個學習任務可能需要系統運作很長時間。在這種情況下,按照一定順序選擇一些任務的高效學習方式在實際的LL問題上更具有擴充性。
主動任務選擇設定
LL中的主動任務選擇設定定義如下:與在正常的LL中對任務t的訓練資料模組化不同,這個系統可以從一個候選池Tpool中選擇任務,候選池由未學習的候選任務組成。對每個候選任務t∈Tpool,僅訓練執行個體中的一個子集是有标記的,它被表示為Dtc=(Xtc,Ytc)。基于這些小子集,選擇要學習的下一個任務tnext∈Tpool。之後,tnext的所有訓練資料會顯示出來,被表示為Dtnext=(X(tnext),Y(tnext))。注意,對每個任務t,
。候選池的規模可以是固定的,也可以在學習中動态地增加/減少。
多樣化方法
這裡我們介紹Ruvolo和Eaton[2013a]為主動任務選擇提出的多樣化方法,他們表明,與論文中使用的其他方法相比,該方法的性能是最好的。在ELLA的背景下,為了最大化在未來任務中的性能,模型應該有一組靈活且魯棒的潛在元件,即L。換句話說,L應該适用于各種各樣的任務。如果L不能很好地适用于新任務t,這表示t中的資訊在目前的L中沒有被很好地表示。是以,為了使能解決的任務範圍最廣,下一個任務應該是目前基礎L執行得最差的一個,即在标記資料子集上的損失是最大的。這種啟發式方法的描述如下:
是從有标記的資料Dtc的子集中得到的。由于公式(3.17)傾向于選擇對目前基礎L編碼較差的任務,是以被選擇的任務可能與現有的任務非常不同,由此該方法可以促使任務多樣化。
另一種方法(稱為Diversity++)不簡單地選擇有最大損失值的任務,而是先用任務t的最小損失值的平方來估算選擇任務t的機率,如下所示:
然後每次根據機率p(tnext)采樣一個任務,是以,這是上述差異化方法的一個随機變體。
3.5 終身樸素貝葉斯分類
本節介紹Chen等人[2015]提出的終身NB分類(lifelong NB classification)技術。它被應用于情感分析任務,可以對一個産品評論表達的内容是正面或負面意見進行分類。這個系統稱為LSC(lifelong sentiment classification,終身情感分類)。下面我們首先簡單介紹NB分類公式,然後介紹它在情感分類中的終身擴充形式。為友善參考,我們遵循原論文中使用的符号。
3.5.1 樸素貝葉斯文本分類
用于文本分類的NB是一個生成模型,它由混合多項分布構成。每個多項分布(稱為一個混合元件)是單類文檔的生成器。訓練一個NB模型就是尋找每個多項分布的參數和混合權重。對于文本分類來說,上面的思想可以解釋為:給定訓練文檔集D={d1,d2,…,dD}、詞彙集V(D中不同單詞或詞語的集合)和與D相關的類集C={c1,c2,…,cC},NB通過計算給定每個類cj時每個單詞w∈V出現的條件機率,即P(w|cj)(類cj的模型參數),和每個類的先驗機率,即P(cj)(混合權重),來訓練分類器[McCallum and Nigam,1998]。
根據經驗詞計數,按如下方式估算P(w|cj):
其中,Ncj是單詞w在cj類文檔中出現的次數。λ(0≤λ≤1)用于平滑處理,當λ=1時,是衆所周知的拉普拉斯平滑。每個類的先驗機率P(cj)按如下方式估算:
其中,如果cj是訓練文檔di的标簽,則P(cj|di)=1,否則為0。
在測試時,給定一個測試文檔d,NB對每個類cj計算後驗機率P(cj|d),然後選擇機率P(cj|d)最大的類作為分類結果:
其中,nw,d是單詞w在d中出現的次數。
NB是對LL自然的契合,因為過去的知識可以很容易地充當新任務機率的先驗。LSC利用了這個思想。我們首先回答情感分類背景下兩個具體的問題。第一個問題是既然目前任務已經有已标記的訓練資料,為什麼過去的學習依然能為新/目前任務的分類做出貢獻。回答是,由于存在樣本選擇偏差[Heckman,1979;Shimodaira,2000;Zadrozny,2004]和/或訓練資料規模較小,訓練資料可能不能完全代表測試資料,正如Chen等人[2015]論文中的情況。例如,在情感分類應用中,測試資料可能包含一些在目前訓練資料中沒有,但是在一些以前任務的評論資料中出現過的情感詞。是以,過去的知識可以為目前的新任務提供先驗的情感極性資訊。注意,對于情感分類,情感詞比如好、非常好、糟糕和不好是有用的。同時應注意Chen等人[2015]論文中的每個任務實際上來自不同的領域(或産品)。是以,從現在開始我們交替地使用任務和領域這兩個詞。
第二個問題是為什麼即使過去的領域非常不相同,并且與目前的領域也非常不相似,但過去的知識依然有用。主要原因是在情感分類中,情感詞和表達在很大程度上是獨立于領域的。也就是說,它們的極性(正面或負面)通常是跨領域共享的。是以,系統在學習了大量以前/過去的領域後,已經學到了很多正面和負面的情感詞。同時值得重點關注的一點是,隻有一個或兩個過去的領域是不夠的,因為在有限的領域中情感詞的覆寫率較低。
3.5.2 LSC的基本思想
本小節介紹LSC技術的基本思想。我們首先讨論LSC知識庫中存儲的内容。
知識庫
對于每個單詞w∈Vp (其中Vp是所有以前任務的詞彙),知識庫KB存儲兩種類型的資訊:文檔級知識和領域級知識。
- 文檔級知識 :在之前任務的正(和負)類文檔中w出現的次數。
帶你讀《終身機器學習(原書第2版)》之三:終身監督學習 - 領域級知識 :滿足P(w|+)>P(w|-)(和P(w|+)
帶你讀《終身機器學習(原書第2版)》之三:終身監督學習
領域級知識和文檔級知識是互補的,因為w可能極端頻繁地出現在某一領域,而很少出現在其他領域,這會導緻該領域在文檔級别對w産生多餘的影響。
使用知識的一種樸素方法
我們從3.5.1節可以看出影響NB分類結果的關鍵參數是
,它是用經驗計數
和該類文檔中詞彙總數計算的。在二進制分類中,P(w|cj)是用
計算的。這表示我們可以适當地修改這些計數以提升分類效果。給定新任務資料
,我們用詞w在
的正(和負)類文檔中的出現次數表示經驗詞計數
。這裡,我們顯式地使用上标t來區分它與以前的任務,這樣,任務就變成如何有效地使用KB中的知識來更新詞計數,進而建構一個更好的NB分類器。
給定過去學習任務的知識庫KB,建構分類器的一個簡單的方法是将KB中的計數(作為先驗)和Dt中的經驗計數
相加,即
和
。這裡稱
為虛拟計數,我們将使用下一小節讨論的優化方法更新它們。在建構分類器時,分别用
替換公式(3.19)中的
(即
)。這種簡單方法在許多情況下都表現得非常好,但是它有兩個缺點:
1.過去領域包含的資料通常遠多于目前的領域,這表示
可能遠大于
。是以,過去領域的KB中的計數可能會主導合并後的結果。
2.它不考慮依賴領域的詞極性。一個詞在目前的領域可能是正面的,但是在過去的領域可能是負面的。例如,由于過去有很多像“這個産品是個玩具” 的語句,詞“玩具”在過去的領域中可能是負面的。但是,在玩具領域,這個詞并不表示情感。
LSC系統使用優化方法解決這兩個問題。
3.5.3 LSC技術
LSC使用随機梯度下降(Stochastic Gradient Descent,SGD)通過調整X+,w和X-,w(虛拟計數)來最小化訓練誤差,X+,w和X-,w分别表示詞w出現在正類和負類中的次數。
為了正确地分類,理想情況下,每個正類(+)文檔di應該有後驗機率P(+|di)=1,每個負類(-)文檔di應該有P(-|di)=1。在随機梯度下降中,我們優化每個di∈Dt的分類。Chen等人[2015]對每個正類文檔di使用如下的目标函數(也可以為每個負類文檔構造出類似的目标函數):
我們省略推導步驟,隻在下面給出最後的公式。為了簡化公式,我們定義一個與X有關的函數g(X),其中X是由每個詞w的X+,w和X-,w組成的向量:
在随機梯度下降中,我們使用如下公式為正類文檔di疊代地更新變量X+,u和X-,u:
其中,u表示di中的每個詞。γ是學習速率,l表示每次疊代。針對每個負類文檔di,也可推導出相似的更新規則。
作為初始點。當計數收斂時疊代更新過程停止。
通過懲罰項利用知識
上面的優化方法可以更新虛拟計數來實作在目前領域更好的分類。但是,它沒有解決領域依賴的情感詞問題,即一些詞可能在不同的領域中改變它們的極性。并且它也沒有使用知識庫KB中的領域級知識(3.5.2節)。是以,我們提出在優化中加入懲罰項來實作這些内容。
這個思想是,如果在目前領域的訓練資料中一個詞w可以很好地區分類,那麼我們應該更依賴目前領域的訓練資料。是以,我們定義一個目前領域中的區分詞的集合VT。如果在目前的領域中P(w|+)遠大于或遠小于P(w|-),即
或
,其中σ是一個參數,那麼詞w屬于VT。這些詞在目前領域的分類中已經很有效了,是以優化中的虛拟計數應該遵循目前的任務/領域的經驗計數(Nt+,w和Nt-,w),這些内容反應在如下的L2正則化懲罰項(α是正則化系數)中:
為了使用領域級知識(3.5.2小節中KB存儲的第二種知識類型),我們隻想使用知識中那些可靠的部分。這裡的基本原理是,如果一個詞隻出現在一個或兩個過去的領域,那麼與它相關的知識可能是不可靠的,或者它是那些領域特有的。根據這個思想,我們用域頻次來定義領域級知識的可靠性。對于w,如果MKB+,w≥τ或MKB-,w≥τ(τ是一個參數),那麼認為它出現在合理數量的領域内,它的知識是可靠的。我們用VS表示這樣的詞的集合,那麼,第二個懲罰項是:
其中,比率Rw被定義為
,
是SGD的初始點。最後,通過加入公式(3.27)和(3.28)中對應的偏導數,對公式(3.24)、(3.25)和(3.26)中的偏導數進行修正。
3.5.4 讨論
這裡我們要讨論對LSC的可能的改進和一個與之相關的基于投票的終身情感分類的工作。
LSC的可能改進
目前為止,我們已經讨論了如何使用從過去任務學習的先驗機率知識來改進未來任務的學習。這裡有一個問題是,我們是否也可以使用未來學習的結果反過來幫助過去的學習。這是有可能的,因為通過把有待改進的過去的任務看作未來任務,并把所有其餘的任務看作過去的任務,我們可以應用同樣的LSC技術。這個方法的缺點是我們需要過去任務的訓練資料。但是,如果過去任務的訓練資料被遺忘(像在人類學習中),會發生什麼?這是一個有趣的研究問題,我相信這是可能的。
基于投票的終身情感分類
Xia等人[2017]通過對各個任務分類器投票為情感分類提出了兩個LL方法。第一個方法為每個任務分類器配置設定同等的權重并進行投票,使用這個方法可以幫助過去的任務。第二個方法使用權重投票,但是,與LSC一樣,它需要過去任務的訓練資料來改進它的模型。此外,它們的任務實際上來自相同的領域,因為它們把同一個資料集劃分為多個子集,并把每個子集看作一個任務。而LSC中的任務來自于不同的領域(不同類型的産品)。
3.6 基于元學習的領域詞嵌入
LL也可以通過元學習實作。本節描述這樣一個方法,它的目标是在沒有大型語料庫的情況下改進領域的詞嵌入。近年來,詞嵌入學習[Mikolov et al.,2013a,b;Mnih and Hinton,2007;Pennington et al.,2014;Turian et al.,2010]獲得了極大的關注,因為它成功地應用在很多自然語言處理(Natural Language Processing,NLP)問題中。詞嵌入成功的“秘方”是使用由大規模的語料庫轉變而成的數量巨大(例如,百萬級别)的訓練樣本來學習詞的“語義含義”,它可以用于執行許多下遊的NLP任務。詞嵌入在下遊任務中的有效性通常基于兩個隐式假設:(1)詞嵌入的訓練語料庫是可用的,而且規模遠大于下遊任務的訓練資料,(2)詞嵌入語料庫的主題(領域)和下遊NLP任務的主題是緊密聯系的。但是,許多實際應用不同時滿足這兩個假設。
在很多情況下,領域内語料庫的規模有限,不足以訓練出好的詞嵌入。在這樣的應用中,研究者和實踐者通常隻使用一些通用的詞嵌入,這些詞嵌入是用幾乎覆寫了所有可能主題的非常大量的通用語料庫(這滿足第一個假設)訓練得到的,例如,使用覆寫了網際網路上幾乎所有主題或領域的8400億符号訓練得到的著名的GloVe嵌入[Pennington et al.,2014]。在許多特定領域的任務中,這樣的詞嵌入被證明可以工作得很好。這并不令人意外,因為一個詞的含義在很大程度上是跨領域和任務共享的。但是,這種解決方案違反了第二個假設,這通常會導緻在特定領域的任務[Xu et al.,2018]中得到次優結果。一種顯而易見的解釋是,通用的詞嵌入确實為該領域任務的許多詞提供了一些有用的資訊,但是在該領域中詞嵌入的表達并不理想,而且在一些情況下它們甚至可能和該任務領域的一些詞的含義存在沖突,因為詞通常有多種意義和含義。例如,有一個程式設計領域的任務,它有一個詞“Java”。一個大規模的通用語料庫更可能包含的是關于咖啡商店、超市、印度尼西亞的爪哇島等的文本,很容易擠壓表達“Java”上下文的詞的空間,比如,程式設計領域的“函數”“變量”和“Python”。這會導緻詞“Java”在程式設計領域任務中有一個較差的表達。
為了解決這個問題以及領域内語料庫規模有限的問題,[Bollegala et al.,2015,2017;Yang et al.,2017]研究了基于遷移學習的跨領域嵌入。這些方法允許一些域内詞使用通用的嵌入,希望在通用嵌入中這些詞的含義和這些詞在域内的含義不會相差太多。是以這些詞的嵌入可以得到改進。但是,這些方法不能改進許多其他具有特定領域含義的詞(例如,“Java”)的嵌入。此外,一些通用嵌入中的詞可能具有與任務領域中的詞不同的含義。
Xu等人[2018]提出通過擴充領域内語料庫改進基于LL的領域嵌入。問題陳述如下:假設學習系統在過去已經看過N個領域的語料庫:D1∶N={D1,…,DN},當帶有領域語料庫DN+1的新任務到達時,系統通過使用過去N個領域中的一些有用的資訊或知識,自動地為第(N+1)個領域生成詞嵌入。
這個問題的主要挑戰有兩個:(1)不依賴人工的幫助,如何自動地從過去的N個領域識别相關的資訊/知識,(2)如何把相關的資訊整合到第(N+1)個新領域的語料庫中。Xu等人[2018]提出基于元學習的算法L-DEM(Lifelong Domain Embedding via Meta-learning,L-DEM)來解決這些挑戰。
為了解決第一個挑戰,對新領域的一個詞,L-DEM會在過去的領域中學習識别這個詞的相似上下文。這裡,領域中一個詞的上下文指的是在這個領域語料庫中該詞周圍的詞,稱為這個詞的領域上下文。為此,他們介紹了一個多領域元學習器,該元學習器使用多個領域的資料(語料庫)學習一個元預測器,這個元預測器被稱為基礎預測器。當一個新領域和它的語料庫到達時,系統首先調整基礎預測器使它适合新領域。得到的特定領域的元預測器用于為新領域的每個詞在每個過去的領域中識别相似的(或相關的)領域上下文。用于元學習和領域适應的訓練資料是自動生成的。為解決第二個挑戰,L-DEM利用元預測器從過去的領域語料庫中生成的相關領域上下文(知識)來擴充新領域的語料庫,并使用合并的資料為新領域訓練詞嵌入。例如,對于程式設計領域(新領域)的詞“Java”,元預測器可能從一些以前的領域(例如,程式設計語言、軟體工程、作業系統等)産生相似的領域上下文。這些領域上下文會和新領域的語料庫合并在一起,為“Java”訓練新的域嵌入。詳細的技術很複雜,有興趣的讀者請參考Xu等人[2018]。
3.7 小結和評估資料集
終身學習盡管始于20多年前的監督學習,但現有的工作在多樣性和深度上仍然具有一定的局限性。目前仍然沒有通用的機制或算法可以像諸如SVM、樸素貝葉斯或深度學習等現有的機器學習算法一樣應用于任意的任務序列,而這些機器學習算法可以應用在幾乎任何監督學習任務中。造成這種情況的原因有很多。最重要的原因可能是研究社群對于知識的一般含義、如何表達知識和如何在學習中有效地利用知識還沒有很好的認識。是以,我們迫切需要一套統一的關于知識及其相關問題的理論。另一個原因是監督學習的知識很難跨領域地使用,因為針對特定的任務進行了高度優化的模型在某種程度上使得優化成為重用或遷移的障礙。我們很難選擇一些從以前任務或領域學習到的知識碎片并将其應用到新的任務中,因為模型通常是不可分解的。例如,我們很難重用SVM模型中的任何知識或将其應用在不同但相似的任務中。更簡單的模型通常更容易重用。例如,我們不難從基于規則的分類器中選擇一些規則去幫助學習一個新任務。這可能是人類學習不被優化的原因,因為人類大腦不善于優化,而且人類的智慧需要靈活性。
評估資料集:為了幫助該領域的研究人員,我們總結了本章涉及的論文中所使用到的評估資料集。對那些公開可用的資料集,我們将提供它們的連結。
Thrun[1996b]在評估中使用了一個包含不同物體(例如瓶子、錘子和書)的彩色圖檔的資料集。Caruana[1997]使用了道路跟蹤領域的資料集1D-ALVINN[Pomerleau,2012]。他們也建立了目辨別别領域的資料集1D-DOORS[Caruana,1997]。另外,一個醫學決策應用也在Caruana[1997]中被測試。Ruvolo和Eaton[2013b]在它們的評估中使用了三個資料集。第一個是來自Xue等人[2007]的地雷資料集,它根據雷達圖檔探測一片區域是否存在地雷。第二個是Valstar等人[2011]中的面部表情識别挑戰資料集。第三個是倫敦學校資料集。Chen等人[2015]使用來自20個不同産品領域的亞馬遜評論進行評估,它是Chen和Liu[2014b]中的資料集的子集。Xu等人[2018]使用來自He和McAuley[2016]的亞馬遜評論資料集,它是一個組織在多個層次上的多領域語料庫的集合。這篇論文把每個第二層的類屬(第一層是部門)看作一個領域,将每個類下面的所有評論合并為一個領域語料庫,最終得到一個領域非常多樣化的集合。