在達(dá)觀數(shù)據(jù)舉辦的自然語(yǔ)言處理學(xué)術(shù)交流研討會(huì)上,有幸邀請(qǐng)到復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院邱錫鵬教授前來(lái)做客活動(dòng)現(xiàn)場(chǎng),并和大家分享了《自然語(yǔ)言處理中的多任務(wù)學(xué)習(xí)》的主題報(bào)告。以下為現(xiàn)場(chǎng)分享內(nèi)容整理,內(nèi)容略有刪減。
本次分享內(nèi)容圍繞基于深度學(xué)習(xí)的自然語(yǔ)言處理、深度學(xué)習(xí)在自然語(yǔ)言處理中的困境、自然語(yǔ)言處理中的多任務(wù)學(xué)習(xí)、新的多任務(wù)基準(zhǔn)平臺(tái)四大模塊展開(kāi)。
?
?
什么是自然語(yǔ)言處理?自然語(yǔ)言就是人類語(yǔ)言,區(qū)別于程序語(yǔ)言,目前來(lái)講自然語(yǔ)言處理有很多方面,是一個(gè)非常大的學(xué)科。包括語(yǔ)音識(shí)別、自然語(yǔ)言理解、自然語(yǔ)言生成、人機(jī)交互以及所涉及的中間階段。
自然語(yǔ)言的發(fā)展經(jīng)歷了從規(guī)則到統(tǒng)計(jì)再到深度學(xué)習(xí)的過(guò)程,在深度學(xué)習(xí)方法大規(guī)模應(yīng)用之前,自然語(yǔ)言處理主要存在兩種學(xué)派,基于規(guī)則(rule-based)的符號(hào)學(xué)派和基于概率方法的統(tǒng)計(jì)學(xué)派。Noam Chomsky是前者的代表人物。在1990以前,自然語(yǔ)言處理多采用人工規(guī)則的方法,其后,在語(yǔ)料庫(kù)(corpus-based)數(shù)據(jù)驅(qū)動(dòng)(data-deriven)下,基于統(tǒng)計(jì)或機(jī)器學(xué)習(xí)模型的概率學(xué)方法成為主流。2012年以后,基于神經(jīng)網(wǎng)絡(luò)(neural-based)的方法開(kāi)始大規(guī)模應(yīng)用,以Sequence to Sequence Learningwith Neural Networks論文為代表的端到端模型在實(shí)踐中取得重大突破。
?
在研究領(lǐng)域,工作重心也轉(zhuǎn)變到了深度學(xué)習(xí)方法之上。早期NLP基本上有很多方式,各種各樣的建模,把大系統(tǒng)拆成小塊,把小塊做好?,F(xiàn)在更容易一些,端到端的系統(tǒng),中間是神經(jīng)網(wǎng)絡(luò)。
?
?
目前NLP的現(xiàn)狀是,我們所謂的深度學(xué)習(xí)其實(shí)模型并不深。一個(gè)主要原因在于NLP的數(shù)據(jù)量不夠,因?yàn)闃?biāo)注成本太高。與圖像標(biāo)注不同的是,NLP更需要認(rèn)知,通常需要專家來(lái)進(jìn)行標(biāo)注,所以成本非常高。
?
標(biāo)注成本高需要我們轉(zhuǎn)變思路:能否從學(xué)習(xí)框架上改變?現(xiàn)在用的非常多的比如無(wú)監(jiān)督預(yù)訓(xùn)練,多任務(wù)學(xué)習(xí)和深度學(xué)習(xí)。
?
1.無(wú)監(jiān)督預(yù)訓(xùn)練
?
去年暑假時(shí)很多報(bào)告在說(shuō)ELMo,下半年就出現(xiàn)了另外一個(gè)BERT。相較于只有3層的ELMO,BERT具有12層網(wǎng)絡(luò)結(jié)構(gòu),,并且證明在NLP里仍然有足夠強(qiáng)大的表現(xiàn)能力。所以我們現(xiàn)在的問(wèn)題是,NLP的數(shù)據(jù)不足,很大層面是通過(guò)大量標(biāo)注數(shù)據(jù)來(lái)輔助訓(xùn)練,很多人把這種方法叫做自監(jiān)督訓(xùn)練。
?
?
在NLP中表示學(xué)習(xí)依然十分重要,什么是好的文本表示?“好的表示”是一個(gè)非常主觀的概念,沒(méi)有一個(gè)明確的標(biāo)準(zhǔn)。一般而言,一個(gè)好的表示具有以下幾個(gè)優(yōu)點(diǎn):
?
1.應(yīng)該具有很強(qiáng)的表示能力
2.應(yīng)該使后續(xù)的學(xué)習(xí)任務(wù)變得簡(jiǎn)單
3.??應(yīng)使后續(xù)的推斷任務(wù)變得簡(jiǎn)單
?
2.多任務(wù)學(xué)習(xí)
?
從上面三點(diǎn)出發(fā),就對(duì)應(yīng)到了多任務(wù)學(xué)習(xí)。我們的目標(biāo)是學(xué)到一個(gè)表示,對(duì)所有任務(wù)都試用。既然這樣,就直接讓多任務(wù)一起學(xué),把所有任務(wù)數(shù)據(jù)放到一起進(jìn)行學(xué)習(xí)。舉個(gè)例子,比如說(shuō)有在三元組處理的POS標(biāo)簽和Chunking,用一個(gè)模型解決兩件事。
多任務(wù)學(xué)習(xí)在1997年被提出來(lái)。多任務(wù)學(xué)習(xí)加NLP在傳統(tǒng)離散表示的時(shí)候,非常難,如何設(shè)置共享的表示很困難,因?yàn)槭请x散的空間很難投影做互相轉(zhuǎn)化。現(xiàn)在,基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法的應(yīng)用,使得多任務(wù)學(xué)習(xí)變得十分簡(jiǎn)單。
多任務(wù)學(xué)習(xí)和幾類學(xué)習(xí)特別相似,一類是多標(biāo)簽學(xué)習(xí),是指一個(gè)X進(jìn)去,多個(gè)Y出來(lái)。一句話既可以有實(shí)體,還有實(shí)體之間的關(guān)系,相當(dāng)于同樣X上有不同的標(biāo)簽。多任務(wù)學(xué)習(xí)可能一個(gè)X在每個(gè)任務(wù)上只有一種標(biāo)簽,不同X有不同的標(biāo)簽。它的標(biāo)簽是離散的,一個(gè)句子一般不會(huì)把所有任務(wù)標(biāo)簽都打上。還有相關(guān)的是遷移學(xué)習(xí),目標(biāo)是在一個(gè)任務(wù)上學(xué)好然后遷移到另外的東西上。
多任務(wù)學(xué)習(xí)非常常見(jiàn)的訓(xùn)練方式是所有模型先聯(lián)合訓(xùn)練,因?yàn)橛泄蚕淼谋硎?,這些層次在所有任務(wù)上進(jìn)行訓(xùn)練,同時(shí)有私有層,在私有層每個(gè)特定任務(wù)上單獨(dú)訓(xùn)練。經(jīng)過(guò)Joint Training之后再進(jìn)行Fine Tuning。
?
多任務(wù)學(xué)習(xí)之所以會(huì)有效可以從幾方面來(lái)看:
?
1.因?yàn)閷?shí)現(xiàn)了隱式數(shù)據(jù)的增強(qiáng),因?yàn)閿?shù)據(jù)增強(qiáng)是經(jīng)常用的任務(wù),但是在NLP里很難用。
2.我們的表示對(duì)所有任務(wù)都適用,所以學(xué)習(xí)了更加通用的數(shù)據(jù)表示。
3.正則化,盡可能去選擇泛化能力比較高的點(diǎn)。一個(gè)表示對(duì)所有任務(wù)起作用,每個(gè)任務(wù)都有參數(shù)空間,所有任務(wù)參數(shù)空間的交集和搜索范圍非常小,這樣的程度講,相當(dāng)于正則化手段。
4.竊聽(tīng)技術(shù),每個(gè)任務(wù)可以從另外的任務(wù)中獲取對(duì)自己任務(wù)有幫助的信息。像這個(gè)盲人摸象,理解一個(gè)大象的話,可能不同任務(wù)是測(cè)試他的一個(gè)部件。如果把所有任務(wù)拼在一起可能會(huì)得到一個(gè)非常好的表示。
?
有了多任務(wù)學(xué)習(xí)之后,就可以改變做事的思維方式。輸入——詞法分析——句法分析——任務(wù)。我們很難把中間某一塊做得特別好,如果中間有一塊錯(cuò)了,就導(dǎo)致后面全錯(cuò)誤。我們可以把詞法分析和句法分析作為目標(biāo)任務(wù)平行,然后一起去學(xué)習(xí)。因?yàn)橐敵鲈~法和句法分析,假設(shè)隱含了某種詞法和句法的表示能力,直接送到目標(biāo)任務(wù)上,這樣就避免了錯(cuò)誤傳播。
?
?
NLP可以用的多任務(wù)學(xué)習(xí)有幾種類型,一種是分類分析。有不同的領(lǐng)域,電影領(lǐng)域的和評(píng)價(jià)領(lǐng)域。這是天然的多任務(wù)學(xué)習(xí),每個(gè)領(lǐng)域有單個(gè)任務(wù),把所有任務(wù)放在一起學(xué)習(xí)電影評(píng)論中學(xué)習(xí)的情感詞,這對(duì)上面的評(píng)論也會(huì)有用。比如剛才講的自然語(yǔ)言的詞性標(biāo)注,到分詞、句法。越往上越偏語(yǔ)義。這是與傳統(tǒng)不太一樣的多任務(wù)學(xué)習(xí)方式,我們需要嚴(yán)格設(shè)計(jì)共享方式。
?
現(xiàn)在越來(lái)越多的是文本和圖象放在一起做交叉的檢索推薦等,情感分析目前也做的非常多。我們?cè)?/span>NLP里很多任務(wù)適合做多任務(wù)學(xué)習(xí)。還有一類萬(wàn)能的任務(wù)是語(yǔ)言模型,可以和任何任務(wù)結(jié)合,提高對(duì)應(yīng)任務(wù)的效果。
?
這里講三個(gè)非常簡(jiǎn)單的共享方式,左邊的a是硬共享模式,上面接三個(gè)不同私有層,中間是軟共享,每個(gè)任務(wù)有自己主線,還有虛線,可以通過(guò)其他的注意力機(jī)制選擇相關(guān)信息進(jìn)來(lái)。c是共享私有模式,都有各自私有部分、共享部分。
?
1.硬共享模式
?
目前在NLP里的共享模式非常多,首先看硬共享模式,在2008年的時(shí)候就提出了自然語(yǔ)言神經(jīng)網(wǎng)絡(luò)處理。早期非常簡(jiǎn)單,只是把每個(gè)詞的信息共享受。到2015年做機(jī)器翻譯,機(jī)器翻譯是天生可以多任務(wù)的,比如說(shuō)英翻譯成中文、德文、日文等。因?yàn)樗芯幋a原文都是英文,所以沒(méi)有設(shè)立多個(gè)編碼器,讓不同任務(wù)可以共享,這也是一種方式。
這個(gè)是我們之前的工作,把剛才三個(gè)共享方式用到深化神經(jīng)網(wǎng)絡(luò)中?,F(xiàn)在看起來(lái)比較簡(jiǎn)單,當(dāng)時(shí)沒(méi)有人用。硬共享、軟共享、私有共享模式,把三個(gè)共享放到文本分類上。包括這兩年,通用表示在NLP上非?;馃?。用一個(gè)語(yǔ)言表示所有語(yǔ)言,這也是非常新興的研究方向。我們目標(biāo)是做多任務(wù)學(xué)習(xí),同樣的句子,雖然是面向不同任務(wù),但是希望用同樣的表示模型去表示。
最左邊的a是標(biāo)準(zhǔn)的硬共享模式,下面共享,上面是私有層,中間是共享私有模式。最右邊是提出一個(gè)全共享模式。所有的X在不同任務(wù)的表示都一樣。如果都一樣,做不同任務(wù),我們是否認(rèn)為一個(gè)共享表示可能不能體現(xiàn)特定的任務(wù)信息?所以我們引入了一個(gè)任務(wù)相關(guān)的查詢,叫Q。這個(gè)Q可以從共享表示中選出和任務(wù)相關(guān)的信息。用相同的不同的注意力進(jìn)行多任務(wù)的框架。就是同樣的表示,只是不同任務(wù)中不一樣的部分,非常簡(jiǎn)單的同一個(gè)框架處理,以下是具體的學(xué)習(xí)模型。
同樣的文本在不同任務(wù)中,他的Attention是不一樣的,紅色表示Attention的權(quán)重,顏色越深表示任務(wù)越重要。不同任務(wù)的Attention不一樣。
后面所謂的通用表示,這個(gè)概念越來(lái)越熱,其實(shí)也是類似想法,只是用的任務(wù)更復(fù)雜,包括現(xiàn)在谷歌推出所有語(yǔ)言放在一起訓(xùn)練,得到更加通用的表示。
?
2.軟共享模式
?
第二種是軟共享表示。在每一層的時(shí)候,我們都可以從其他任務(wù)中去選一些信息過(guò)來(lái),看起來(lái)非常像十字繡的方式。這是在NLP里的任務(wù),更加復(fù)雜的網(wǎng)絡(luò),無(wú)非把任務(wù)的交互信息選來(lái)選去。
?
?
3.共享-私有模式
?
最后是共享私有模式。在該模式下,通過(guò)設(shè)置外部記憶共享機(jī)制實(shí)現(xiàn)信息在所有任務(wù)中的共享。
共享私有模式還有一個(gè):避免在共享路徑上傳遞負(fù)遷移的信息,這些信息對(duì)另外的任務(wù)有損害,我們可以通過(guò)對(duì)抗學(xué)習(xí),引入對(duì)抗層可以有效避免不遷移的信息。
?
元共享,叫Meta Multi–task Learning, 這個(gè)函數(shù)生成各種不同的深層,我們叫多任務(wù)學(xué)習(xí),生成各自任務(wù)的參數(shù)。
?
共享模式搜索是實(shí)現(xiàn)共享模式的自動(dòng)組合,從而產(chǎn)生更加靈活的模型。在面向NLP的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索中用一個(gè)控制器、一個(gè)STO的網(wǎng)絡(luò),生成一個(gè)目標(biāo)網(wǎng)絡(luò),這個(gè)目標(biāo)網(wǎng)絡(luò)用來(lái)處理不同的NLP任務(wù)。上面的m是從共享詞里自動(dòng)挑出來(lái)的,這就實(shí)現(xiàn)了在所有任務(wù)中進(jìn)行多任務(wù)共享。
用一個(gè)控制器、一個(gè)STO的網(wǎng)絡(luò),生成一個(gè)目標(biāo)網(wǎng)絡(luò),這個(gè)目標(biāo)網(wǎng)絡(luò)用來(lái)處理不同的NLP任務(wù)。上面的m是從共享詞里自動(dòng)挑出來(lái)的,這就實(shí)現(xiàn)了在所有任務(wù)中進(jìn)行多任務(wù)共享。
這個(gè)是一個(gè)例子,這是自動(dòng)挑出來(lái)的網(wǎng)絡(luò)結(jié)構(gòu)。比如說(shuō)POS用了M1,chunk用了M1,緊接著用了m2,NER用了M1、M2、M3,這種方式將模型帶入任務(wù)訓(xùn)練,從而實(shí)現(xiàn)了模型的自動(dòng)選擇組合。
?
今天分享就到這里,謝謝大家!