国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向文本分類的BERT-CNN模型

2023-05-16 06:48:38秦全易軍凱
關(guān)鍵詞:注意力卷積向量

秦全,易軍凱

(北京信息科技大學(xué) 自動(dòng)化學(xué)院,北京 100192)

0 引言

隨著自然語言處理(natural language processing,NLP)的不斷發(fā)展,文本分類作為自然語言處理的任務(wù)之一,被應(yīng)用于許多方面,比如敏感信息過濾、新聞分類、情感分析等?;谧匀徽Z言處理的文本分類技術(shù)主要圍繞文本表示、特征提取和特征分類三個(gè)方面。詞嵌入作為自然語言處理領(lǐng)域早期的預(yù)訓(xùn)練技術(shù),能夠很好地進(jìn)行詞向量表示。Mikolov等[1]提出了一種詞向量訓(xùn)練工具——Word2Vec,可以從大規(guī)模沒有標(biāo)注的語料中生成詞的向量表示,但這種方法只考慮到了文本的局部信息,沒有充分提取上下文信息。Peng等[2]結(jié)合了現(xiàn)有微博熱點(diǎn)話題檢測(cè)方法,提出了一種基于用戶喜好的熱點(diǎn)話題檢測(cè)算法,該算法能檢測(cè)微博中的熱點(diǎn)話題,并能去除含有歧義的熱點(diǎn)話題。姚艷秋等[3]基于點(diǎn)互信息與信息檢索算法,提出了一種Laplace平滑情感判定算法用于情感詞典的擴(kuò)充,細(xì)化文本語義的規(guī)則來計(jì)算文本情感值。Guo等[4]提出了一種基于內(nèi)容和上下文機(jī)制的方法,該方法使用BERT-BiLSTM-Attention(bidirectional encoder representations from transformers-bidirectional long short-term memory-attention)模型來提取文本中的特征。Jan Neerbek[5]將循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)應(yīng)用于文本分類任務(wù),雖然RNN模型在檢測(cè)準(zhǔn)確度上比其他模型性能要高,但是訓(xùn)練模型的時(shí)間較長(zhǎng),隨著時(shí)間的增加,很容易出現(xiàn)“梯度消失”或“梯度爆炸”。沈麒寧[6]將Elmo模型(embeddings from language models)和卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)相結(jié)合,提出了一種改進(jìn)的Elmo-CNN文本分類模型用于敏感文檔信息的檢測(cè)。Devlin等[7]引入動(dòng)態(tài)詞向量BERT模型,利用Transformer結(jié)構(gòu)的編碼器(encoder)部分對(duì)文本進(jìn)行雙向?qū)W習(xí)和處理,通過對(duì)目標(biāo)單詞進(jìn)行掩碼來預(yù)測(cè)詞語的向量,利用自注意力機(jī)制學(xué)習(xí)詞與詞之間的關(guān)系,使得詞向量的表示能夠融入句子級(jí)的語義信息。Liu 等[8]將ALBERT(a lite BERT)與CNN相結(jié)合來處理不同粒度不同層次的文本,但是由于CNN缺少記憶能力,并且卷積核不能太大,因此獲取遠(yuǎn)程特征信息的能力較差。Li等[9]提出了BiLSTM-CNN方法,采用BiLSTM模型獲得兩個(gè)方向的表示,然后通過卷積神經(jīng)網(wǎng)絡(luò)將兩個(gè)方向的表示組合成一個(gè)新的模型,提高了長(zhǎng)文本分類的準(zhǔn)確性。段丹丹[10]針對(duì)現(xiàn)有文本分類算法存在特征稀疏的問題,提出了一種基于Transformer的雙向編碼器表示的中文文本分類算法,此算法能有效表示句子層面的語義信息,具有更好的中文短文本分類效果。

