孫瑞安,張云華
(浙江理工大學 信息學院,杭州310018)
隨著現(xiàn)代互聯(lián)網(wǎng)的發(fā)展,越來越多的人在網(wǎng)絡(luò)上尋找消磨時間的娛樂方式,其中就包括了帶有趣味的彈幕視頻——有彈幕飄過的視頻。彈幕最初出現(xiàn)在日本niconcio視頻網(wǎng)的視頻里。之所以叫彈幕,是因為其就像子彈一樣密集地在視頻上飄過,網(wǎng)友借此發(fā)明視頻彈幕這一網(wǎng)絡(luò)詞匯。人們可以使用彈幕發(fā)表對某一情節(jié)的看法和評論,也可以借用彈幕對一些電影進行背景介紹,讓新來的觀眾對電影有一定的了解,方便決定自己是否要繼續(xù)看下去。而有些視頻的語音是外語的,而且沒有提供字幕,這時候就有熱心網(wǎng)友使用底部彈幕的形式制作中文字幕方便別人的觀看。可以看出,彈幕作為一種新型網(wǎng)絡(luò)文化有一定的趣味性和實用性。但是,當有人利用彈幕發(fā)布與視頻無關(guān)的信息,比如廣告、貶低別人的話語,又或者發(fā)布遮擋字幕的底部彈幕,就會影響他人的觀看,甚至形成不好的社會風氣,造成惡劣的后果。所以,對垃圾彈幕進行過濾是一件急需落實的措施。目前的彈幕過濾方法一般是使用關(guān)鍵詞進行識別過濾。該方法將彈幕評論與關(guān)鍵詞進行對比,如果匹配成功,則屏蔽該彈幕;否則不屏蔽[1]。在使用關(guān)鍵詞進行垃圾彈幕過濾時,需要與時俱進更新新的屏蔽詞,無形中又增加了時間及人力成本。所以,只使用關(guān)鍵詞進行過濾,不僅效率較低,其準確率也不高。為了提高垃圾彈幕的識別和過濾效率,本文提出了一種結(jié)合AdaBERT自適應(yīng)結(jié)構(gòu)的TextCNN垃圾彈幕識別和過濾算法。與原始的BERT模型相比,使用AdaBERT壓縮后的模型的參數(shù)規(guī)模大大下降,其推理速度也提升了十多倍,提升了垃圾彈幕識別模型的性能和效率。
自然語言處理是機器學習的一個重要研究領(lǐng)域,而文本分類和文本生成是其兩個研究重點。本文研究的彈幕就是一種特殊的網(wǎng)絡(luò)文本。現(xiàn)在機器學習和深度學習在文本分類領(lǐng)域的研究發(fā)展迅速,并取得了一定的進展。
機器學習的方法主要有4種:
(1)邏輯回歸方法。這種方法經(jīng)常用來預測一個樣例屬于某個類別的概率,適用于二分類問題和多分類問題;
(2)樸素貝葉斯方法[2]。其原理依賴于數(shù)理統(tǒng)計的貝葉斯定理;
(3)隨機森林方法。這種方法是將多個決策樹的結(jié)果綜合起來[3];
(4)支持向量機(Support Vector Machine,SVM)方法。其可以用于線性分類、非線性分類、回歸等任務(wù),主要思想是使用間隔進行分類[4]。
隨著深度學習的發(fā)展,越來越多的深度學習模型被應(yīng)用于短文本分類任務(wù)中。如,文獻[5]中提出基于自編碼網(wǎng)絡(luò)的短文本流形表示方法,實現(xiàn)文本特征的非線性降維,可以更好地以非稀疏形式、更準確地描述短文本特征信息,提高分類效率;文獻[6]提出一種基于語義理解的多元特征融合中文文本分類模型,通過嵌入層的各個通路,提取不同層次的文本特征,比神經(jīng)網(wǎng)絡(luò)模型(Convolutional Neural Network,CNN)與長短期記憶網(wǎng)絡(luò)模型(Long Short-Term Memory,LSTM)的文本分類精度提升了8%;文獻[7]使用CNN模型,將句中的詞向量合成為句子向量,并作為特征訓練多標簽分類器完成分類任務(wù),取得了較好的分類效果;文獻[8]提出DCNN模型,在不依賴句法解析樹的條件下,利用動態(tài)k-max pooling提取全局特征,取得了良好的分類效果;文獻[9]采用多通道卷積神經(jīng)網(wǎng)絡(luò)模型進行監(jiān)督學習,將詞矢量作為輸入特征,可以在不同大小的窗口內(nèi)進行語義合成操作,完成文本分類任務(wù);文獻[10]結(jié)合CNN和LSTM模型的特點,提出了卷積記憶神經(jīng)網(wǎng)絡(luò)模型(Convolutional Memory Neural Network,CMNN),相比傳統(tǒng)方法,該模型避免了具體任務(wù)的特征工程設(shè)計;文獻[11]將CNN與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)有機結(jié)合,從語義層面對句子進行分類,取得良好的分類效果;文獻[12]提出一種基于注意力機制的卷積神經(jīng)網(wǎng)絡(luò),并將該網(wǎng)絡(luò)用在句子對建模任務(wù)中,證明了注意力機制和CNN結(jié)合的有效性;文獻[13]提出了一種基于彈幕內(nèi)容和發(fā)送彈幕的用戶標識的混合垃圾彈幕識別過濾算法,其主要考慮彈幕本身的特點來研究。
目前,遷移學習在自然語言處理的應(yīng)用,主要針對第一層的微調(diào)預訓練的詞嵌入,而且對于不同的語言任務(wù)都要有針對性地單獨訓練一個模型,比較浪費時間和資源。為此,一些學者提出,通過一個大數(shù)據(jù)集下訓練過的NLP模型,然后針對不同的小任務(wù)只需要細微的調(diào)些參數(shù)即可完成不同的語言處理任務(wù)。在這其中就包括BERT預訓練模型[14]。BERT模型是谷歌在2018年提出的,其在11個NLP任務(wù)中打敗其它所有選手,成為最受矚目的明日之星。BERT使用Transformer進行特征提取,Transformer可以學習到語句的雙向關(guān)系。BERT主要使用MLM(Mask Language Model)和NSP(Next Sentence Predication)作為訓練任務(wù)。使用BERT預訓練的模型只需進行微調(diào)參數(shù)就能適應(yīng)各種下游任務(wù),但BERT所需調(diào)整的參數(shù)量十分巨大,需要更好的硬件條件來運行。如何壓縮BERT模型就成為某些研究者新的研究課題。Chen[15]等通過可微神經(jīng)架構(gòu)搜索(Differentiable Neural Architecture Search,DNAS)將BERT壓縮成適應(yīng)相應(yīng)任務(wù)的微小模型,加快了推理速度,減少了大量參數(shù)。
在使用BERT預訓練模型時,其參數(shù)達到110M之多,給訓練此模型帶來一定難度。要想訓練這樣規(guī)模的模型需要更好的機器和更多的資費,這對于一般人是無法承擔的。為在模型結(jié)構(gòu)不變的情況下減少參數(shù)的規(guī)模,文獻[16]提出向量參數(shù)分解的方法,將詞語的大向量分解為小向量,并且將層之間的參數(shù)共享,實現(xiàn)了模型壓縮。由于這些研究都是在不改變原始模型結(jié)構(gòu)的情況下減少參數(shù)數(shù)量,而BERT在海量數(shù)據(jù)中學到了不同領(lǐng)域的知識。對于不同的任務(wù),知識面是不同的。因此,需要尋找適合每種任務(wù)本身的、小的結(jié)構(gòu)和知識。而AdaBERT就實現(xiàn)了這一目標。
AdaBERT的損失函數(shù)包含兩個方面:一個是針對任務(wù)進行知識蒸餾,引導模型的搜索;二是模型效率反饋的損失,對模型的搜索過程進行剪枝。只有同時考慮這兩方面的損失,才不會導致最終的模型只有效率高而有效性低,或者只有有效性高而速度卻很慢。而應(yīng)該找到一個效率和有效性權(quán)衡的模型。具體流程如圖1所示。
圖中,目標彈幕文本數(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)的訓練權(quán)重;L c是和目標數(shù)據(jù)集D t相關(guān)的交叉熵損失;而L k、L e分別是面向任務(wù)的知識蒸餾損失和模型的效率損失;λ和α是平衡所有損失的超參數(shù)。
為了將搜索目標表示為分布變量,最直接的方式是建模為one-hot變量。但這樣帶來的問題是,離散的采樣過程會使得梯度無法回傳。因此,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中某條邊最后導出第i種operation的概率):

