程兆亮 沈雅婷 唐俊杰 王澤銘
(南京理工大學紫金學院,江蘇 南京 210023)
在實際應用中,需要從大量的文本數(shù)據(jù)中過濾出特定信息,如搜索引擎、廣告識別、情感分析[1]等。特定信息的正確理解和準確表達對于信息處理、搜索引擎、自動化翻譯等應用具有重要意義。
其中運用的中文文本特定信息過濾是一種文本處理技術,用于從中文文本中提取出特定的信息。常用的自然語言處理技術[2]技術包括命名實體識別、關鍵詞提取[3]、文本分類、詞向量和卷積神經網絡等。這些技術可以用于信息檢索、自然語言處理、計算機視覺等領域,具有廣泛的應用前景。
在實際應用中,中文是一種復雜的語言,存在相同發(fā)音的漢字,因此在處理中存在一個挑戰(zhàn):音變。引發(fā)特定信息的音變現(xiàn)象是因為中文作為一種復雜的語言,存在相同發(fā)音的漢字。此外,拼音拼寫錯誤也是導致特定信息音變的常見原因之一。這些音變現(xiàn)象給信息處理和語言理解任務帶來了巨大的挑戰(zhàn),尤其是在自然語言處理領域,輸錯一個拼音,文字便不同。因此在進行文本信息過濾時需要考慮到音變帶來的影響。
GCNN 模型[4]是一種結合了卷積神經網絡[5](Convolutional Neural Networks,CNN)與門控機制(Gate Mechanism)的深度學習模型。門控卷積神經網絡在處理語言數(shù)據(jù)時具有較強的表達能力和魯棒性,在實際應用中能夠取得良好的效果。
本文將研究一種基于門控卷積神經網絡的音變的中文文本特定信息過濾模型[6],使用添加了平滑參數(shù)的SmoothL1Loss作為損失函數(shù),并將由交叉熵計算的樣本隸屬度融入其中,旨在提高中文文本處理的準確性和效率。
門控卷積神經網絡(Gated Convolutional Neural Network,GCNN)是卷積神經網絡(CNN)的一種變體,對序列數(shù)據(jù)和文本數(shù)據(jù)的處理進行了改進,以提升模型對序列信息的處理能力。其中卷積層中引入了門控機制,可對信息的流動和過濾進行控制。
圖1表明了模型的體系結構,單詞由存儲在查找表中的向量表示D|V|×m,其中m和|V|分別是詞嵌入大小和詞匯表中的單詞數(shù),模型輸入的單詞序列W0,...,Wn可以用嵌入向量表示為E=Dw。
圖1 用于語言建模的門控卷積網絡的架構
可以由hi(X)=(X*W+b)?σ(X*V+c) 計算隱層,其中X∈RN×m是hi層的輸入(單詞嵌入或前一層的輸出),W∈R(k×m×n),b∈Rn,V∈R(k×m×n),c∈Rn是學習參數(shù),σ是sigmoid 函數(shù),?是矩陣之間的逐元素乘積。在輸入時確保hi沒有來自未來單詞的信息。移動卷積輸入解決卷積核從未來單詞中提取信息的問題。
每個層的輸出都是一個線性投影(X*V+c),由門控σ(X*V+c)調節(jié)。
門控卷積神經網絡的基本結構包括卷積層和池化層,卷積層由CGU和GCU 兩個子層組成,可以自適應地學習特征和控制信息的流動和過濾[7]。
基于門控卷積神經網絡的音變的中文文本特定信息過濾模型的特征表示方式具有較高的靈活性、可解釋性和計算效率,能夠有效地提取中文文本中的特定信息,實現(xiàn)對文本的過濾和分類。
常用的文本分類方法包括樸素貝葉斯分類[8]、支持向量機分類[9]、決策樹分類和深度學習模型等[10]。
從圖2中看到,文本分類主要有文本輸入、分詞(未登錄詞識別)、特征提取和選擇、文本表示、文本分類五個步驟。
圖2 文本分類的五個步驟
本文所使用的損失函數(shù)Smooth L1 Loss(平滑L1 損失)是由Ross Girshick[11]在2015 年的論文《Fast R-CNN》中提出。SmoothL1Loss(平滑L1損失)在深度學習領域得到了廣泛的研究和應用。
SmoothL1Loss 損失無法根據(jù)具體任務進行調整,在一些場景下無法適應數(shù)據(jù)的特點。因此,添加一個平滑參數(shù)β提高模型性能和精度,在處理異常值時更穩(wěn)定,也具有連續(xù)性,更好地適應不同任務;并引入加權損失函數(shù)使模型更加關注重要的樣本。添加了平滑參數(shù)后的SmoothL1Loss的公式如下:
公式1中,yi是真實值,f(xi)是模型輸出(預測值),β為平滑參數(shù)。SmoothL1Loss 根據(jù)預測值與真實值之間的差異來決定,當差異較大(大于等于1)時采用線性函數(shù)進行懲罰,將誤差的絕對值減去一個0.5β,對較大的誤差進行更嚴格的懲罰。MAE的原公式如下:
公式2 中,yi是真實值,f(xi) 是模型輸出(預測值),MAE是把二者之差的絕對值作為誤差。
當差異較?。ㄐ∮?)時,采用平方函數(shù)也就是L2Loss(MSE)進行懲罰。對較小的誤差進行較小的懲罰,讓損失更加平滑,增強模型的穩(wěn)定性。MSE的原公式如下:
公式3 中,yi是真實值,f(xi) 是模型輸出(預測值),SmoothL1Loss在對異常值的處理上更加魯棒性。它對于較大的誤差具有較強的懲罰能力,能夠減小異常值對損失函數(shù)的影響。平滑特性可以使得梯度下降算法更加穩(wěn)定,更容易收斂。
從圖3可以看到,當預測值和ground truth差別較小的時候,其實使用的是L2 Loss(MSE);而當差別大的時候,是L1 Loss(MAE)的平移。因此可以看出,SmoothL1Loss是一種比較優(yōu)秀的回歸損失函數(shù),尤其適用于存在異常點和離散值的回歸問題。
圖3 L1Loss、L2Loss與SmoothL1Loss的函數(shù)圖像對比
總的來說,SmoothL1Loss在各種深度學習任務中展現(xiàn)出了良好的性能和適應性。其平滑性質使得它對于異常值更加魯棒。
本文在SmoothL1Loss 中融入了樣本隸屬度[12]命名為DOM-SmoothL1Loss,交叉熵函數(shù)[13]將一組原始分數(shù)(或稱為logits)轉換為概率分布,使得所有類別的概率之和等于1。交叉熵(Cross Entropy)常用于評估分類問題中模型預測結果與真實標簽之間的差異,因此也可以用來計算樣本隸屬于不同類別的概率。
樣本隸屬度的計算公式如下:
假設有N個樣本,每個樣本屬于K個類別中的某一個,其中第i個樣本屬于第j個類別的概率為pij,對應的真實標簽為yi,yij表示第i個樣本是否屬于第j個類別,當該樣本屬于第j個類別時,yij=1,否則yij=0。log 表示自然對數(shù)函數(shù)。
概率分布pij可以通過模型的輸出得到。方法是使用softmax 函數(shù)將模型的原始輸出轉換為概率分布。使用softmax函數(shù)計算概率pij的公式如下:
公式5 中zi、zj表示模型對第i個樣本屬于第j個類別的原始輸出。
交叉熵損失函數(shù)[14]的意義在于,如果模型的預測結果與真實標簽相符,那么損失函數(shù)的值將趨近于0。交叉熵損失函數(shù)使得模型的預測結果更加接近真實標簽,進而提高模型的分類準確率。
對于一個給定的樣本,交叉熵損失函數(shù)的值可以看作樣本在不同類別上的隸屬度概率分布與真實標簽之間的距離。當樣本在真實標簽對應的類別上的隸屬度概率最大時,交叉熵損失函數(shù)的值最小,這也意味著模型對該樣本的分類結果最為自信。
融入了樣本隸屬度后的函數(shù)公式如下
公式6為融入了由交叉熵函數(shù)計算的隸屬度之后損失函數(shù),它有以下幾個優(yōu)點:
(1)能夠更直觀地理解模型對不同類別的判斷。
(2)可以直接在訓練過程中優(yōu)化模型的性能。
(3)它對于模型輸出的概率分布與真實標簽之間的差異進行度量,能夠更好地捕捉到問題中不同樣本之間的相對關系。
(4)使得模型輸出的概率更具有可靠性和可解釋性。
本文將輸入和輸出視為向量,并采用向量處理的方式來解決中文文本特定信息音變的過濾問題。
通過將輸入和輸出視為向量,可以利用向量化的表示來捕捉文本的結構和語義信息,并將其應用于信息音變過濾任務。使用向量化的表示還可以提供更多的靈活性和擴展性,將輸入和輸出都視為向量,并基于此進行信息音變過濾的研究,具有一定的創(chuàng)新性。
總的來說,創(chuàng)新主要在于將中文文本信息音變過濾問題轉化為向量處理,并利用向量化的表示方式來處理文本的連續(xù)性、上下文信息和語義關聯(lián)。
本文采用中文對話數(shù)據(jù)集zhddline,是由搜狗翻譯API翻譯自DailyDialog數(shù)據(jù)集。
圖4是數(shù)據(jù)集中的部分中文對話內容。選擇這個數(shù)據(jù)集是因為它提供足夠的樣本量可以幫助訓練出一個準確度高和魯棒性強的模型。
圖4 部分數(shù)據(jù)集內容
將原始數(shù)據(jù)集按照7:1.5:1.5的比例劃分訓練集、驗證集和測試集。
數(shù)據(jù)清洗:使用jieba[15]分詞工具得到文本的詞匯表和詞向量表示。
數(shù)據(jù)轉換:在進行數(shù)據(jù)預處理時,還需要對文本進行轉換,以便能夠被模型所處理。具體地,需要將文本轉換成詞向量的形式,以便能夠輸入到模型中進行訓練和預測。
同時,需要的是音變的中文文本,所以需要改變一些文本的拼音,判斷給定的字符是否是中文字符。然后從數(shù)據(jù)集中讀取詞語,將其中的每個漢字轉換成拼音,并將這些拼音作為字典的鍵,值為一個列表,包含拼音對應的所有詞語。
數(shù)據(jù)預處理可以對原始數(shù)據(jù)進行清洗和轉換,使得數(shù)據(jù)更加適合進行模型訓練和應用,提高模型的準確度和魯棒性。
數(shù)據(jù)集:使用了中文對話數(shù)據(jù)集,其中包含了大量的中文文本數(shù)據(jù),包括日常生活、商場購物、朋友聊天等內容。
模型參數(shù):使用了2個門控卷積層作為特征提取器,分別為self.conv_gate和self.conv_info,使用了2個卷積核,每個卷積核[16]的數(shù)量為output_dim,由輸入?yún)?shù)指定,這里為y_tensor.shape。兩個卷積核的大小均為3,步長因為沒有指定stride,所以為1,門卷積層使用Sigmoid 作為激活函數(shù),信息卷積層使用Tanh作為激活函數(shù)。
訓練參數(shù):Adam(Adaptive Moment Estimation)優(yōu)化器[17],學習率為0.001,批次大小為32,訓練輪次為10。
門控卷積神經網絡可以有效克服循環(huán)神經網絡的單向計算的缺點。使用了門控卷積神經網絡來進行損失函數(shù)優(yōu)化前后的性能對比。
基于門控卷積神經網絡的音變的中文文本特定信息過濾模型是一種深度學習模型,主要用于處理中文文本數(shù)據(jù)。
單層門控卷積神經網絡的計算過程如圖5所示。整個模型能夠有效地提取中文文本的特定信息,還具有較好的可解釋性和可視化性,更好地比較模型優(yōu)化前后的性能和特點。
圖5 模型的整體結構
將融入隸屬度前后的模型的loss 值分別測試,進行對比,對比結果如圖6。
圖6 未添加隸屬度的loss值
從圖6 可以看出,沒有隸屬度時,loss 變化率很小,并且在訓練集和測試集的第8輪就完成收斂,之后測試集上的波動說明模型開始過擬合。較快收斂說明模型并沒有很好地學習特征,陷入局部解。
圖7可以看出,添加隸屬度后,收斂時間延遲,且測試集上的波動減少,表明模型的泛化性能得到改善,并且對過擬合有更好的控制,提高了模型的穩(wěn)定性和魯棒性,并減少了過擬合[18]現(xiàn)象。
圖7 添加隸屬度的loss值
總之,添加隸屬度對模型的訓練和泛化能力產生了積極影響,提高了模型的穩(wěn)定性和魯棒性,并減少了過擬合現(xiàn)象。這表明隸屬度的引入對模型的學習和性能具有正面效果。
將學習率分別設為0.01 和0.001 的模型進行對比,實驗結果如圖8所示。
圖8 優(yōu)化學習率前后的MAE誤差結果
圖8 中顯示的是學習率[19]優(yōu)化前后MAE 指標的實驗結果,從中可以看出平方絕對誤差(MAE)較改進前的結果有著明顯提升。
圖9中顯示的是學習率優(yōu)化前后MSE指標的實驗結果,從中看出均方誤(MSE)相交改進之前的結果有了顯著提升。
圖9 優(yōu)化學習率前后的MSE誤差結果
從圖8與圖9的對比可以看出學習率參數(shù)優(yōu)化后的模型能夠更好地適應中文文本數(shù)據(jù),實現(xiàn)對文本的自動分類和過濾,具有較好的性能和應用效果。
將融入了隸屬度[20]的GCNN_DOM模型與未添加平滑參數(shù)的模型,以及樸素貝葉斯三個算法進行比較,得到的平方絕對誤差和均方誤差結果如表1所示。
表1 三個算法的平均絕對誤差比較結果
從表1 可以看出,融入了隸屬度L 的GCNN_DOM 的MAE 指標相較于未添加時的模型提升了3.8%左右,比起樸素貝葉斯更是有了顯著的提升。
表1、表2 中結果對比突顯出改進后的GCNN_DOM 模型的優(yōu)越,反映出DOM_SmoothL1Loss損失函數(shù)的改進結果值得肯定。
表2 三個算法的均方誤差比較結果
如圖10過濾前的文本中存在著音變問題,例如“出去想收”“鍋的真快”,這些都存在音變問題。
圖10 過濾前的文本
從圖10 和圖11 的對比可以看出,本模型對于產生音變的特定信息的過濾非常有效,可以有效避免輸入錯誤造成的有害結果,具有一定的實際應用價值。
圖11 過濾后的文本
本文對提取特定信息音變的過濾問題,介紹了一種具有并行計算、多層特征提取和門控機制等優(yōu)點的門控卷積神經網絡算法,并對其中的SmoothL1Loss(平滑L1 損失)作為損失函數(shù)進行改進,提出了DOM_SmoothL1Loss,它是一種融入了樣本隸屬度的損失函數(shù)。實驗證明該模型在特定信息音變過濾任務中取得了顯著的性能提升。未來的工作可以進一步探索和優(yōu)化該模型,以適應更廣泛的音變過濾需求。