本文將BERT模型與CNN模型相結(jié)合,提出了BERT-CNN文本分類模型。首先利用BERT中的自注意力(self-attention)機(jī)制獲取詞與詞之間的語義關(guān)系,然后通過 CNN[11]提取文本特征,最后通過全連接層進(jìn)行二分類。此模型充分提取了上下文文本信息,從而提高了文本分類精度。

1 BERT-CNN分類模型

本文提出BERT-CNN模型實(shí)現(xiàn)分類任務(wù),其流程如圖1所示,主要由BERT模型層、卷積神經(jīng)網(wǎng)絡(luò)層和全連接層組成。首先每條中文文本進(jìn)入BERT模型層前先進(jìn)行文本預(yù)處理,包括去除符號(hào)、分詞和停用詞等;然后將處理好的文本代入BERT模型層生成詞向量;之后利用卷積神經(jīng)網(wǎng)絡(luò)層提取文本特征;最后將每條文本經(jīng)過全連接層進(jìn)行分類輸出。

圖1 BERT-CNN模型實(shí)現(xiàn)流程

1.1 基于BERT模型的文本表示

BERT[12]以Transformer的encoder結(jié)構(gòu)為基礎(chǔ),主要包含MLM(masked language model)掩碼任務(wù)和NSP(next sentence prediction)語句預(yù)測(cè)任務(wù)。BERT模型如圖2所示,從整體來看,BERT的結(jié)構(gòu)主要由輸入層、編碼層和輸出層組成。

圖2 BERT模型

1.1.1 輸入層

在輸入層中,輸入向量由詞向量(token embeddings)、段向量(segment embeddings)和位置向量(positions embeddings)三個(gè)向量相疊加而成,[CLS]和[SEP]分別作為一句話開頭和結(jié)束的標(biāo)志,并且[CLS]形成的向量可以作為整句話的語義表示,從而用于下游的分類任務(wù)。BERT有著并行化的優(yōu)點(diǎn),能很大程度上減少模型的訓(xùn)練時(shí)間,但這也導(dǎo)致了輸入文本失去了詞序性,因此我們加入位置編碼P來獲取詞與詞之間的位置關(guān)系。位置編碼P按式(1)式(2)計(jì)算:

(1)

(2)

式中:p為當(dāng)前詞在句子中的位置;d為詞嵌入維度;i為向量的某一維度。根據(jù)其位置的奇偶性,以余弦或正弦的形式表示其位置信息。以段向量ES表示當(dāng)前詞所在句子的編碼,位置向量EP表示一個(gè)詞所在的位置,詞向量ET表示文本嵌入轉(zhuǎn)換的向量。這樣,輸入文本X=[X1,X2,…,Xn]向量形式E(X)可表示為:

E(X)=EP?ES?ET

(3)

1.1.2 編碼層

編碼層是BERT模型中核心的部分,其內(nèi)部是由多層雙向Transformer編碼器組成。Transformer編碼器主要包含多頭注意力層[13](multi-headed attention)和前饋全連接層 (feed forward neural network)兩個(gè)部分。

多頭注意力是Transformer編碼器乃至整個(gè)BERT模型的核心,因?yàn)樗梢詫W(xué)習(xí)到一句話中詞與詞之間的關(guān)系,且沒有距離限制。多頭注意力層有h個(gè)并行的注意力層,每一個(gè)注意力層被稱為一個(gè)頭,如圖3所示。查詢向量Q、鍵向量K、值向量V,通過3個(gè)線性層進(jìn)行投影,然后進(jìn)入注意力層得到注意力分?jǐn)?shù),學(xué)習(xí)詞與詞之間的語義關(guān)系,最后這h個(gè)頭的輸出將會(huì)被拼接,之后輸入到最后一個(gè)線性層Wo進(jìn)行整合,得到多頭注意力。

圖3 多頭注意力機(jī)制結(jié)構(gòu)

多頭注意力分?jǐn)?shù)和注意力分?jǐn)?shù)的計(jì)算如式(4)式(5)所示。

