AI Challenger 2018:细粒度用户评论情感分析冠军思路总结
2018年8月-12月,由美團點評、創(chuàng)新工場、搜狗、美圖聯(lián)合主辦的“AI Challenger 2018全球AI挑戰(zhàn)賽”歷經(jīng)三個多月的激烈角逐,冠軍團隊從來自全球81個國家、1000多所大學(xué)和公司的過萬支參賽團隊中脫穎而出。其中“后廠村靜靜”團隊-由畢業(yè)于北京大學(xué)的程惠閣(現(xiàn)已入職美團點評)單人組隊,勇奪“細粒度用戶評論情感分類”賽道的冠軍。本文系程惠閣對于本次參賽的思路總結(jié)和經(jīng)驗分享,希望對大家能夠有所幫助和啟發(fā)。
背景
在2018全球AI挑戰(zhàn)賽中,美團點評主要負責(zé)了其中兩個頗具挑戰(zhàn)的主賽道賽題:細粒度用戶評論情感分析和無人駕駛視覺感知。其中NLP中心負責(zé)的細粒度用戶評論情感分析賽道,最受歡迎,參賽隊伍報名數(shù)量最多,約占整個報名團隊的五分之一。
細粒度用戶評論情感分析賽道提供了6大類、20個細分類的中文情感評論數(shù)據(jù),標注規(guī)模難度之大,在NLP語料特別是文本分類相關(guān)語料中都屬于相當罕見,這份數(shù)據(jù)有著極其重要的科研學(xué)術(shù)以及工業(yè)應(yīng)用價值。
賽題簡介
在線評論的細粒度情感分析對于深刻理解商家和用戶、挖掘用戶情感等方面有至關(guān)重要的價值,并且在互聯(lián)網(wǎng)行業(yè)有極其廣泛的應(yīng)用,主要用于個性化推薦、智能搜索、產(chǎn)品反饋、業(yè)務(wù)安全等。本次比賽我們提供了一個高質(zhì)量的海量數(shù)據(jù)集,共包含6大類20個細粒度要素的情感傾向。參賽人員需根據(jù)標注的細粒度要素的情感傾向建立算法,對用戶評論進行情感挖掘,組委將通過計算參賽者提交預(yù)測值和場景真實值之間的誤差確定預(yù)測正確率,評估所提交的預(yù)測算法。
1. 工具介紹
在本次比賽中,采用了自己開發(fā)的一個訓(xùn)練框架,來統(tǒng)一處理TensorFlow和PyTorch的模型。在模型代碼應(yīng)用方面,主要基于香港科技大學(xué)開源的RNet和MnemonicReader做了相應(yīng)修改。在比賽后期,還加入了一個基于BERT的模型,從而提升了一些集成的效果。
2. 整體思路
整體將該問題看作20個Aspect的情感多分類問題,采用了傳統(tǒng)的文本分類方法,基于LSTM建模文本,End2End多Aspect統(tǒng)一訓(xùn)練。
文本分類是業(yè)界一個較為成熟的問題,在2018年2月份,我參加了Kaggle的“作弊文本分類”比賽,當時的冠軍團隊主要依靠基于翻譯的數(shù)據(jù)增強方法獲得了成功。2018年反作弊工作中的一些實踐經(jīng)驗,讓我意識到,數(shù)據(jù)是提升文本分類效果的第一關(guān)鍵。因此,我第一時間在網(wǎng)絡(luò)上尋找到了較大規(guī)模的大眾點評評論語料,在Kaggle比賽的時候,NLP的語言模型預(yù)訓(xùn)練還沒有出現(xiàn),而隨著ELMo之類模型的成功,也很期待嘗試一下預(yù)訓(xùn)練語言模型在這個數(shù)據(jù)集合上的整體效果。
3. 基礎(chǔ)模型思路
首先,嘗試了不使用預(yù)訓(xùn)練語言模型的基礎(chǔ)模型,基于Kaggle Toxic比賽的經(jīng)驗,直接使用了當時表現(xiàn)最好的LSTM Encode + Pooling作為基線模型。在Kaggle的比賽中,大家實驗的普遍結(jié)果是針對中長文本的分類任務(wù)的最佳單模型,都是基于RNN(LSTM/GRU)或者部分基于RNN的模型,比如RCNN、Capsule + RNN這樣的模型,而其他的模型,比如單純的CNN結(jié)構(gòu)相對表現(xiàn)較差,主要可能是因為RNN模型能更好地捕獲相對較長距離的順序信息。
4. 模型層面優(yōu)化
在基線模型的基礎(chǔ)上,效仿閱讀理解常見的做法,增加了Self Attention層(計算文本到文本自身的Attention權(quán)重),并將Attention之后的輸出和原始LSTM輸出,采用Gate(RNet)或者Semantic Fusion(MnemonicReader)的方式進行融合。
5. 模型細節(jié)處理
更寬的參數(shù)更多的模型效果更好
- LSTM效果好于GRU。
- Hidden size 400 > 200 > 100。
- Topk Pooling + Attention Pooling的效果好于單獨的Max或者Attention Pooling。
- 共享層前置,Pooling層 和最后Fc層不同aspect參數(shù)獨占效果更好(來自賽后實驗,以及其他團隊經(jīng)驗)。
這里推測主要原因:是這個數(shù)據(jù)集有20個Aspect,每個Aspect分4個不同的類別,所需要的參數(shù)相對較多。
三角學(xué)習(xí)率調(diào)節(jié)效果最佳
- 參考BERT開源代碼的學(xué)習(xí)率設(shè)置帶來較大效果提升。
采用Word + Char的詞建模方式
- 這種建模方式能結(jié)合分詞和字符粒度切分的好處,最大限度避免詞匯UNK帶來的損失。
- 注意對比Kaggle Toxic比賽那次比賽是英文語料,對應(yīng)英文,當時的實驗結(jié)果是Word + Ngram的建模效果更好,收斂更快,所以針對不同NLP任務(wù),我們需要具體進行分析。
采用盡可能大的詞表
和其他團隊相比,我采用了更大的詞表14.4W(Jieba分詞),19.8W(Sentence Piece Unigram分詞),依靠外部大眾點評評論數(shù)據(jù)基于fastText預(yù)訓(xùn)練詞向量,能夠支持更大的詞表。同時為了避免訓(xùn)練過擬合,采用了只Finetune訓(xùn)練中高頻的詞對低頻詞固定詞向量的處理方式。
最開始,預(yù)計情感相關(guān)的詞匯相對較少,不需要較大的詞表,但是實驗過程中發(fā)現(xiàn)更大的詞表相對地能夠提升性能,前提是利用較多的外部數(shù)據(jù)去比較好的刻畫訓(xùn)練數(shù)據(jù)中低頻詞的向量。在理論上,我們可以采用一個盡可能大的詞表在預(yù)測過程中去盡可能的減少UNK的存在(有論文的結(jié)論是對應(yīng)UNK不同的詞賦于不同隨機向量效果,好于一個固定的UNK向量。這里類似,如果我們賦予一個基于無監(jiān)督外部數(shù)據(jù),通過語言模型訓(xùn)練得到的向量則效果更好)。
6. 預(yù)訓(xùn)練語言模型
這部分是模型效果提升的關(guān)鍵,這里采用了ELMo Loss。在簡單嘗試了官方的ELMo版本之后,感覺速度相對比較慢,為此,采用了自己實現(xiàn)的一個簡化版的ELMo,實質(zhì)上只使用了ELMo的Loss部分。
在當前雙層LSTM Encoder的基礎(chǔ)上,采用了最小代價的ELMo引入,也就是對當前模型的第一層LSTM進行基于ELMo Loss的預(yù)訓(xùn)練,而Finetune的時候,模型結(jié)構(gòu)和之前完全不變,只是第一層LSTM以及詞向量部分采用的ELMo預(yù)訓(xùn)練的初始化結(jié)果,另外在ELMo的訓(xùn)練過程中,也采用了基于fastText的詞向量參數(shù)初始化。這個設(shè)計使得ELMo訓(xùn)練以及Finetune訓(xùn)練的收斂,都加快了很多,只需要大概1小時的ELMo訓(xùn)練,就能在下游任務(wù)產(chǎn)生明顯受益。值得一提的是,ELMo和Self Attention的搭配在這個數(shù)據(jù)集合效果非常好。
7. 模型集成
為了取得更好的模型多樣性,采用了多種粒度的分詞方式,在Jieba分詞的主要模型基礎(chǔ)上,同時引入了基于SentencePiece的多種粒度分詞。SentencePiece分詞能帶來更短的句子長度,但是分詞錯誤相對Jieba略多,容易過擬合,因此采用了只Finetune Char向量,固定詞向量的策略來避免過擬合。多種粒度的分詞配合Word + Char的建模方式帶來了很好的模型多樣性。
此外,模型維度的多樣性來源自RNet結(jié)構(gòu)和MnemonicReader結(jié)構(gòu),以及BERT模型的結(jié)構(gòu)的不同。
在模型選擇的時候選取了平均F1值最優(yōu)的輪次模型,集成的時候采用了按Aspect效果分開加權(quán)集成的方式(權(quán)重來自Valid數(shù)據(jù)的F1分值排序)。基于以上的多樣性策略,只需要7個單模型集成就能取得較好的效果。
8. 關(guān)于BERT
在實驗中基于Char的BERT單模型,在本次比賽中并沒有取得比ELMo更好的效果,受限于512的長度和只基于Char的限制,目前看起來BERT模型在這個數(shù)據(jù)集合更容易過擬合,Train Loss下降較快,對應(yīng)Valid Loss效果變差。相信通過適當?shù)膬?yōu)化BERT模型能取得更好的效果。
9. 后續(xù)優(yōu)化
- F1的優(yōu)化是一個有意思的方向。本次比賽中,沒有對此做特殊處理,考慮到F1是一個全局優(yōu)化值,如果基于Batch強化學(xué)習(xí),每個Batch可能很難擬合稀有樣本分布。
- BERT的進一步優(yōu)化。因為BERT出現(xiàn)之前,基于Transformer的模型在長文本分類效果大都是差于基于LSTM的模型的,所以如果我們按照BERT的Loss去預(yù)訓(xùn)練基于LSTM而不是Transformer的模型,在分類問題層面的效果如何?另外,在這個數(shù)據(jù)集合基于Transformer的BERT,能否取得比ELMo更好的分類效果?
對話AI Challenger 2018冠軍:程惠閣
Q:談?wù)剬Ρ敬螀①惖母惺?#xff1f;
程惠閣:作為一個多年的算法從業(yè)者,我真實的感受到在AI時代,技術(shù)更新非常之快,比如席卷而來的ELMo、BERT等預(yù)訓(xùn)練語言模型在工業(yè)界影響力之大。包括美團在內(nèi)的很多公司都快速跟進并上線,而且取得了很好收益,因此技術(shù)人員時刻保持學(xué)習(xí)的心態(tài)是非常重要的。
而比賽和工作存在很大的不同,比賽相對更加單純明確,比賽可以使我在最短時間去學(xué)習(xí)實驗驗證一些新的技術(shù),而在標準數(shù)據(jù)集合驗證有效的模型策略,往往在工作中也有實際的價值。對于比賽以及工作中的模型開發(fā),我覺得比較重要的一點首先要做好細致的模型驗證部分,在此基礎(chǔ)上逐步開發(fā)迭代模型才有意義。比如在這次比賽中,我從一開始就監(jiān)控了包括整體以及各個Aspect的包括F1、AUC、Loss等等各項指標。
Q:對學(xué)習(xí)算法的新同學(xué)有哪些建議?
程惠閣:如果有時間,可以系統(tǒng)地學(xué)習(xí)一些名校的深度學(xué)習(xí)相關(guān)的課程,還有很重要的一點,就是實踐,我們可以參加去學(xué)校項目或者去大公司實習(xí),當然也可以利用AI Challenger、Kaggle這樣的競賽平臺進行實踐。
Q:為什么會選擇參加細粒度用戶評論情感分類這個賽道?
程惠閣:因為我之前參加過類似的比賽,并且做過文本分類相關(guān)的工作,對這個賽道的賽題也比較感興趣。
Q:本次比賽最有成就感的事情是什么?
程惠閣:不斷迭代提升效果帶來的成就感吧,特別是簡化版ELMo帶來的效果提升。
Q:參賽過程中,有哪些收獲和成長?
程惠閣:作為一個TensorFlow重度用戶,我學(xué)會了使用PyTorch并且體驗到PyTorch帶來的優(yōu)雅與高效。體驗到了預(yù)訓(xùn)練語言模型的威力。在比賽中和比賽后,我也收獲了很多志同道合的朋友,和他們的交流學(xué)習(xí),也幫助我提高了很多。
更重要的是,因為這次比賽,我加入了美團點評這個大家庭,入職這段時間,讓我真切地感受到美團點評為了提升用戶體驗,為了讓用戶吃的更好,生活更好,在技術(shù)方面做了大量的投入。
總結(jié)
以上是生活随笔為你收集整理的AI Challenger 2018:细粒度用户评论情感分析冠军思路总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团大脑:知识图谱的建模方法及其应用
- 下一篇: 研发团队资源成本优化实践