孫瑞安,張?jiān)迫A
(浙江理工大學(xué) 信息學(xué)院,杭州310018)
隨著現(xiàn)代互聯(lián)網(wǎng)的發(fā)展,越來越多的人在網(wǎng)絡(luò)上尋找消磨時(shí)間的娛樂方式,其中就包括了帶有趣味的彈幕視頻——有彈幕飄過的視頻。彈幕最初出現(xiàn)在日本niconcio視頻網(wǎng)的視頻里。之所以叫彈幕,是因?yàn)槠渚拖褡訌椧粯用芗卦谝曨l上飄過,網(wǎng)友借此發(fā)明視頻彈幕這一網(wǎng)絡(luò)詞匯。人們可以使用彈幕發(fā)表對某一情節(jié)的看法和評(píng)論,也可以借用彈幕對一些電影進(jìn)行背景介紹,讓新來的觀眾對電影有一定的了解,方便決定自己是否要繼續(xù)看下去。而有些視頻的語音是外語的,而且沒有提供字幕,這時(shí)候就有熱心網(wǎng)友使用底部彈幕的形式制作中文字幕方便別人的觀看??梢钥闯?,彈幕作為一種新型網(wǎng)絡(luò)文化有一定的趣味性和實(shí)用性。但是,當(dāng)有人利用彈幕發(fā)布與視頻無關(guān)的信息,比如廣告、貶低別人的話語,又或者發(fā)布遮擋字幕的底部彈幕,就會(huì)影響他人的觀看,甚至形成不好的社會(huì)風(fēng)氣,造成惡劣的后果。所以,對垃圾彈幕進(jìn)行過濾是一件急需落實(shí)的措施。目前的彈幕過濾方法一般是使用關(guān)鍵詞進(jìn)行識(shí)別過濾。該方法將彈幕評(píng)論與關(guān)鍵詞進(jìn)行對比,如果匹配成功,則屏蔽該彈幕;否則不屏蔽[1]。在使用關(guān)鍵詞進(jìn)行垃圾彈幕過濾時(shí),需要與時(shí)俱進(jìn)更新新的屏蔽詞,無形中又增加了時(shí)間及人力成本。所以,只使用關(guān)鍵詞進(jìn)行過濾,不僅效率較低,其準(zhǔn)確率也不高。為了提高垃圾彈幕的識(shí)別和過濾效率,本文提出了一種結(jié)合AdaBERT自適應(yīng)結(jié)構(gòu)的TextCNN垃圾彈幕識(shí)別和過濾算法。與原始的BERT模型相比,使用AdaBERT壓縮后的模型的參數(shù)規(guī)模大大下降,其推理速度也提升了十多倍,提升了垃圾彈幕識(shí)別模型的性能和效率。
自然語言處理是機(jī)器學(xué)習(xí)的一個(gè)重要研究領(lǐng)域,而文本分類和文本生成是其兩個(gè)研究重點(diǎn)。本文研究的彈幕就是一種特殊的網(wǎng)絡(luò)文本?,F(xiàn)在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)在文本分類領(lǐng)域的研究發(fā)展迅速,并取得了一定的進(jìn)展。
機(jī)器學(xué)習(xí)的方法主要有4種:
(1)邏輯回歸方法。這種方法經(jīng)常用來預(yù)測一個(gè)樣例屬于某個(gè)類別的概率,適用于二分類問題和多分類問題;
(2)樸素貝葉斯方法[2]。其原理依賴于數(shù)理統(tǒng)計(jì)的貝葉斯定理;
(3)隨機(jī)森林方法。這種方法是將多個(gè)決策樹的結(jié)果綜合起來[3];
(4)支持向量機(jī)(Support Vector Machine,SVM)方法。其可以用于線性分類、非線性分類、回歸等任務(wù),主要思想是使用間隔進(jìn)行分類[4]。
隨著深度學(xué)習(xí)的發(fā)展,越來越多的深度學(xué)習(xí)模型被應(yīng)用于短文本分類任務(wù)中。如,文獻(xiàn)[5]中提出基于自編碼網(wǎng)絡(luò)的短文本流形表示方法,實(shí)現(xiàn)文本特征的非線性降維,可以更好地以非稀疏形式、更準(zhǔn)確地描述短文本特征信息,提高分類效率;文獻(xiàn)[6]提出一種基于語義理解的多元特征融合中文文本分類模型,通過嵌入層的各個(gè)通路,提取不同層次的文本特征,比神經(jīng)網(wǎng)絡(luò)模型(Convolutional Neural Network,CNN)與長短期記憶網(wǎng)絡(luò)模型(Long Short-Term Memory,LSTM)的文本分類精度提升了8%;文獻(xiàn)[7]使用CNN模型,將句中的詞向量合成為句子向量,并作為特征訓(xùn)練多標(biāo)簽分類器完成分類任務(wù),取得了較好的分類效果;文獻(xiàn)[8]提出DCNN模型,在不依賴句法解析樹的條件下,利用動(dòng)態(tài)k-max pooling提取全局特征,取得了良好的分類效果;文獻(xiàn)[9]采用多通道卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行監(jiān)督學(xué)習(xí),將詞矢量作為輸入特征,可以在不同大小的窗口內(nèi)進(jìn)行語義合成操作,完成文本分類任務(wù);文獻(xiàn)[10]結(jié)合CNN和LSTM模型的特點(diǎn),提出了卷積記憶神經(jīng)網(wǎng)絡(luò)模型(Convolutional Memory Neural Network,CMNN),相比傳統(tǒng)方法,該模型避免了具體任務(wù)的特征工程設(shè)計(jì);文獻(xiàn)[11]將CNN與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)有機(jī)結(jié)合,從語義層面對句子進(jìn)行分類,取得良好的分類效果;文獻(xiàn)[12]提出一種基于注意力機(jī)制的卷積神經(jīng)網(wǎng)絡(luò),并將該網(wǎng)絡(luò)用在句子對建模任務(wù)中,證明了注意力機(jī)制和CNN結(jié)合的有效性;文獻(xiàn)[13]提出了一種基于彈幕內(nèi)容和發(fā)送彈幕的用戶標(biāo)識(shí)的混合垃圾彈幕識(shí)別過濾算法,其主要考慮彈幕本身的特點(diǎn)來研究。
目前,遷移學(xué)習(xí)在自然語言處理的應(yīng)用,主要針對第一層的微調(diào)預(yù)訓(xùn)練的詞嵌入,而且對于不同的語言任務(wù)都要有針對性地單獨(dú)訓(xùn)練一個(gè)模型,比較浪費(fèi)時(shí)間和資源。為此,一些學(xué)者提出,通過一個(gè)大數(shù)據(jù)集下訓(xùn)練過的NLP模型,然后針對不同的小任務(wù)只需要細(xì)微的調(diào)些參數(shù)即可完成不同的語言處理任務(wù)。在這其中就包括BERT預(yù)訓(xùn)練模型[14]。BERT模型是谷歌在2018年提出的,其在11個(gè)NLP任務(wù)中打敗其它所有選手,成為最受矚目的明日之星。BERT使用Transformer進(jìn)行特征提取,Transformer可以學(xué)習(xí)到語句的雙向關(guān)系。BERT主要使用MLM(Mask Language Model)和NSP(Next Sentence Predication)作為訓(xùn)練任務(wù)。使用BERT預(yù)訓(xùn)練的模型只需進(jìn)行微調(diào)參數(shù)就能適應(yīng)各種下游任務(wù),但BERT所需調(diào)整的參數(shù)量十分巨大,需要更好的硬件條件來運(yùn)行。如何壓縮BERT模型就成為某些研究者新的研究課題。Chen[15]等通過可微神經(jīng)架構(gòu)搜索(Differentiable Neural Architecture Search,DNAS)將BERT壓縮成適應(yīng)相應(yīng)任務(wù)的微小模型,加快了推理速度,減少了大量參數(shù)。
在使用BERT預(yù)訓(xùn)練模型時(shí),其參數(shù)達(dá)到110M之多,給訓(xùn)練此模型帶來一定難度。要想訓(xùn)練這樣規(guī)模的模型需要更好的機(jī)器和更多的資費(fèi),這對于一般人是無法承擔(dān)的。為在模型結(jié)構(gòu)不變的情況下減少參數(shù)的規(guī)模,文獻(xiàn)[16]提出向量參數(shù)分解的方法,將詞語的大向量分解為小向量,并且將層之間的參數(shù)共享,實(shí)現(xiàn)了模型壓縮。由于這些研究都是在不改變原始模型結(jié)構(gòu)的情況下減少參數(shù)數(shù)量,而BERT在海量數(shù)據(jù)中學(xué)到了不同領(lǐng)域的知識(shí)。對于不同的任務(wù),知識(shí)面是不同的。因此,需要尋找適合每種任務(wù)本身的、小的結(jié)構(gòu)和知識(shí)。而AdaBERT就實(shí)現(xiàn)了這一目標(biāo)。
AdaBERT的損失函數(shù)包含兩個(gè)方面:一個(gè)是針對任務(wù)進(jìn)行知識(shí)蒸餾,引導(dǎo)模型的搜索;二是模型效率反饋的損失,對模型的搜索過程進(jìn)行剪枝。只有同時(shí)考慮這兩方面的損失,才不會(huì)導(dǎo)致最終的模型只有效率高而有效性低,或者只有有效性高而速度卻很慢。而應(yīng)該找到一個(gè)效率和有效性權(quán)衡的模型。具體流程如圖1所示。
圖中,目標(biāo)彈幕文本數(shù)據(jù)集為D t,經(jīng)過調(diào)整參數(shù)后的BERT模型記為BERTt,所探索的模型空間記為S,而最終搜索到的最適合本文文本類型的模型記為s∈S。其損失函數(shù)為:
圖1 AdaBERT流程Fig.1 AdaBERT process
式中,ωs是搜索到的結(jié)構(gòu)s對應(yīng)的訓(xùn)練權(quán)重;L c是和目標(biāo)數(shù)據(jù)集D t相關(guān)的交叉熵?fù)p失;而L k、L e分別是面向任務(wù)的知識(shí)蒸餾損失和模型的效率損失;λ和α是平衡所有損失的超參數(shù)。
為了將搜索目標(biāo)表示為分布變量,最直接的方式是建模為one-hot變量。但這樣帶來的問題是,離散的采樣過程會(huì)使得梯度無法回傳。因此,AdaBERT引入了Gumbel Softmax[17]技術(shù),將onehot的模型結(jié)構(gòu)變量松弛為連續(xù)分布y K和y o。 對于堆疊層數(shù)K相對應(yīng)的第i維(表示模型結(jié)構(gòu)最后堆疊i層的概率),以及候選Opearation的第i維(表示DAG中某條邊最后導(dǎo)出第i種operation的概率):
這里,g i是Gumbel分布中采樣得到的隨機(jī)噪聲,τ代表此分布與one-hot分布的接近程度。此后,變量都是可微的,可以直接使用相應(yīng)的優(yōu)化器進(jìn)行損失優(yōu)化。
使用TextCNN可以實(shí)現(xiàn)對文本的分類任務(wù),其模型結(jié)構(gòu)如圖2所示。其中包括:一個(gè)用于生成詞向量的嵌入層;一個(gè)包含幾個(gè)卷積核的卷積層,一個(gè)卷積核可以得到len(seq)-filter_size+1個(gè)卷積結(jié)果;進(jìn)入激活函數(shù)進(jìn)行非線性化操作;再進(jìn)行最大化池化操作;最后經(jīng)過全連接傳入softmax進(jìn)行分類。
圖2 TextCNN模型Fig.2 TextCNN model
在TextCNN中一般使用word2vec或者GloVe作為詞向量的選擇,而AdaBERT使用Transformer可以真正識(shí)別上下文的信息。所以,本文使用AdaBERT的詞向量代替TextCNN本身的詞向量。BERT模型本身學(xué)習(xí)了大量百科知識(shí),擁有很好的學(xué)習(xí)能力來學(xué)習(xí)彈幕中的上下文關(guān)系。而AdaBERT可以訓(xùn)練出適合本文彈幕語料集的相應(yīng)結(jié)構(gòu)的模型,使用AdaBERT詞向量,對提高最終的模型效率和有效性有一定作用。
結(jié)合AdaBERT的TextCNN模型,在輸入層對文本使用AdaBERT轉(zhuǎn)換成相應(yīng)的詞向量,然后將所有詞向量拼接成一個(gè)向量矩陣B,公式如下:
其中,[]代表拼接詞向量的操作;b i代表句子里的每一個(gè)詞向量;Bi:j代表將第i個(gè)詞向量到第j個(gè)詞向量拼接。然后使用不同的卷積核W,大?。╤)分別為3、4、5。從而獲得3個(gè)字符、4個(gè)字符、5個(gè)字符之間的關(guān)系。進(jìn)行卷積操作得到特征Fi,如式(5)所示:
式中,b為偏差,通過R e L U激活函數(shù)生成特征F=[F1,F(xiàn)2,...,F(xiàn) n-m+h],然后進(jìn)行批量歸一化(BN)操作,防止維度爆炸或者彌散。再進(jìn)行最大池化,最后全連接到softmax層,輸出樣本在不同分類上的概率,取最大值為分類結(jié)果。
本文結(jié)合AdaBERT的TextCNN模型架構(gòu)如圖3所示:
圖3 結(jié)合AdaBERT的TextCNN模型Fig.3 TextCNN based on AdaBERT model
實(shí)驗(yàn)主要進(jìn)行模型正確性的驗(yàn)證。本文采集了嗶哩嗶哩彈幕網(wǎng)的《秒速五厘米》的彈幕數(shù)據(jù)作為實(shí)驗(yàn)的數(shù)據(jù)集。使用爬蟲技術(shù)共爬取5 384 000條彈幕,經(jīng)過去重、去除只有標(biāo)點(diǎn)符號(hào)、去除表情等清理數(shù)據(jù)的手段后,剩余154 268條彈幕。對彈幕數(shù)據(jù)進(jìn)行敏感詞標(biāo)注,再進(jìn)行人工標(biāo)注查漏補(bǔ)缺。由于垃圾彈幕屬于少量異常數(shù)據(jù),所以本文將取出與垃圾彈幕相等數(shù)量的正常彈幕,生成平衡數(shù)據(jù)集。
最終電影《秒速五厘米》的彈幕數(shù)據(jù)集一共包含6 000條帶有標(biāo)簽的彈幕數(shù)據(jù),其中含有3 000條正常彈幕和3 000條垃圾彈幕。彈幕數(shù)據(jù)集的標(biāo)注結(jié)果見表1。
表1 彈幕數(shù)據(jù)集的標(biāo)簽Tab.1 Label of barrage dataset
評(píng)判分類問題性能優(yōu)劣,一般可以用正確率和錯(cuò)誤率來評(píng)估。而在本文的數(shù)據(jù)集中,少數(shù)異常是主要的關(guān)注對象,其分類精度也就顯得很重要。數(shù)據(jù)集中正常彈幕和垃圾彈幕的數(shù)量差距大,是一種不平衡的文本分類數(shù)據(jù)集,那么正誤率不太適合作為這種數(shù)據(jù)集的分類算法評(píng)判指標(biāo)。本文將采用精確率(Pr eci s i on)、召回率(Recal l)、F1分?jǐn)?shù)(F1-s cor e)這3個(gè)指標(biāo)對算法進(jìn)行評(píng)估。表2所示的混淆矩陣更能直觀地說明這3個(gè)概念。
表2 混淆矩陣Tab.2 Confusion matrix
精確率P表示的是預(yù)測結(jié)果為正例的數(shù)據(jù)中預(yù)測正確的比例;召回率R是指實(shí)際為正例中預(yù)測為正例的百分比。精確率和召回率之間存在一定的數(shù)量關(guān)系,即當(dāng)精確率上升時(shí),召回率會(huì)下降,反之亦然。綜合考慮精確率和召回率時(shí)可以使用F1分?jǐn)?shù)。以下是精確率、召回率和F1分?jǐn)?shù)的計(jì)算公式:
本次實(shí)驗(yàn)使用Windows10操作系統(tǒng)、jupyter lab平臺(tái),使用TensorFlow深度學(xué)習(xí)框架進(jìn)行模型訓(xùn)練,主要開發(fā)語言為Python。實(shí)驗(yàn)數(shù)據(jù)集包含相等數(shù)量的正常彈幕和垃圾彈幕,從中隨機(jī)將數(shù)據(jù)集按8:2的比例分成訓(xùn)練集和測試集。為說明本文提出的結(jié)合AdaBERT的TextCNN算法的優(yōu)勢,通過與TextCNN算法、樸素貝葉斯算法和BiLSTM算法進(jìn)行對比結(jié)果,說明本文算法的有效性。實(shí)驗(yàn)結(jié)果見表3。
表3 實(shí)驗(yàn)結(jié)果Tab.3 Experimental result
從測試結(jié)果可見,本文算法的3個(gè)指標(biāo)都是最高的。與使用word2vec的其它算法相比,采用AdaBERT詞向量模型的TextCNN模型相關(guān)指標(biāo)均更高。說明使用AdaBERT進(jìn)行模型預(yù)訓(xùn)練得到的詞向量比word2vec詞向量更好。使用統(tǒng)計(jì)學(xué)知識(shí)計(jì)算分類概率的樸素貝葉斯模型,沒有考慮詞之間的上下文關(guān)系,而只是把每個(gè)詞單獨(dú)轉(zhuǎn)換成相應(yīng)的數(shù)值,并計(jì)算其屬于某個(gè)類型的概率。其取得的結(jié)果必定是不準(zhǔn)確的。TextCNN、AdaBERT-TextCNN模型都屬于CNN類別的模型,而BiLSTM則屬于RNN模型。CNN類型的模型比使用RNN的BiLSTM的精確率和召回率更高,這說明彈幕這種短文本類型的分類更適合使用CNN進(jìn)行。在垃圾彈幕識(shí)別中上下文關(guān)系比較少,關(guān)鍵詞的信息更多。
為了說明AdaBERT對BERT的參數(shù)優(yōu)化,本文還包含了這兩種方法的實(shí)驗(yàn)對比,結(jié)果見表4。
表4 時(shí)間對比Tab.4 Time comparison
從表中結(jié)果來看,使用自適應(yīng)的BERT模型的確減少了訓(xùn)練時(shí)間,提高了模型的效率。
總體來看,本文提出的結(jié)合AdaBERT的TextCNN模型,在實(shí)驗(yàn)中取得較好的成果,與普通分類算法相比優(yōu)勢較大。使用AdaBERT相比一般BERT算法的參數(shù)更少,可以加快模型的預(yù)訓(xùn)練,更好的提取詞向量特征,結(jié)合TextCNN后可以獲得更好的模型泛化能力??梢灶A(yù)見,本文算法對垃圾彈幕過濾這一應(yīng)用場景有較大作用,可以投入到實(shí)際的彈幕過濾系統(tǒng)中使用。
本文提出的結(jié)合AdaBERT的TextCNN垃圾彈幕識(shí)別與過濾算法模型,與以前的基于統(tǒng)計(jì)學(xué)的分類算法相比,有更高的準(zhǔn)確率;與CNN類型和RNN類型的模型相比,擁有更好的泛化能力。采用AdaBERT也減少了模型的復(fù)雜程度,使得總體訓(xùn)練時(shí)間降低。實(shí)現(xiàn)了對垃圾彈幕文本更好的語義理解,獲取了更準(zhǔn)確的彈幕特征,提高垃圾彈幕識(shí)別的準(zhǔn)確率。目前,本文只研究基于彈幕文本內(nèi)容的篩選,后續(xù)將考慮加入彈幕的位置和視頻內(nèi)容等維度加以綜合評(píng)估,進(jìn)一步提高識(shí)別精確率。