M(Q,K,V)=C(H1,H2,…,Hh)Wo

(4)

Hi=A(QiWQ,KiWK,ViWV)

(5)

式中:M(Q,K,V)為多頭注意力;C(H1,H2,…,Hh)為連接函數(shù);Hi為第i個(gè)注意力分?jǐn)?shù);A(QiWQ,KiWK,ViWV)為注意力函數(shù);WiQ、WiK、WiV是輸入線性層的權(quán)重矩陣;Wo是輸出線性層的權(quán)重矩陣。

多頭注意力機(jī)制是注意力機(jī)制的一個(gè)特殊形式,可將計(jì)算注意力分?jǐn)?shù)的操作分為三個(gè)階段,實(shí)現(xiàn)過程如圖4所示。首先計(jì)算查詢向量Q與每個(gè)鍵向量K的相似性得出權(quán)重系數(shù)QKT;然后將上一步得到的權(quán)重系數(shù)進(jìn)行歸一化,使得原始數(shù)據(jù)的所有元素權(quán)重之和相加為1,通常使用Softmax函數(shù)計(jì)算;最后將權(quán)重向量與相應(yīng)的值向量V進(jìn)行相乘得到了最終的注意力矩陣A。注意力矩陣A的計(jì)算如式(6)所示。

(6)

圖4 注意力機(jī)制實(shí)現(xiàn)過程

圖中X是指輸入矩陣,每一行代表一個(gè)詞,序列里面的每一個(gè)詞經(jīng)過注意力加權(quán)之后,當(dāng)前這個(gè)詞等于用這句話中其他所有詞重新表達(dá)了一遍,每個(gè)詞含有了這句話中所有成分的信息[14]。即詞與詞之間存在著一定的“相關(guān)性”,當(dāng)前詞與其它詞之間的權(quán)重系數(shù)越大,其“相關(guān)性”就越大。

1.1.3 輸出層

輸入文本序列X=[X1,X2,…,Xn]在經(jīng)過輸入層和編碼層后,得出基于BERT模型的動(dòng)態(tài)詞向量矩陣T=[T1,T2,…,Tn]。

1.2 基于卷積神經(jīng)網(wǎng)絡(luò)的文本特征提取

在文本向量化表示中,如果詞向量維度過大,則會(huì)造成維數(shù)災(zāi)難,導(dǎo)致大部分維度的向量只占據(jù)極小部分的權(quán)重,對(duì)最終分類結(jié)果有著很大的影響。因此需要對(duì)數(shù)據(jù)進(jìn)行降維,以達(dá)到提取主要特征的目的。CNN在用于文本分類任務(wù)時(shí),利用卷積層和池化層可以很好地對(duì)文本特征進(jìn)行提取,因此。本文采用CNN完成對(duì)動(dòng)態(tài)詞向量矩陣T的特征提取,CNN的結(jié)構(gòu)如圖5所示。

圖5 卷積神經(jīng)網(wǎng)絡(luò)

1.2.1 卷積層

CNN使用矩陣來表示一個(gè)句子,每一行表示一個(gè)詞,列數(shù)代表詞嵌入維度大小。卷積核在動(dòng)態(tài)詞向量矩陣T=[T1,T2,…,Tn]上通過上下滑動(dòng)來提取特征,移動(dòng)過程相當(dāng)于提取n-gram特征,其中卷積核的長(zhǎng)度主要用于捕獲d個(gè)詞之間的關(guān)系,卷積核的寬度就是詞嵌入維度。之后利用不同尺寸的卷積核對(duì)動(dòng)態(tài)詞向量矩陣T進(jìn)行卷積,最后通過ReLU激活函數(shù)得到維度大小為(n-d+1)×1的特征映射矩陣[15]Ci=[C1,C2,…,Cn-d+1],具體計(jì)算如下:

Ci=f(Wi·T+b)

(7)