這里,g i是Gumbel分布中采樣得到的隨機噪聲,τ代表此分布與one-hot分布的接近程度。此后,變量都是可微的,可以直接使用相應(yīng)的優(yōu)化器進行損失優(yōu)化。
使用TextCNN可以實現(xiàn)對文本的分類任務(wù),其模型結(jié)構(gòu)如圖2所示。其中包括:一個用于生成詞向量的嵌入層;一個包含幾個卷積核的卷積層,一個卷積核可以得到len(seq)-filter_size+1個卷積結(jié)果;進入激活函數(shù)進行非線性化操作;再進行最大化池化操作;最后經(jīng)過全連接傳入softmax進行分類。

圖2 TextCNN模型Fig.2 TextCNN model
在TextCNN中一般使用word2vec或者GloVe作為詞向量的選擇,而AdaBERT使用Transformer可以真正識別上下文的信息。所以,本文使用AdaBERT的詞向量代替TextCNN本身的詞向量。BERT模型本身學習了大量百科知識,擁有很好的學習能力來學習彈幕中的上下文關(guān)系。而AdaBERT可以訓練出適合本文彈幕語料集的相應(yīng)結(jié)構(gòu)的模型,使用AdaBERT詞向量,對提高最終的模型效率和有效性有一定作用。
結(jié)合AdaBERT的TextCNN模型,在輸入層對文本使用AdaBERT轉(zhuǎn)換成相應(yīng)的詞向量,然后將所有詞向量拼接成一個向量矩陣B,公式如下:

