崔振新,張卓言
(中國民航大學飛行技術學院,天津 300300)
隨著中國民航業(yè)的高速發(fā)展,公眾對航空安全水平的期望越來越高,而安全管理水平的提升依賴于行業(yè)安全信息。航空安全信息是民航實施安全風險控制和事故預防的基礎,對提高航空安全水平具有重要作用,在整個安全管理系統(tǒng)中具有超前和預防意義[1]。
隨著民航安全工作中廣泛應用的不安全事件報告信息(簡稱安全信息)管理的規(guī)范化,安全信息量越來越大,在數(shù)據(jù)驅(qū)動管理階段,深入分析安全信息的需求增加,需要針對現(xiàn)有或新的分類維度重新分類信息。因此,利用現(xiàn)有系統(tǒng)中較長的事件信息描述部分基于機器學習構建分類器,實現(xiàn)信息自動分類,提高現(xiàn)有信息系統(tǒng)的利用價值。
實現(xiàn)信息自動分類首先要對信息數(shù)據(jù)進行人工標注,標注的信息量越少,人工成本越低。此外,還有一些事件類型發(fā)生概率不高,如空中相撞,在處理時必然會存在數(shù)據(jù)量不足的問題,因此,本文結合數(shù)據(jù)增強技術解決上述問題。
為提高數(shù)據(jù)利用率,數(shù)據(jù)增強在可用數(shù)據(jù)量不足時成為必要手段。數(shù)據(jù)增強多用于計算機視覺領域,通過改變圖片像素顏色、尺寸、方向等方法,增加數(shù)據(jù)噪點,同時可以增加數(shù)據(jù)集規(guī)模,提高模型的泛化能力。在自然語言處理方面,可以對數(shù)據(jù)進行加噪處理,也可以對文本數(shù)據(jù)進行增強。Zhang 等[2]利用英文同義詞詞典進行同義詞替換,直接修改文本中的詞,但會存在沒有同義詞的詞語,對原句的修改幅度有限;Kobayashi[3]使用雙向循環(huán)神經(jīng)網(wǎng)絡進行數(shù)據(jù)增強,在去掉一個詞后,通過上下文預測該詞,將預測出的詞替換原詞,雖然相比使用同義詞替換有更多增強的可能性,但在分類任務中,難以保證增強后的數(shù)據(jù)標簽保持不變;回譯是將文本翻譯成其他語言再翻譯回原文,生成新的文本[4],但對專業(yè)詞匯的翻譯不一定準確,可能會影響原意。針對以上方法的不足,擬采用簡單數(shù)據(jù)增強(EDA,easy data augment)方法綜合增強文本數(shù)據(jù)。
應用于機器學習的文本需要使用語言表示模型,將非結構化的文本表示為結構化的數(shù)學形式,同時保持數(shù)據(jù)標簽不變。詞袋模型作為經(jīng)典語言模型,將文本視為相互獨立的詞語組合,以詞為基本處理單元得到向量化表示。隨著互聯(lián)網(wǎng)的發(fā)展,大量無標注數(shù)據(jù)產(chǎn)生,由此產(chǎn)生基于連續(xù)詞袋(CBOW,continuous bag of words)模型和連續(xù)跳躍元語法模型(Skip-Gram,continuous skip-gram model)的淺層神經(jīng)網(wǎng)絡模型Word2vec[5],該模型以詞袋模型產(chǎn)生的稀疏向量作為模型輸入,將其映射為稠密向量,同時保留詞序信息。
相比Word2vec,Peters 等[6]提出的基于語言模型的詞向量(ELMo,embedding from languagemodels)模型,利用雙層雙向的長短期記憶網(wǎng)絡(LSTM,long short term memory networks)提取特征,利用上下文進行表征。Radford 等[7]提出的生成式預訓練模型(GPT,generative pretraining model)使用Transformer 作為特征提取網(wǎng)絡,性能優(yōu)于ELMo;Devlin 等[8]提出的雙向編碼器表示技術(BERT,bidirectional encoder representations from transformers)模型結合了上述兩個模型的優(yōu)勢,基于Transformer 的雙向表示,在自然語言處理任務上的性能有大幅提升,在某些任務上甚至超過了人類的處理水平,開啟了自然語言處理領域的新時代。
綜上,為實現(xiàn)數(shù)據(jù)量不足時民航安全信息自動分類,以中國民用航空安全信息分類系統(tǒng)(中國民航官方收集不安全事件強制報告信息的工作平臺)中的不安全事件信息為樣本,因此,文中使用BERT 預訓練模型進行文本表征,從事件類型分類維度分析文本增強在民航領域小數(shù)據(jù)集上的適用性,以及在民航不安全事件信息自動分類方面的有效性。
1.1.1 語言表示模型
BERT 模型對自然語言進行處理的環(huán)節(jié)包括:建立基于大型語料庫的訓練模型,并對此模型微調(diào)以適用下游任務。
BERT 模型所使用的特征提取器為Transformer,Transformer 是一個帶有自注意力機制的Seq2seq 模型,由若干編碼器和解碼器堆疊形成,編碼器用于將語料轉(zhuǎn)化為特征向量,編碼器的輸出以及已經(jīng)預測的結果為解碼器的輸入,用于輸出最后結果的條件概率。
BERT 網(wǎng)絡結構示意如圖1 所示,其中:Ei表示輸入的一個詞向量表示;Trm 表示Transformer 編碼器,Ti表示輸入的一個上下文表示,即對應的特征向量;M表示輸入個數(shù)。
圖1 BERT 結構示意圖Fig.1 Structure of BERT model
BERT 模型的輸入以字符為單位,經(jīng)過詞、位置和句子(segment)3 種信息的3 層向量表示(embedding),得到Trm 的輸入向量。
BERT 在預訓練時主要完成2 個任務:①遮蔽語言模型,隨機對15%的詞進行處理,在這些詞中,有80%的詞被遮擋,使用[MASK]代替,10%的詞替換為另一個隨機詞,剩余10%的詞保持不變,然后根據(jù)該詞的左右語境預測該詞;②預測下一句,理解句子之間的關系。結合以上2 個任務的訓練得到的深層雙向模型,一定程度可實現(xiàn)不同文本任務的通用性。
傳統(tǒng)的文本處理方法依賴于人工選取數(shù)據(jù)特征,但民航事件信息類型多樣,不同類型所包含的特征信息也不盡相同,人工提取事件信息的公共特征費時費力,準確率得不到保證,也不利于持續(xù)處理新事件信息。與人工規(guī)則構造特征的方法相比,利用大數(shù)據(jù)來學習特征,可使文本處理方法具備自動抽取和組織信息的能力,更能夠刻畫數(shù)據(jù)的豐富內(nèi)在信息。
BERT 模型的訓練是基于大型語料庫進行的,使用BERT 模型可以省去中間處理過程,實現(xiàn)從輸入文本到輸出向量表示的端到端方法。BERT 模型因其龐大的訓練數(shù)據(jù)集和較多的網(wǎng)絡層數(shù),為現(xiàn)階段最好的通用語言表示模型。
1.1.2 分類算法
支持向量機[9](SVM,support vector machine)通常用于二元分類場景,是將數(shù)據(jù)的特征向量映射為空間中的點,通過監(jiān)督學習(利用帶標簽的數(shù)據(jù)進行學習)確定一條最能將兩類數(shù)據(jù)區(qū)分開的線,該線受樣本局部擾動影響最小,對未知數(shù)據(jù)的泛化能力最強。
SVM 算法分類原理示意如圖2 所示,其中,分割線表示為
圖2 SVM 算法原理示意圖Fig.2 The principle of SVM algorit hm
兩條虛線為兩類樣本的邊界線,在該線上的樣本稱為支持向量,當分割線與兩條邊界線的距離相等且最大時,為最優(yōu)分割線。通過計算間隔,尋找分割效果最佳時分割線的權重w 和b。
兩條邊界線的間隔為兩類支持向量的差在w 上的投影,即
式中:x+為正支持向量;x-為負支持向量。由于支持向量在邊界線上,可以表示為
得到
代入式(2)中,可得
根據(jù)間隔最大化,得到
式中m 為待分類的樣本數(shù)。為計算方便,轉(zhuǎn)化為
在二維空間中,數(shù)據(jù)為線性可分(可以找到一個線性函數(shù)將兩類樣本分開)時,由1 條一維直線分割,該直線距離兩類數(shù)據(jù)的決策邊界距離最遠。在二維以上的多維空間中,SVM 將數(shù)據(jù)映射到更高維的空間,將線性不可分轉(zhuǎn)化為線性可分的情況,進而確定分割位置。
SVM 是對數(shù)據(jù)邊界進行決策,一定程度上可以防止模型過擬合。
1.1.3 數(shù)據(jù)增強算法
通過對幾種數(shù)據(jù)增強算法的比較,采用Wei 等[10]提出的EDA 算法,除同義詞替換方法外,首次提出對一句話中的詞進行插入、交換、刪除的方法,對文本數(shù)據(jù)具有一定的通用性。EDA 方法對一句話中詞(不包含停用詞)的處理包含以下4 種方法:
(1)同義詞替換(SR,synonym replacement),隨機選擇n 個詞,再隨機選擇每個詞的一個同義詞替換該詞;
(2)隨機插入(RI,random insertion),隨機選擇一個詞,再隨機選擇該詞的一個同義詞,插入句中隨機位置,重復n 次;
(3)隨機交換(RS,random swap),隨機選擇兩個詞,交換其在句中的位置,重復n 次;
(4)隨機刪除(RD,random deletion),對句中每個詞以概率p 刪除。
方法中涉及的變量及相互關系如下
式中:N 為一個樣本的每種增強技術執(zhí)行次數(shù);Naug為增強的樣本數(shù),即增強后從每個原樣本擴充的新樣本數(shù)量;n 為每次增強所變動的詞的個數(shù);??為向下取整;L 為一個樣本中詞的總數(shù);α 為變動詞占比(%),即每種增強技術在一個樣本中所改動的詞數(shù)占該樣本總詞數(shù)L 的比例。
上述4 種方法等同于對樣本數(shù)據(jù)進行了加噪處理,減少數(shù)據(jù)過擬合情況,雖然從語義上會存在不通順情況,但保持了較高的相似度,盡量保留了樣本原標簽。
文獻[10]在同義詞替換方法中使用Python 的nltk庫中的語義詞典Wordnet 獲取英文同義詞。本文基于增強方法[11]增強中文數(shù)據(jù),采用中文近義詞工具包Synonyms 獲取同義詞。
在使用EDA 算法過程中,選詞的隨機性會導致選中的詞可能沒有同義詞以及原詞包含在自己的同義詞集合中等情況,在增強后的集合中可能存在重復數(shù)據(jù)?;谠撉闆r增加了對一句話的循環(huán)增強,直至所有在設定參數(shù)下的增強數(shù)據(jù)及原數(shù)據(jù)不完全相同,對數(shù)據(jù)進行最大化加噪。
1.2.1 實驗框架
為便于觀察,本實驗根據(jù)一個事件類型下的事件信息數(shù)量的數(shù)量級,從原數(shù)據(jù)集中劃分出3 個數(shù)據(jù)子集,每種事件類型的事件數(shù)分別為十數(shù)量級、百數(shù)量級和千數(shù)量級,在各子集下劃分出訓練集和測試集,前者用于數(shù)據(jù)增強以及模型的訓練,后者用于模型測試,最后評價分析。實驗流程如圖3 所示。
圖3 實驗流程圖Fig.3 Experimental flow chart
具體步驟如下:
步驟1將初始數(shù)據(jù)集轉(zhuǎn)存為.csv 格式文件,整理后的第1 列數(shù)據(jù)內(nèi)容為“事件類型”,第2 列數(shù)據(jù)內(nèi)容為事件信息的“簡要經(jīng)過”,作為原數(shù)據(jù)集;
步驟2初始數(shù)據(jù)集中,各事件類型的事件數(shù)量最少為4,最大為12 209,為了降低不同類型下事件數(shù)量差別對模型性能的影響,依據(jù)一個事件類型所包含的事件信息數(shù)量的數(shù)量級,將原數(shù)據(jù)集劃分為3 個數(shù)據(jù)子集,各子集對應的事件信息數(shù)量級分別為十、百、千數(shù)量級;
步驟3將3 個數(shù)據(jù)子集各采用分層采樣的方式按7 ∶3 的一般比例劃分為訓練集和測試集(即每個事件類型的不同數(shù)量級的事件信息都按7∶3 的比例劃分,再各自組為整體的訓練集和測試集),分別用BERT 模型表示為數(shù)組形式,訓練模型并判斷模型性能,該部分作為基準實驗,與后續(xù)實驗作對照;
步驟4針對3 個數(shù)據(jù)子集,設定不同的測試集比例,對訓練集進行EDA 增強處理,增強后的數(shù)據(jù)在表示為高維向量形式后作為新的訓練集,未增強的測試集數(shù)據(jù)在表示為高維向量形式后,作為新的測試集,觀察不同測試集占比對模型性能的影響;
步驟5按照步驟4 的方法,判斷文本增強涉及的參數(shù)α 和Naug對不同數(shù)量級子集模型性能的影響;
步驟6從十數(shù)量級經(jīng)增強后的數(shù)據(jù)中選取達到百數(shù)量級的數(shù)據(jù)子集,從千數(shù)量級中選取數(shù)據(jù)組成百數(shù)量級子集,從百數(shù)量級子集經(jīng)增強后的數(shù)據(jù)中選取達到千數(shù)量級的數(shù)據(jù)子集,計算各自增強后的性能,并分別與原十數(shù)量級子集、百數(shù)量級子集和千數(shù)量級子集增強后性能進行對比,判斷不同事件類型按相同數(shù)量級劃分所得結果的通用性。
1.2.2 評價指標
本實驗采用的評價指標如下。
1)加權準確率
加權準確率計算如下
式中:ni為第i 個事件類型包含的事件信息數(shù)量;Ne為要評價的模型包含的所有事件信息數(shù)量;k 為事件類型數(shù);Ai為第i 個事件類型對應的準確率,準確率計算如下
式中:TP 為將正類預測為正類的事件數(shù)量;FN 為將正類預測為負類的事件數(shù)量;FP 為將負類預測為正類的事件數(shù)量;TN 為將負類預測為負類的事件數(shù)量(所關注的類為正類,其他類為負類)。
2)加權F1
加權F1計算如下
式中:F1i為第i 個事件類型的F1,F(xiàn)1為精確率和召回率的調(diào)和平均數(shù),F(xiàn)1越高,模型越穩(wěn)健,F(xiàn)1計算如下
式中:P 為精確率又稱查準率,表示模型不將負樣本標記為正樣本的能力,即
R 為召回率又稱查全率,表示模型找到所有正樣本的能力,即
實驗環(huán)境整體配置較簡單,具體環(huán)境如表1 所示。
表1 實驗環(huán)境Tab.1 Experimental environment
數(shù)據(jù)來源為中國民用航空安全信息系統(tǒng)事件庫中的事件信息,使用“事件類型”及“簡要經(jīng)過”2 個數(shù)據(jù)內(nèi)容,選擇系統(tǒng)中2013 年6 月7 日(該系統(tǒng)中事件信息數(shù)據(jù)最早記錄的日期)至2020 年5 月14日之間的所有事件信息數(shù)據(jù),其中:①去除“其他”事件類型;②系統(tǒng)中存在不同時間上報同一事件的情況,如兩條上報信息“發(fā)生時間”不同,但其他信息相同,只關注“簡要經(jīng)過”和“事件類型”2 個內(nèi)容,因此對“簡要經(jīng)過”和“事件類型”存在重復的事件信息進行去重,保留其一,保留所述事件相同,但“簡要經(jīng)過”表述不完全相同的事件信息;③去除導出文件中“事件類型”和“簡要經(jīng)過”字符串中的空格。
經(jīng)過上述處理,共得到包含74 個事件類型的43 297 個初始數(shù)據(jù),每個數(shù)據(jù)包含“標簽”和“內(nèi)容”2部分。
實驗選擇BERT 模型中的“BERT-Base,Chinese”模型[12],神經(jīng)網(wǎng)絡包含12 個隱藏層,每個隱藏層的大小為768 維,共有1.1×108個參數(shù)。
實驗主要觀察不同數(shù)量級子集的測試集和增強后的訓練集所對應的Aw和F1w,以及各子集下的實驗運行總耗時(包括數(shù)據(jù)增強、模型訓練及模型評價的運行耗時)。實驗結果如表2 所示。
表2 基準實驗的Aw、F1w 和耗時Tab.2 Aw,F(xiàn)1w and elapsed time of benchmark experiment
(1)由表2 可得,在未增強的基準試驗中,千數(shù)量級子集可以直接獲得85%以上的性能,相比千數(shù)量級子集,百數(shù)量級子集性能較低,有提升空間,而十數(shù)量級子集所得性能較差。
(2)相同測試集比例下,不同子集性能增量程度不同,性能增量(ΔF1w)如圖4 所示。
圖4 文本增強對模型性能的影響示意圖Fig.4 Abridged general view of the impact of text enhancement on model performance
圖4 中黑色部分為在測試集比例為0.30,Naug=4時,3 個子集對應的基準實驗的測試集F1w值,灰色部分為經(jīng)過增強后的性能增量。
(3)各事件類型數(shù)量級在不同測試集比例(0.05,0.10,0.20,0.30,0.50,0.70,0.90)下得到的模型性能增量如圖5 所示。
圖5 3 個數(shù)量級子集在不同測試集比例下性能增量Fig.5 Performance increments of three subsets under different test set ratios
由圖5 可得:百數(shù)量級和千數(shù)量級子集的測試集比例分別在0.05 和0.20 時性能較好;十數(shù)量級子集因原數(shù)據(jù)集各事件類型的事件數(shù)量較少,增強后模型性能增量較大,隨著測試集占比增加,性能下降明顯;十數(shù)量級子集測試集比例在0.05 和0.30 的性能增量都相對較高。在測試集比例為0.05 時,每個類型的測試數(shù)據(jù)樣本數(shù)都在個位數(shù),且Aw和F1w為1 的事件類型較多,同時也存在性能指標為0 的情況,即該參數(shù)下,雖然性能增量較高,但模型性能表現(xiàn)較為極端,不具有代表性;測試集比例為0.30 時,性能指標不存在為0 的情況,運行時間也比測試集比例為0.05 時短,ΔF1w與測試集比例為0.05 時基本相同。因此在數(shù)量級為十時,測試集比例為0.30 較好。
(4)各事件類型數(shù)量級在不同的變動詞數(shù)占比α=0.05,0.10,0.15,0.20,0.25 下得到的模型的性能增量如圖6 所示。
由圖6 可得:隨著α 的增加,訓練集性能下降,可能因為一句話中變動詞數(shù)增加,影響了一個事件信息原本的特征,而訓練集中增強后的語句占比較大,因此,在數(shù)據(jù)量較大的情況下,整體識別能力有所下降,但測試集中的事件信息特征保留相對完整,性能相對穩(wěn)定。
圖6 3 種事件數(shù)量級在不同α 下的性能增量Fig.6 Performance increments of three subsets under different α
(5)千數(shù)量級子集在測試集比例為0.7 以下時,性能變化小,選擇比例為0.6 進行下一步實驗。各數(shù)量級在不同增強樣本數(shù)Naug=4,8,12,16,20,24 下的模型性能增量如圖7 所示。
圖7 3 種事件數(shù)量級在不同Naug 下的性能增量Fig.7 Performance increment of three subsets under different Naug
由圖7 可得,隨著Naug的增加,十數(shù)量級子集和千數(shù)量級子集性能逐漸增加,但速度變緩,在Naug=8 時,百數(shù)量級子集性能最大,千數(shù)量級子集性能增幅最大。
(6)從十數(shù)量級子集中選取增強后達到百數(shù)量級子集的數(shù)據(jù),與原來的百數(shù)量級子集進行對比;從千數(shù)量級子集中選取部分數(shù)據(jù)作為新的百數(shù)量級子集,并與原來的百數(shù)量級子集采用相同的增強參數(shù),觀察性能結果;再從百數(shù)量級子集中選取增強后達到千數(shù)量級子集的數(shù)據(jù),與原來的千數(shù)量級子集做對比,結果如表3 所示。
由表3 可得:模型性能與事件類型的事件數(shù)量級相關;十數(shù)量級子集模型因原數(shù)據(jù)集小,增強后性能增量較大但性能相對較低;百數(shù)量級子集的模型性能相對較好,不論是原數(shù)據(jù)集、從千數(shù)量級子集中選擇部分數(shù)據(jù),還是將其增強至千數(shù)量級,性能都相對較好。具有不同特征的事件類型對模型結果影響不大,說明BERT 語言表示模型能較好地表示出民航不安全事件信息類型的特征。
各子集模型局部最優(yōu)參數(shù)及性能如表4 所示。
針對民航不安全事件信息的特點,通過對比分析不同量級的事件類型經(jīng)過文本增強后再實現(xiàn)自動分類的模型性能,結論如下:
(1)在數(shù)據(jù)量相對較少的情況下,采用文本增強技術,分類器性能提升明顯,事件類型的事件信息數(shù)量級為十數(shù)量級時,F(xiàn)1w提升31.21%,百數(shù)量級時,F(xiàn)1w提升9.66%,千數(shù)量級時,F(xiàn)1w提升3.35%;
(2)事件數(shù)量為百數(shù)量級的數(shù)據(jù)集時,模型性能相對較好,因此在實際應用中,人工標注至百數(shù)量級再完成下游任務即可;
(3)在經(jīng)典機器學習方法SVM 的基礎上進行文本增強,獲得的模型Aw和F1w可以達到85%以上,屬于可接受范圍,可以應用。
下一步研究將考慮不安全事件信息的多標簽屬性,探索提高性能的其他技術,提高模型的泛化能力。