圖1. 賽題任務(wù)介紹
2方案概述
首先是數(shù)據(jù)分析,我們發(fā)現(xiàn)比賽數(shù)據(jù)的特點(diǎn)是微博口語(yǔ)化嚴(yán)重、存在表情符、配圖隨意性強(qiáng),而且存在分類標(biāo)準(zhǔn)模糊、圖片和文本數(shù)據(jù)混合等眾多挑戰(zhàn),具體見下圖2。
圖2. 比賽數(shù)據(jù)特點(diǎn)(微博)在比賽過程中,我們分析出了此次賽題的三個(gè)挑戰(zhàn),首先是文本情緒的分類標(biāo)準(zhǔn)較為模糊,且文本字段中有較多干擾;其次圖片特征和時(shí)間戳特征需要考慮到模型中去;除此技術(shù)方面的挑戰(zhàn)之外,此任務(wù)為文本分類典型任務(wù),競(jìng)爭(zhēng)非常激烈。我們的參賽方案中結(jié)合當(dāng)下流行的深度學(xué)習(xí)和文本處理方法,構(gòu)建了情緒識(shí)別模型,整體技術(shù)路線見下圖3。
圖3. 比賽方案的整體技術(shù)路線在接下來的內(nèi)容中,我們首先介紹了在數(shù)據(jù)探索和方案策略上的工作,然后介紹本方案的最終算法策略,主要包括:1. 數(shù)據(jù)探索(包括數(shù)據(jù)清洗和數(shù)據(jù)增強(qiáng));2. 多模態(tài)特征融合;3. 機(jī)器學(xué)習(xí)技術(shù)(包括半監(jiān)督學(xué)習(xí)偽標(biāo)簽法和Post-training方法);4. 對(duì)抗訓(xùn)練;5. 模型集成,下面展開詳細(xì)介紹。
3數(shù)據(jù)探索
數(shù)據(jù)探索主要包括數(shù)據(jù)清洗和數(shù)據(jù)增強(qiáng)兩部分。
數(shù)據(jù)清洗首先我們經(jīng)過統(tǒng)計(jì)分析發(fā)現(xiàn)諸如”轉(zhuǎn)發(fā)微博”、”網(wǎng)頁(yè)鏈接”和”展開全文”這些關(guān)鍵字與預(yù)測(cè)結(jié)果沒有相關(guān)性,實(shí)驗(yàn)結(jié)果說明,應(yīng)該直接用空字符串替換,畫圖分析結(jié)果如下圖4所示;其次是發(fā)現(xiàn)微博內(nèi)容中有諸如回復(fù)**和@**這樣的結(jié)構(gòu),后面的**表示人名,而人名往往很長(zhǎng),這些無意義的字會(huì)對(duì)語(yǔ)義產(chǎn)生干擾,我們統(tǒng)一將這兩個(gè)?結(jié)構(gòu)用@這一個(gè)字符進(jìn)行替換;另外,我們還對(duì)文字進(jìn)行了繁簡(jiǎn)替換處理以及刪除重復(fù)數(shù)據(jù)條目處理。
數(shù)據(jù)增強(qiáng)
數(shù)據(jù)增強(qiáng)我們嘗試了兩種方式,第一種是同義詞替換、隨機(jī)插入、隨機(jī)交換、隨機(jī)刪除結(jié)合的方式,代碼參考了方法[1];第二種是回譯法,即將訓(xùn)練集中的文本數(shù)據(jù)通過百度翻譯API翻譯成英文和日文后,再翻譯成中文,得到新數(shù)據(jù)集后對(duì)原有訓(xùn)練集做數(shù)據(jù)擴(kuò)充。在數(shù)據(jù)探索的實(shí)驗(yàn)中,我們將原訓(xùn)練集劃分成了訓(xùn)練集、測(cè)試集和驗(yàn)證集,下表是數(shù)據(jù)增強(qiáng)的實(shí)驗(yàn)結(jié)果,發(fā)現(xiàn)效果并不理想。
4多模態(tài)融合
我們嘗試采用DenseNet121在ImageNet數(shù)據(jù)集上的預(yù)訓(xùn)練權(quán)值作為圖像特征提取器,BERT-Base模型輸出結(jié)果做stacking之后發(fā)現(xiàn)并無提升。另外,我們采用DenseNet121在本數(shù)據(jù)的圖片數(shù)據(jù)集上進(jìn)行分類訓(xùn)練,分類效果對(duì)比隨機(jī)得分有較大提升,但是將結(jié)果集查看分布得知,該網(wǎng)絡(luò)結(jié)構(gòu)并不能從圖片中有效提取本賽題的特征,預(yù)測(cè)結(jié)果分布如下圖5,可知預(yù)測(cè)都為0值,說明圖片特征在本賽題中無明顯效果。
我們對(duì)多模態(tài)融合為什么效果不好進(jìn)行了具體的分析,詳細(xì)的原因見下圖6。
5機(jī)器學(xué)習(xí)技術(shù),半監(jiān)督學(xué)習(xí)偽標(biāo)簽法
由于本題中提供了90w未標(biāo)記數(shù)據(jù),為了充分利用數(shù)據(jù),我們利用偽標(biāo)簽法,使用已訓(xùn)練的模型對(duì)90w數(shù)據(jù)進(jìn)行一次性預(yù)測(cè),生成標(biāo)記結(jié)果,然后從90w數(shù)據(jù)集中選取置信度較高的混入到標(biāo)記數(shù)據(jù)中進(jìn)行訓(xùn)練。同時(shí)我們還多次調(diào)整了混合比例,但發(fā)現(xiàn)該方法提升不明顯,分析原因如下圖7所示:圖中為預(yù)測(cè)第三列(-1,0,1)數(shù)據(jù)分布,可見0(中性)的分布和1、-1兩類相比有很大不同,說明要判斷為1和-1的數(shù)據(jù)置信度較低,當(dāng)該數(shù)據(jù)混入原標(biāo)記數(shù)據(jù)中訓(xùn)練的時(shí)候會(huì)將誤差放大。
圖7. 預(yù)測(cè)第三列(-1,0,1)數(shù)據(jù)分布Post-training方法接下來,重點(diǎn)介紹一下我們?cè)诒敬伪荣惍?dāng)中使用的Post-training方法,該方法來自論文[4],它的主要思想是結(jié)合領(lǐng)域數(shù)據(jù),對(duì)BERT-Base模型進(jìn)行微調(diào),學(xué)習(xí)該領(lǐng)域知識(shí),改進(jìn)BERT-Base模型與特定領(lǐng)域的匹配程度,因?yàn)锽ERT-Base模型是通過維基百科語(yǔ)料訓(xùn)練的,所以它缺乏特定領(lǐng)域的知識(shí),例如本次比賽中的微博數(shù)據(jù)知識(shí)。經(jīng)過實(shí)驗(yàn),Post-training是比較有效果的,相比BERT-Base模型,大約有0.8個(gè)百分點(diǎn)的F1值提升。
6對(duì)抗訓(xùn)練
為了提升模型的預(yù)測(cè)穩(wěn)定性,我們還采用了對(duì)抗訓(xùn)練的技術(shù)。它的主要思想是提升模型在小擾動(dòng)下的穩(wěn)定性,比如下圖6中的每一個(gè)點(diǎn)代表一個(gè)數(shù)據(jù)樣本,它通過對(duì)抗訓(xùn)練之后,可以明顯看到每一個(gè)數(shù)據(jù)點(diǎn)都落在一個(gè)小的坑里面,這樣它的模型泛化能力就被增強(qiáng)了。
近年來,隨著深度學(xué)習(xí)的日益發(fā)展和落地,對(duì)抗樣本也得到了越來越多的關(guān)注。NLP中的對(duì)抗訓(xùn)練是作為一種正則化手段來提高模型的泛化能力。對(duì)抗樣本首先出現(xiàn)在論文[3]之中。簡(jiǎn)單來說,它是指對(duì)于人類來說”看起來”幾乎一樣、但對(duì)于模型來說預(yù)測(cè)結(jié)果卻完全不一樣的樣本。
其中D代表訓(xùn)練集,x代表輸入,y代表標(biāo)簽,θ是模型參數(shù),L(x,y;θ)是單個(gè)樣本的loss,Δx是對(duì)抗擾動(dòng),Ω是擾動(dòng)空間。這個(gè)統(tǒng)一的格式首先由論文[3]提出。實(shí)驗(yàn)結(jié)果顯示:在Embedding層做對(duì)抗擾動(dòng),在很多任務(wù)中,能有效提高模型的性能。進(jìn)行對(duì)抗學(xué)習(xí)的時(shí)候,我們需要將dropout設(shè)置成0,即固定網(wǎng)絡(luò)結(jié)構(gòu),使得對(duì)抗學(xué)習(xí)在固定的網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行。通過我們的實(shí)驗(yàn),在比賽中的效果大約能夠提升0.5個(gè)百分點(diǎn)。
7模型集成
多折模型集成
我們采用了F1值適應(yīng)優(yōu)化以及多折模型融合的技術(shù),這兩個(gè)技術(shù)都有明顯的效果提升。F1值適應(yīng)技術(shù)的主要思想是準(zhǔn)確度最高的模型,它的F1值并非最大,所以我們?cè)谳敵鼋Y(jié)果的時(shí)候,前面乘一個(gè)權(quán)重,然后通過非線性優(yōu)化的方法使得F1值最大。在模型融合方面,經(jīng)過實(shí)驗(yàn),5到7折能夠取得最好的效果。
詞向量模型
將標(biāo)記數(shù)據(jù)、未標(biāo)記數(shù)據(jù)和測(cè)試集合中的文本數(shù)據(jù)合并后作為詞向量的訓(xùn)練語(yǔ)料,得到詞向量文件。經(jīng)過觀察,該詞向量質(zhì)量較好,例如查看”發(fā)燒”的近義詞,系統(tǒng)輸出如下:[(‘低燒’, 0.705), (‘流鼻涕’, 0.651), (‘高燒’, 0.635), (‘鼻塞’, 0.630), (‘發(fā)高燒’, 0.627), (‘喉嚨痛’, 0.609), (‘拉肚子’, 0.599), (‘嗓子疼’, 0.575), (‘感冒’, 0.574), (‘發(fā)熱’, 0.570)]。
本方案中嘗試了五種基于詞向量的深度學(xué)習(xí)模型:1. 一維卷積模型;2. 多個(gè)不同的卷積核的模型;3. RNN模型,4. 雙向GRU模型;5. 有注意力機(jī)制的RNN模型,經(jīng)過測(cè)試,發(fā)現(xiàn)得分均沒有能超過BERT-Base模型。之后還嘗試與BERT-Base模型做stacking集成,得分相比BERT-Base也有下降。
8整體方案
通過各種技術(shù)的嘗試和實(shí)驗(yàn),我們最終的算法方案是Post-Training、對(duì)抗訓(xùn)練、F1適應(yīng)優(yōu)化和模型集成等多種技術(shù)的融合,取得了A榜第一、B榜第二的良好成績(jī),整體方案的流程圖如下圖10所示,該方案在執(zhí)行效率方面,算法離線模型訓(xùn)練只需要40分鐘,實(shí)時(shí)預(yù)測(cè)速度為0.1秒,執(zhí)行效率高,實(shí)用性強(qiáng)。
內(nèi)容小結(jié)
最后,我們總結(jié)一下本算法方案的應(yīng)用有效性、價(jià)值潛力和創(chuàng)新性。在應(yīng)用效果方面,該算法的F1值在A榜第一,B榜第二,均排名前列,有很好的應(yīng)用效果;在價(jià)值潛力方面,該算法的應(yīng)用效果好、執(zhí)行效率高、擴(kuò)展性好,因此非常容易落地,有良好應(yīng)用前景;在技術(shù)新穎性方面,本方案采用了對(duì)抗攻擊提升模型穩(wěn)定性,采用Post-Training技術(shù)提升預(yù)訓(xùn)練模型和特定領(lǐng)域匹配度,達(dá)到良好的效果。