其中,[]代表拼接詞向量的操作;b i代表句子里的每一個詞向量;Bi:j代表將第i個詞向量到第j個詞向量拼接。然后使用不同的卷積核W,大小(h)分別為3、4、5。從而獲得3個字符、4個字符、5個字符之間的關(guān)系。進行卷積操作得到特征Fi,如式(5)所示:

式中,b為偏差,通過R e L U激活函數(shù)生成特征F=[F1,F(xiàn)2,...,F(xiàn) n-m+h],然后進行批量歸一化(BN)操作,防止維度爆炸或者彌散。再進行最大池化,最后全連接到softmax層,輸出樣本在不同分類上的概率,取最大值為分類結(jié)果。
本文結(jié)合AdaBERT的TextCNN模型架構(gòu)如圖3所示:

圖3 結(jié)合AdaBERT的TextCNN模型Fig.3 TextCNN based on AdaBERT model
實驗主要進行模型正確性的驗證。本文采集了嗶哩嗶哩彈幕網(wǎng)的《秒速五厘米》的彈幕數(shù)據(jù)作為實驗的數(shù)據(jù)集。使用爬蟲技術(shù)共爬取5 384 000條彈幕,經(jīng)過去重、去除只有標點符號、去除表情等清理數(shù)據(jù)的手段后,剩余154 268條彈幕。對彈幕數(shù)據(jù)進行敏感詞標注,再進行人工標注查漏補缺。由于垃圾彈幕屬于少量異常數(shù)據(jù),所以本文將取出與垃圾彈幕相等數(shù)量的正常彈幕,生成平衡數(shù)據(jù)集。
最終電影《秒速五厘米》的彈幕數(shù)據(jù)集一共包含6 000條帶有標簽的彈幕數(shù)據(jù),其中含有3 000條正常彈幕和3 000條垃圾彈幕。彈幕數(shù)據(jù)集的標注結(jié)果見表1。

