王學(xué)穎, 孔德宙, 于 楊
(沈陽師范大學(xué) 軟件學(xué)院, 沈陽 110034)
在行業(yè)環(huán)境中,消費者對待產(chǎn)品有一個正確的觀點非常重要[1],由于在許多領(lǐng)域中這些觀點的數(shù)量眾多,長度參差不齊,對其進行分析是一項耗時且費力的任務(wù),因此如何能夠準確地把握這些觀點潛在的價值已變成現(xiàn)在非常熱門的課題。隨著計算能力的不斷提高和網(wǎng)站上大量免費數(shù)據(jù)的廣泛使用,深度學(xué)習(xí)技術(shù)對自然語言處理(natural language process, NLP)領(lǐng)域產(chǎn)生了巨大的影響,尤其是語言的建模技術(shù)起著至關(guān)重要的作用。BERT[2]是最近比較流行的語言模型,已在許多NLP任務(wù)[3]以及其他領(lǐng)域中得到廣泛使用,如利用BERT進行專利實體抽取研究[4]。其體系結(jié)構(gòu)的主要組件稱為transformer,由attention heads組成,這些heads的目的是要特別注意與給定的任務(wù)相對應(yīng)的輸入句子的各個部分,同時為了從上下文中學(xué)習(xí)語法和語義,BERT對大量的Wikipedia文檔和書籍進行了預(yù)訓(xùn)練。
姚佳奇等[5]使用圖卷積網(wǎng)絡(luò)(graph convolutional networks, GCN)考慮了序列中的情感依賴性。研究表明,當序列中存在多個方面級時,其中一個方面級的情緒會影響另一個方面級的情緒,利用這個信息可以提高模型的性能。一些研究將AE任務(wù)轉(zhuǎn)換為句子對分類任務(wù)。楊玉亭等[6]使用序列的方面級術(shù)語來構(gòu)造輔助句子,然后針對此特定任務(wù)利用2個序列對BERT進行微調(diào)。還可以使用特定領(lǐng)域的數(shù)據(jù)來豐富模型的單詞和句子級別表示。巫浩盛等[7]通過在其他餐廳和筆記本電腦數(shù)據(jù)上對BERT模型(稱為BERT-PT)進行后訓(xùn)練來證明這一點。在實驗中,將BERT-PT用于模型的初始化,由于BERT模型的特殊體系結(jié)構(gòu),所以可以在其頂部附加額外的模塊。
基于上述學(xué)者的問題及經(jīng)驗,本文提出了并行聚合和分層聚合2個模塊,以提高BERT模型的性能。首先,將BERT用于基于方面級的情感分析(ABSA)任務(wù),使用BERT架構(gòu)中相同的層模塊;其次,采用隱藏層進行預(yù)測;最后選擇條件隨機場(CRF)進行序列標記,從而獲得更好的結(jié)果。實驗發(fā)現(xiàn),通過長時間的BERT模型訓(xùn)練不會導(dǎo)致模型過擬合,但經(jīng)過一定次數(shù)的訓(xùn)練后會導(dǎo)致模型過擬合。
ABSA中的2個主要任務(wù)是方面級提取和方面級情感分類(aspect sentiment classification, ASC)。
在AE中,目標是提取評論中帶有情感的產(chǎn)品的特定方面級。例如在句子“筆記本電腦的電池質(zhì)量很好”中,電池是提取的內(nèi)容。此任務(wù)可以看作序列標記任務(wù),從3個字母{B、I、O}的集合為單詞分配標簽。序列中的單詞可以是方面級術(shù)語(O)中方面級術(shù)語(B)的起始詞,也可以不是方面級術(shù)語(O)。
在ASC中,目標是提取消費者在評論中表達的情感。給定一個序列,將提取正、負和中性之一作為該序列的類。對于每個輸入序列,BERT模型使用2個額外的令牌:
[CLS],w1,w2,…,wn,[SEP]
句子的情感由體系結(jié)構(gòu)最后一層中的[CLS]令牌表示。然后,類別概率由softmax函數(shù)計算。
深度模型可以隨著語句數(shù)量的增長而獲取對語言的更深入了解。蔡國永等[8]的研究表明,BERT的起始層到中間層可以提取語法信息,而語義信息在更高的層中獲取,因此在研究中可以利用BERT模型的最后幾層進行語義分析。
本文提出的2個模型在原理上相似,但是實現(xiàn)上略有不同。同樣,對于這2個任務(wù),代價的計算方式也不同。對于ASC任務(wù),利用交叉熵損失;對于AE任務(wù),利用CRF。AE任務(wù)可以視為序列標記,由于CRF使用了一個建立概率模型的框架來分割和標記序列數(shù)據(jù),所以序列中的先前標記非常重要。對于此類任務(wù),相比隱馬爾可夫模型和隨機語法,CRF能夠放松在這些模型中做出的強獨立性假設(shè)。CRF也避免了最大熵馬爾可夫模型(MEMMs)和其他基于有向圖模型的判別馬爾可夫模型的基本局限性。
CRF[9]是一種圖形模型,已用于計算機視覺(例如用于像素級標記[10])和用于序列標記的NLP。由于可以將AE視為序列標記任務(wù),因此本文選擇在模型的最后一部分中使用CRF層。AE使用CRF模塊的理由是這樣做有助于網(wǎng)絡(luò)考慮標簽的聯(lián)合分配,因為序列詞的標簽取決于出現(xiàn)在它們前面的詞。例如,如圖1所示,形容詞商品的出現(xiàn)可以為模型提供一個線索,即下一個單詞可能不是另一個形容詞。用于計算標簽的聯(lián)合概率的方程式如下:
圖1 使用CRF表示帶有單詞標簽的句子Fig.1 An example of representing a sentence with its word labels using CRFs
序列詞之間的關(guān)系通過使用等式(1)中的特征函數(shù){fk}表示。這些關(guān)系可以強也可以弱,或者根本不存在,由在訓(xùn)練階段計算出的權(quán)重{θk}控制。
Lee等[11]提出了一種基于2步結(jié)構(gòu)的RoI提取層,用于目標檢測和實例分割,稱為GRoIE(通用RoI提取器)。首先對每一層進行預(yù)處理,然后將它們聚合在一起,最后應(yīng)用注意機制作為后處理,以刪除無用的全局信息。此外,將GRoIE添加到最先進的2步結(jié)構(gòu)中,用于對象檢測和實例分割。實驗表明,深層模型的隱藏層可以更多地用于提取區(qū)域特定信息。
受文獻[11]的啟發(fā),本文使用BERT層模塊的并行聚合,稱為P-SUM,結(jié)構(gòu)如圖2所示。由于所有較深層都包含大量有關(guān)該任務(wù)的信息,通過增加一個BERT層并使用每一層進行預(yù)測,把每一層中提取的信息組合在一起,以此來更大限度利用BERT模型的最后4層產(chǎn)生更豐富的語義表示。
圖2 并行聚合Fig.2 Parallel aggregation (P-SUM)
莫凌飛和胡書銘[12]利用深度卷積網(wǎng)絡(luò)的多尺度金字塔層次結(jié)構(gòu)來構(gòu)造具有邊際額外成本的特征金字塔來識別系統(tǒng)中檢測不同尺度目標的基本組成部分,提出了功能金字塔網(wǎng)絡(luò),該網(wǎng)絡(luò)的架構(gòu)包括一個自底向上的路徑、一個自頂向下的路徑和橫向連接,用于在所有尺度上提取高級語義特征,結(jié)構(gòu)如圖3所示。
圖3 架構(gòu)方式Fig.3 Architecture mode
受此啟發(fā),本文提出分類聚合(H-SUM)模型,體系結(jié)構(gòu)如圖4所示。在這里,在每個隱藏層上應(yīng)用BERT層后,采用自頂向下的架構(gòu),在每個層次上獨立地進行預(yù)測,再將它們與上一層聚合,類似于P-SUM,使用每個輸出分支進行預(yù)測,然后對它們進行求和進而從BERT模型的隱藏層提取更多語義,以保證模型的準確率。
圖4 分類聚合Fig.4 Hierarchical aggregation (H-SUM)
模型在16 GB內(nèi)存的GPU(GeForce RTX 2060)PC機器上進行實驗,在Sublime編輯器中編譯運行,使用Matplotlib圖庫繪制圖片,以16個批次的模型和BERT-PT模型作為基準。對于訓(xùn)練,使用了Adam優(yōu)化器,將學(xué)習(xí)率設(shè)置為e-4。從分布式訓(xùn)練數(shù)據(jù)中,使用150個示例作為驗證。為了評估模型,將官方腳本用于AE任務(wù),并將來自同一代碼庫的腳本用于ASC任務(wù)。結(jié)果在AE中以F1表示,在ASC中以MF1表示。實驗采用了SemEval 2014和2016中的筆記本電腦和餐廳數(shù)據(jù)集,數(shù)據(jù)集的統(tǒng)計數(shù)據(jù)見表1和表2,其中S表示句子數(shù)量,A表示方面級數(shù)量。
表1 SemEval 2014和2016的AE筆記本電腦(LPT 14)和餐廳(RST 16)數(shù)據(jù)集Table 1 Laptop (LPT 14) and restaurant (RST 16) datasets from SemEval 2014 and 2016, respectively, for AE
表2 SemEval 2014中針對ASC的筆記本電腦(LPT 14)和餐廳(RST 14)數(shù)據(jù)集Table 2 Laptop (LPT 14) and restaurant (RST 14) datasets from SemEval 2014 for ASC
為了更好地對BERT層進行分析,本文針對BERT層的性能以及BERT層的訓(xùn)練時間2個方面的內(nèi)容進行了實驗。
首先針對BERT模型的每一層性能表現(xiàn)進行實驗和分析。實驗表明,在更深的層中,BERT模型體現(xiàn)出了更好的性能,結(jié)果如圖5所示。在本文實驗環(huán)境中,最后4層的精確度更高,所以在P-SUM和H-SUM模型中將其引入。
圖5 RST 14驗證數(shù)據(jù)上用于ASC的BERT層的性能Fig.5 Performance of BERT layers for ASC on RST 14 validation data
然后針對訓(xùn)練時間,嘗試進行更長時間的訓(xùn)練以提高網(wǎng)絡(luò)的性能。當訓(xùn)練樣本的數(shù)量少于模型中包含的參數(shù)數(shù)量時,一味地增加訓(xùn)練時長可能會導(dǎo)致模型過度擬合。在實驗過程中,盡管訓(xùn)練數(shù)據(jù)點的數(shù)量相對較少,但在進行更多訓(xùn)練的情況下,模型并不會過擬合。其原因可能是使用了已經(jīng)過預(yù)訓(xùn)練的模型,該模型已經(jīng)看到了大量數(shù)據(jù)(Wikipedia和Books Corpus)。因此,預(yù)期通過進行更多的訓(xùn)練,該模型仍能夠推廣。
通過查看圖6的損失值,可以得出相同的結(jié)果。如果過度擬合,預(yù)計損失會上升,性能會下降。但是如圖5所示,隨著損失的增加,性能會提高。這表明在15~20個周期,隨著訓(xùn)練次數(shù)的增加,網(wǎng)絡(luò)權(quán)重會不斷地變化,在之后保持穩(wěn)定,表明沒有更多的學(xué)習(xí)。
(a) AE: 筆記本電腦; (b) AE: 餐廳; (c) ASC: 筆記本電腦; (d) ASC: 餐廳圖6 BERT-PT對AE和ASC任務(wù)的訓(xùn)練和驗證損失Fig.6 Training and validation losses of BERT-PT for AE and ASC
實驗結(jié)果表明,隨著訓(xùn)練時間的增加, BERT模型也得到了改善(表3)。為了與DC-CNN的模型進行比較,本文針對2個模型的特點選擇了相同的模型。與BERT-PT和BAT模型基于最低的驗證損失選擇最佳的模型不同,通過實驗觀察到驗證集的準確性提高之后,本文選擇了經(jīng)過4個時期訓(xùn)練的模型(圖5)。表3(BERT-PT*是使用本文模型修改的BERT-PT模型,表中分數(shù)均為9次測試的平均值。Acc表示精度,MF1表示Maco-F1)表明了原始的BERT-PT得分以及不同模型選擇的得分。與訓(xùn)練30個時長的BERT-PT相比,在除AE(餐廳)以外的所有情況下,所提出的模型在F1和Macro-F1方面級產(chǎn)生了更好的結(jié)果。還可以看出,提出的模型在數(shù)據(jù)集和任務(wù)上均勝過BERT-PT模型。
表3 結(jié)果比較Table 3 Comparison of results
本文提出了并行聚合和分層聚合2個模塊應(yīng)用于ABSA的2個主要任務(wù),模塊利用BERT語言模型的隱藏層來產(chǎn)生輸入序列的更深層語義表示,這些層以并行方式進行聚合,并且進行了分類。對選定的每個隱藏層進行預(yù)測并計算損失,然后將這些損失求和以產(chǎn)生模型的最終損失。使用條件隨機字段解決了方面級提取問題,這有助于考慮序列標簽的聯(lián)合分布以實現(xiàn)更準確的預(yù)測。實驗表明,所提出的方法優(yōu)于訓(xùn)練后的普通BERT模型。