式中:Wi為卷積核的權(quán)重矩陣;b為偏置項(xiàng)。

1.2.2 池化層

該層主要對(duì)卷積層的特征映射矩陣C進(jìn)行壓縮,提取主要局部特征。利用卷積神經(jīng)網(wǎng)絡(luò)CNN的最大池化層(max-pooling)獲得主要的局部特征,丟棄掉不重要的特征,將得到的局部特征拼接構(gòu)成新矩陣,具體計(jì)算公式如下:

Mi=max(Ci)=max(C1,C2,…,Cn-d+1)

(8)

式中:Mi為特征矩陣;max(C1,C2,…,Cn-d+1)為最大值函數(shù)。

1.2.3 全連接輸出層

在得到特征矩陣Mi后,將其輸入到全連接層中。為避免過擬合,通常會(huì)在在全連接層后接一個(gè)Dropout,Dropout的作用是以一定的概率丟棄神經(jīng)元,將其置為0,然后用Sigmoid作為激活函數(shù)進(jìn)行二分類:

(9)

式中:S(Mi)為Sigmoid激活函數(shù)。

2 實(shí)驗(yàn)與分析

2.1 實(shí)驗(yàn)環(huán)境

本實(shí)驗(yàn)運(yùn)行平臺(tái)的CPU為AMD Ryzen 75 800Hz,顯卡為 Radeon 3.20 GHz,內(nèi)存為16 GB,GPU為NVIDIA GeForce RTX3050,操作系統(tǒng)為Windows11,編程語言為Python,深度學(xué)習(xí)框架為Pytorch1.1。

2.2 實(shí)驗(yàn)數(shù)據(jù)集

本文將整個(gè)數(shù)據(jù)集分為“正常文本”和“敏感文本”標(biāo)簽,通過爬蟲技術(shù)爬取今日頭條、新浪微博20 854條中文文本作為“正常文本”標(biāo)簽的數(shù)據(jù),然后通過維基百科下載和爬取14 873條中文文本作為“敏感文本”標(biāo)簽的數(shù)據(jù),共35 727條,組成數(shù)據(jù)集,隨后把數(shù)據(jù)集按7∶2∶1的比例分別分為訓(xùn)練集24 979條,測(cè)試集7 178條,驗(yàn)證集3 570條。

2.3 模型參數(shù)設(shè)置

本文的Word2Vec、Glove詞向量的詞嵌入維度d=256。BERT預(yù)訓(xùn)練模型采用的是由hugging-face團(tuán)隊(duì)發(fā)布的BERT-base-Chinese模型,模型參數(shù)為:Transformer 編碼器層個(gè)數(shù)L=12,隱層單元H=768,注意力機(jī)制頭數(shù)A=12。模型參數(shù)和訓(xùn)練參數(shù)如表1和表2所示。

表1 CNN模型參數(shù)設(shè)置

表2 訓(xùn)練參數(shù)設(shè)置

2.4 評(píng)價(jià)指標(biāo)

評(píng)價(jià)指標(biāo)是評(píng)價(jià)模型性能的標(biāo)準(zhǔn),是數(shù)據(jù)分析中非常重要的部分,本實(shí)驗(yàn)采用準(zhǔn)確率(accuracy)、精確率(precision)、召回率(recall)和F1 值(F-score)這4個(gè)評(píng)價(jià)指標(biāo)對(duì)模型進(jìn)行分析,各個(gè)評(píng)價(jià)指標(biāo)的計(jì)算如下:

(10)

(11)

(12)

(13)

式中:ACC為準(zhǔn)確率;P為精確率;R為召回率;F1為F1值。nTP為真陽性,表示實(shí)際類別為正類,預(yù)測(cè)類別為正類的數(shù)量;nTN為真陰性,表示的是實(shí)際類別為負(fù)類,預(yù)測(cè)類別為負(fù)類的數(shù)目;nFP為假陽性,表示的是實(shí)際類別為負(fù)類,但預(yù)測(cè)類別為正類的數(shù)目;nFN為假陰性,表示的是實(shí)際類別為正類,但預(yù)測(cè)類別為負(fù)類的數(shù)目。本文將“正常文本”設(shè)為正類,“敏感文本”設(shè)為負(fù)類。