表1 彈幕數(shù)據(jù)集的標簽Tab.1 Label of barrage dataset
評判分類問題性能優(yōu)劣,一般可以用正確率和錯誤率來評估。而在本文的數(shù)據(jù)集中,少數(shù)異常是主要的關(guān)注對象,其分類精度也就顯得很重要。數(shù)據(jù)集中正常彈幕和垃圾彈幕的數(shù)量差距大,是一種不平衡的文本分類數(shù)據(jù)集,那么正誤率不太適合作為這種數(shù)據(jù)集的分類算法評判指標。本文將采用精確率(Pr eci s i on)、召回率(Recal l)、F1分數(shù)(F1-s cor e)這3個指標對算法進行評估。表2所示的混淆矩陣更能直觀地說明這3個概念。

表2 混淆矩陣Tab.2 Confusion matrix
精確率P表示的是預測結(jié)果為正例的數(shù)據(jù)中預測正確的比例;召回率R是指實際為正例中預測為正例的百分比。精確率和召回率之間存在一定的數(shù)量關(guān)系,即當精確率上升時,召回率會下降,反之亦然。綜合考慮精確率和召回率時可以使用F1分數(shù)。以下是精確率、召回率和F1分數(shù)的計算公式:


本次實驗使用Windows10操作系統(tǒng)、jupyter lab平臺,使用TensorFlow深度學習框架進行模型訓練,主要開發(fā)語言為Python。實驗數(shù)據(jù)集包含相等數(shù)量的正常彈幕和垃圾彈幕,從中隨機將數(shù)據(jù)集按8:2的比例分成訓練集和測試集。為說明本文提出的結(jié)合AdaBERT的TextCNN算法的優(yōu)勢,通過與TextCNN算法、樸素貝葉斯算法和BiLSTM算法進行對比結(jié)果,說明本文算法的有效性。實驗結(jié)果見表3。

表3 實驗結(jié)果Tab.3 Experimental result
從測試結(jié)果可見,本文算法的3個指標都是最高的。與使用word2vec的其它算法相比,采用AdaBERT詞向量模型的TextCNN模型相關(guān)指標均更高。說明使用AdaBERT進行模型預訓練得到的詞向量比word2vec詞向量更好。使用統(tǒng)計學知識計算分類概率的樸素貝葉斯模型,沒有考慮詞之間的上下文關(guān)系,而只是把每個詞單獨轉(zhuǎn)換成相應(yīng)的數(shù)值,并計算其屬于某個類型的概率。其取得的結(jié)果必定是不準確的。TextCNN、AdaBERT-TextCNN模型都屬于CNN類別的模型,而BiLSTM則屬于RNN模型。CNN類型的模型比使用RNN的BiLSTM的精確率和召回率更高,這說明彈幕這種短文本類型的分類更適合使用CNN進行。在垃圾彈幕識別中上下文關(guān)系比較少,關(guān)鍵詞的信息更多。
為了說明AdaBERT對BERT的參數(shù)優(yōu)化,本文還包含了這兩種方法的實驗對比,結(jié)果見表4。

表4 時間對比Tab.4 Time comparison
從表中結(jié)果來看,使用自適應(yīng)的BERT模型的確減少了訓練時間,提高了模型的效率。
總體來看,本文提出的結(jié)合AdaBERT的TextCNN模型,在實驗中取得較好的成果,與普通分類算法相比優(yōu)勢較大。使用AdaBERT相比一般BERT算法的參數(shù)更少,可以加快模型的預訓練,更好的提取詞向量特征,結(jié)合TextCNN后可以獲得更好的模型泛化能力。可以預見,本文算法對垃圾彈幕過濾這一應(yīng)用場景有較大作用,可以投入到實際的彈幕過濾系統(tǒng)中使用。
本文提出的結(jié)合AdaBERT的TextCNN垃圾彈幕識別與過濾算法模型,與以前的基于統(tǒng)計學的分類算法相比,有更高的準確率;與CNN類型和RNN類型的模型相比,擁有更好的泛化能力。采用AdaBERT也減少了模型的復雜程度,使得總體訓練時間降低。實現(xiàn)了對垃圾彈幕文本更好的語義理解,獲取了更準確的彈幕特征,提高垃圾彈幕識別的準確率。目前,本文只研究基于彈幕文本內(nèi)容的篩選,后續(xù)將考慮加入彈幕的位置和視頻內(nèi)容等維度加以綜合評估,進一步提高識別精確率。