2.5 實(shí)驗(yàn)結(jié)果與分析

為驗(yàn)證BERT-CNN模型的文本分類性能,尤其是在詞向量的動(dòng)態(tài)表示與靜態(tài)表示上,本文分別選取了Word2Vec和Glove兩種靜態(tài)詞向量模型與卷積神經(jīng)網(wǎng)絡(luò)模型組成Word2Vec-CNN和Glove-CNN兩種對(duì)比模型。兩者在文本分類領(lǐng)域中已經(jīng)得到廣泛的應(yīng)用并在性能上有著較好的效果。其實(shí)驗(yàn)結(jié)果如表3所示。

表3 不同詞向量模型的比較

從表4可以看出,相比于隨機(jī)詞嵌入與CNN模型結(jié)合,各個(gè)詞向量在CNN模型上的分類效果更好;BERT-CNN模型的精確率比Word2Vec-CNN模型和Glove-CNN模型分別提升了0.57%和3.95%;BERT-CNN模型的F1值比Word2Vec-CNN模型和Glove-CNN模型分別提升了12.73%和9.1%;BERT-CNN模型的準(zhǔn)確率比Word2Vec-CNN模型和Glove-CNN模型分別提高了10.07%和7.07%??偟膩碚f,相比于Word2Vec-CNN模型和Glove-CNN模型,BERT-CNN模型的分類效果會(huì)更好,因?yàn)樗軌蛲ㄟ^注意力機(jī)制來提取上下文信息。

3 結(jié)束語

本文將BERT模型與CNN模型相結(jié)合,提出了BERT-CNN文本分類模型。首先,利用BERT模型里的注意力機(jī)制獲取詞與詞之間的語義關(guān)系,解決了Word2Vec等模型形成的詞向量忽視了上下文信息的問題;然后利用CNN模型提取文本的主要特征,從而達(dá)到降維的目的;最后將提取到的特征經(jīng)過全連接層進(jìn)行二分類。實(shí)驗(yàn)結(jié)果表明,本文提出的BERT-CNN模型相對(duì)于Word2Vec-CNN模型和Glove-CNN模型,在性能上有更好的表現(xiàn)。在今后的工作中,將對(duì)BERT-CNN模型進(jìn)行優(yōu)化,提高文本特征提取精度,從而進(jìn)一步提升模型的準(zhǔn)確率。

猜你喜歡
注意力卷積向量
向量的分解
讓注意力“飛”回來
基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
聚焦“向量與三角”創(chuàng)新題
從濾波器理解卷積
電子制作(2019年11期)2019-07-04 00:34:38
基于傅里葉域卷積表示的目標(biāo)跟蹤算法
“揚(yáng)眼”APP:讓注意力“變現(xiàn)”
A Beautiful Way Of Looking At Things
向量垂直在解析幾何中的應(yīng)用
向量五種“變身” 玩轉(zhuǎn)圓錐曲線
甘德县| 崇礼县| 交城县| 乌鲁木齐市| 盐山县| 秭归县| 宝鸡市| 泉州市| 日土县| 河曲县| 尉氏县| 东光县| 大港区| 嘉荫县| 龙海市| 绍兴市| 无锡市| 平陆县| 工布江达县| 大姚县| 民丰县| 普安县| 全南县| 油尖旺区| 古丈县| 化隆| 江山市| 临潭县| 襄城县| 阿合奇县| 浏阳市| 吉木萨尔县| 衡南县| 石泉县| 库尔勒市| 阿尔山市| 五大连池市| 布拖县| 巫溪县| 高密市| 南丰县|