深度学习文本分类在支付宝投诉文本模型上的应用
摘要:?小螞蟻說: 隨著深度學習的快速發展,以及在圖像、語音領域取得的不錯成果,基于深度學習的自然語言處理技術也日益受到人們的關注。計算機是怎么理解人類的語言的呢? 傳統機器學習的應用,常常是利用上述人工總結的文本特征,但往往會遇到一些問題。
小螞蟻說:
隨著深度學習的快速發展,以及在圖像、語音領域取得的不錯成果,基于深度學習的自然語言處理技術也日益受到人們的關注。計算機是怎么理解人類的語言的呢?
傳統機器學習的應用,常常是利用上述人工總結的文本特征,但往往會遇到一些問題。比如“貓”和“咪”這兩詞語的語義很接近(即近義詞),但計算機并不能真正的在詞語語義層面理解,只是把他們當作了兩個不同的詞語。再比如“小狗”和“小貓”是很相關的兩個詞語,也不能被很好的理解和刻畫。
本文主要介紹了深度學習中的文本分類任務,以及一些應用于文本分類的深度學習模型。文本分類是自然語言處理領域最經典的場景之一,試圖推斷出給定的文本(句子、文檔等)的標簽或標簽集合。通過這些技術,計算機能夠更好地理解人類的語言。
針對支付寶投訴欺詐場景,螞蟻金服人工智能團隊設計了多個文本深度學習模型。包括雙向GRU,Capsule Network和Attention-based Model等等,均在支付寶投訴欺詐場景上取得了不錯的效果。大家一起來看看吧!
?
背景介紹
對于風控業務,用戶的投訴是理解黑產運作方式和監控風控變化的重要形式。風險決策中心每天會得到大量用戶投訴文本信息,每個投訴文本通常對應一定的風險形式。目前分類模型只解決了部分對于文本信息利用率的問題。目前支付寶投訴欺詐場景主要應用到的深度學習模型有TextCNN和雙向GRU。
相關工作分析
本文的主要目的是想介紹一下深度學習中的文本分類任務,以及一些應用于文本分類的深度學習模型。文本分類是自然語言處理領域最經典的場景之一,試圖推斷出給定的文本(句子、文檔等)的標簽或標簽集合。
文本分類中包含了大量的技術實現,從是否使用了深度學習技術作為標準來衡量,可以將這些技術實現分為兩大類:基于傳統機器學習的文本分類和基于深度學習的文本分類。
文本分類的應用非常廣泛,其中比較有常見的應用有垃圾郵件分類,情感分析,新聞主題分類,自動問答系統中的問句分類以及一些現有的數據競賽等?,F有的數據競賽包括知乎的看山杯機器學習挑戰賽,BDCI2017的比賽“讓AI當法官”和Kaggle的比賽“Toxic Comment Classification Challenge”等。
文本分類中主要有三種分類類型,包括二分類問題,多分類問題以及多標簽問題。比如垃圾郵件分類中判斷郵件是否為垃圾郵件,屬于一個二分類問題。在情感分析中,判斷文本情感是積極還是消極,或者判斷文本情感屬于非常消極,消極,中立,積極,非常積極中的一類,既可以是二分類問題也可以是多分類問題。在BDCI 2017的比賽“讓AI當法官”中,基于案件事實描述文本的罰金等級分類和法條分類,分別屬于多分類問題和多標簽分類問題。
文本分類的評價指標會根據不同的分類類型有各自不同的評價指標。二分類問題中常常用到Accuracy,Precision,Recall和F1-score等指標;多分類問題往往會使用到Micro-Averaged-F1,Macro-Averaged-F1等指標;多標簽分類問題中則還會考慮到Jaccard相似系數等。
在基于傳統機器學習的文本分類中,一般采用TF-IDF和Word Counts提取不同word n-gram的文本特征,然后將提取到的文本特征輸入到Logistics回歸、Naive Bayes等分類器中進行訓練。但是當統計樣本數量比較大的時候,就會出現數據稀疏和維度爆炸等問題。這時候就需要做一些特征降維處理,比如停用詞過濾,低頻n-gram過濾,LDA降維等。
隨著深度學習的快速發展,以及在圖像、語音領域取得的不錯成果,基于深度學習的自然語言處理技術也日益受到人們的關注。傳統機器學習的應用,是利用上述人工總結的文本特征,但往往會遇到一些問題。比如“貓”和“咪”這兩詞語的語義很接近(即近義詞),但計算機并不能真正的在詞語語義層面理解,只是把他們當作了兩個不同的詞語。再比如“小狗”和“小貓”是很相關的兩個詞語,也不能被很好的理解和刻畫。
為了解決上述問題,讓計算機一定程度上能夠理解詞語的語義,詞向量技術應用而生。Mikolov et al. 2013 [1] 提出了word2vec模型,可以通過詞語上下文的結構信息,將單詞的語義映射到一個固定的向量空間中。如果需要判定兩個詞語的語義相似度(或相關度),只需要計算兩個詞向量的夾角余弦或歐式距離等即可。比如,“小狗”與“小貓”的相似度值就會很高。憑借詞向量算法,計算機有了一定的詞語語義上的理解能力。
在此基礎上,我們希望可以更好的刻畫整個句子的語義信息。Yoon Kim, 2014 [2] 提出將CNN模型首次應用到文本分類問題上。這里,詞向量作為網絡的第一層的輸入,而CNN的核心點在于可以捕捉局部相關性,在文本分類任務中可以利用CNN來提取句子中類似word n-gram的關鍵信息。
TextCNN模型架構如下圖所示,句子中每個word使用K維向量來表示,于是句子可表示為一個N*K的矩陣,作為CNN的輸入。使用不同的Filter Window進行卷積操作得到Feature Map,之后對Feature Map使用Max-over-time Pooling的池化操作,即將Feature Map向量中最大的值提取出來,組成一個一維向量。經過全連接層輸出,使用Softmax層進行分類,并且加上Dropout層防止過擬合。
?
自然語言處理中更常用的是遞歸神經網絡(RNN, Recurrent NeuralNetwork),能夠更好的表達上下文信息。Liu et al., 2016 [3] 介紹了RNN用于分類問題的設計。用于文本分類的RNN網絡結構如下圖所示,網絡中將最后一個單元的結果作為文本特征,連接全連接Softmax層進行分類。
?
除此之外,還有使用雙向RNN網絡 [4](Bidirectional RNNs,BiRNNs)的兩個方向的輸出向量的連接或均值作為文本特征。
一般的循環神經網絡往往存在許多弊端。在訓練網絡過程中,經過許多階段傳播后會出現梯度消散(Gradient vanishing)或梯度爆炸(Gradient exploding)等問題。循環神經網絡在反向傳播中得到誤差的時候,可以想象一下多次乘以自身的參數權重,該乘積消散或爆炸取決于的幅值。針對于梯度爆炸的情況,常常會使用截斷梯度方法。但是梯度截斷并不能有效地處理梯度消散問題,有一個容易想到的方法是使用正則化或約束參數,當然還有更好的解決方案,那就是使用LSTM(Long Short-Term Memory)或GRU(Gated recurrent unit)等門控RNN(Gated RNN)。
梯度消散是原生RNN中一個很大的問題,也就是后面時間的節點對于前面時間的節點感知力下降,也就是忘事兒。Hochreiter et al., 1997[5] 提出了LSTM,它的設計初衷就是來解決梯度消散問題。在標準的RNN中,這個重復的模塊只有一個非常簡單的結構,例如一個tanh層。LSTM同樣是這樣的結構,但是重復的模塊擁有一個不同的結構。不同于單一神經網絡層,這里是有四個,以一種非常特殊的方式進行交互。如下圖所示,一個LSTM塊有四個輸入。
(1)輸入(Input):模塊的輸入;
(2)輸入門(Input Gate):控制輸入;
(3)遺忘門(Forget Gate):控制是否更新記憶單元(Memory Cell);
(4)輸出門(Output Gate):控制輸出。
?
在多個LSTM連接的循環網絡中,單個的LSTM的各個門的控制方式如下:
?
?
Cho et al., 2014 [6] 提出了GRU網絡結構,GRU作為LSTM的一種變體,將遺忘門和輸入門合成了一個單一的更新門。同樣還混合了細胞狀態和隱藏狀態,加諸其他一些改動。最終的模型比標準的LSTM模型要簡單,是目前非常流行的變體。
具體在文本分類任務中,BiRNNs(實際使用的是雙向GRUs)從某種意義上可以理解為可以捕獲變長且雙向的“word n-gram”信息。
問題與挑戰
word2vec算法雖然可以學到有用的詞向量,但是該算法只刻畫了詞語的上下文結構信息,并不能很好的利用中文詞語內部的結構信息,而中文又是一種強表義的語言文字。尤其是在大安全領域的數據里,有很多詞語的變種寫法。比如“小姐”和“小女且”這兩個詞語,經常會有不法分子為了繞開攔截系統,故意采用“形變”寫成后者;再比如“微信”和“威芯”這兩個詞語,則是“音變”的刻意回避。因此,我們希望嘗試一種新的算法,可以很好的刻畫出中文詞語的“形”和“音”的特性,生成更高質量的詞向量,進而為后面的深度神經網絡提供更大的信息量。
TextCNN能夠在很多任務里面能有不錯的表現,CNN卷積特征檢測器提取來自局部的序列窗口的模式,并使用max-pooling來選擇最明顯的特征。然后,CNN分層地提取不同層次的特征模式。然而,CNN在對空間信息進行建模時,需要對特征檢測器進行復制,降低了模型的效率。但在實際中文的語料庫中,文本結構豐富,單詞的位置信息、語義信息、語法結構等,對于CNN這種空間不敏感的方法不可避免會出現問題。
BiGRUs在文本分類上有明顯的效果,但是在可解釋性以及關注文本整體重要性上有明顯的不足,特別是在分析badcase的時候感受尤其深刻。
如何解決TextCNN在文本中深入理解文字的位置信息、語義信息、語法結構等信息,以及使BiGRUs文本模型能夠關注文本整體重要性將是下面要探索的內容。
CW2VEC
Cao et al. 2018 [7] 在AAAI 2018的論文里提出了cw2vec算法。(相關閱讀請參考《AAAI 2018 論文 | 螞蟻金服公開最新基于筆畫的中文詞向量算法》)該算法通過構造“n元筆畫”提取出漢字的表義單元,比如“森林”與“木材”這兩個詞語具有很多共同的“4元筆畫”-“木”,因此這兩個詞語具有較高的相關度。相對于漢字、偏旁粒度的詞語拆解,n元筆畫是一種非人工總結、由算法自動統計出來的表義結構。在中文的公開測試集中,cw2vec相對于word2vec, GloVe, CWE等算法均取得了一致性的提升。
?
cw2vec算法同時利用了中文詞語內部和上下文的結構信息,來設計損失函數,因此產生更高質量的中文詞向量。
?
除了“形”之外,“音”的刻畫可以通過“n元拼音”來實現。這里拼音字符從“a”到“z”,按照同樣的方法獲得詞語的拼音,然后通過滑窗進一步得到“n元拼音”。
為了同時獲得“形”和“音”的特征信息,我們采用了一種簡單有效的實驗方案,即分別基于“n元筆畫”和“n元拼音”模式學習詞向量,然后再對詞向量進行拼接。相對于詞向量平均(可以看作是線性加權),這種拼接方法,對后續的深度神經網絡保有了更高的非線性信息融合能力。
目前cw2vec算法在內容安全寶、保險等場景中取得了不錯的效果,這里我們也將探索其在支付寶投訴欺詐場景的作用。
Capsule Network
Hinton et al., 2017 [8] 在去年發表的論文中,Hinton介紹Capsule是一組神經元,其輸入輸出向量表示特定實體類型的實例化參數(即特定物體、概念實體等出現的概率與某些屬性)。我們使用輸入輸出向量的長度表征實體存在的概率,向量的方向表示實例化參數(即實體的某些圖形屬性)。同一層級的Capsule通過變換矩陣對更高級別的Capsule的實例化參數進行預測。當多個預測一致時(本論文使用動態路由使預測一致),更高級別的Capsule將變得活躍。
到目前為止,將膠囊網絡應用到自然語言處理上的論文研究較少,其中Zhao et al., 2018 [9] 提出了將膠囊網絡應用到文本分類任務上。對于傳統的分類問題上,膠囊網絡取得了較好的性能,并且其性能超過了TextCNN,其模型結構圖如下所示。
?
我們當前使用的網絡結構是隱藏大小為128的BiGRUs(雙向GRUs),連接膠囊網絡層,膠囊數量設置為10,路由數量設置為3。
Attention機制
在談及基于Attention機制的模型時,不能不先提及一下Encoder-Decoder框架,Encoder-Decoder框架可以理解成由一個句子生成另一個句子的通用處理模型。其架構如下圖所示:
?
如圖中的例子可以看到通過Encoder編碼了“機器學習”四個繁體字,得到一個中間語義,即圖中標了紅框框的綠色方塊。然后將這個紅框框的綠色方塊作為Decoder的輸入。這里得做一下解釋,Encoder-Decoder是一個通用的計算框架,其中的Encoder和Decoder可以是不同的模型組合,比如CNN、RNN等,上圖展示的就是Encoder和Decoder都是RNN的組合。
仔細看上圖的翻譯框架可以看到,在生成目標單詞的時候,無論哪個單詞都是用到同一個紅框框的綠色方塊,即同一個中間語義。這就是展現出一種注意力不集中的分心模型。那注意力模型是如何的呢?
Bahdanau et al., 2014 [10] 提出了將Attention機制應用到在機器翻譯。注意力模型會在輸出目標單詞的時候關注到輸入單詞的,比如輸出“machine”的時候,注意力模型應該將目光注意到“機器”兩個詞上,即“機器”的關注重要性應該大一些,而“學習”兩個詞的重要性應該小一些?;贏ttention機制的模型架構如下圖所示。
?
Yang et al., 2016 [11] 提出了用詞向量來表示句子向量,再由句子向量表示文檔向量,并且在詞層次和句子層次分別引入Attention的層次化Attention模型(Hierarchical Attention Networks,HAN)。HAN的模型結構如下圖所示。
?
我們當前使用的網絡結構是隱藏大小為128的BiGRUs(雙向GRUs),連接word-level的Attention層。
實驗結果
實驗中讀取了支付寶投訴欺詐場景的一段數據作為訓練集,另一段時間的數據作為測試集。數據的標簽是三分類,有違禁類,非案件類和欺詐類。其中欺詐的分類結果是我們主要關注的結果。數據集經過一些去重數據,去除文本中的標點,填充空值等預處理操作后,將處理后的數據輸入我們的神經網絡模型中,得到如下結果。
實驗中我們主要對比Capsule Network和TextCNN模型以及BiGRU模型和Attention模型在不同詞向量作為初始網絡Embedding層在不同評價指標下的效果對比。其中為了驗證兩種詞向量拼接后的高維詞向量對網絡結構的效果,添加了一組詞向量拼接后對不同網絡結構的實驗對比。
?
上圖是使用word2vec作為詞向量,多個網絡模型在支付寶投訴文本上的一組實驗示例。第一張圖是該組模型的ROC曲線,第二張圖是該組模型的Precision/Recall曲線。
?
上圖是使用cw2vec作為詞向量,多個網絡模型在支付寶投訴文本上的一組實驗示例。第一張圖是該組模型的ROC曲線,第二張圖是該組模型的Precision/Recall曲線。
?
上圖是使用拼接后的高維向量作為詞向量,多個網絡模型在支付寶投訴文本上的一組實驗示例。第一張圖是該組模型的ROC曲線,第二張圖是該組模型的Precision/Recall曲線。
?
備注:其中2vecs是指將300維cw2vec詞向量和300維word2vec詞向量拼接在一起,形成一個600維詞向量。AUC的計算方式是根據三分類共同的預測結果和真實標簽計算得出的。三分類準確度(Accuracy)的計算方式是根據三分類結果的最大值來確定類別的,而Precision/Recall是僅根據三分類中的欺詐類的結果計算出來的。
實驗中詞向量算法分別用到了word2vec和cw2vec,其中word2vec中包含了cbow和skip-gram各150維的詞向量,cw2vec中包含了基于筆畫和拼音各150維的詞向量。其中拼接后的高維詞向量(2vecs)是同時包含cw2vec和word2vec的600維詞向量。
上述實驗表明,不管在使用word2vec,cw2vec以及拼接后的高維詞向量作為詞向量,我們用Capsule Network網絡結構訓練的模型在Precision/Recall值和AUC值上都比原先TextCNN的效果好。比較兩者的三分類準確度,僅在使用拼接后的詞向量的準確度上Capsule Network略低于TextCNN。因此,實驗證明Capsule Network的整體表現優于原先的TextCNN。
在比較BiGRU模型和Attention模型時,我們可以發現在較低Precision下的Recall值時,BiGRU模型的分值略高于Attention模型。但在較高Precision下的Recall時,Attention模型的分值則明顯高于BiGRU模型。如表中Attention+word2vec在80%Precision下Recall值略低于BiGRU+word2vec。但在85% 和90%Precision下,Attention+word2vec的Recall值則明顯高于BiGRU+word2vec。在比較兩者的AUC值和Accuracy值,在使用word2vec詞向量和拼接的高維詞向量時,Attention模型的分數較高。
在詞向量間的對比中,可以看到僅使用cw2vec作為詞向量網絡模型整體上比word2vec和拼接的詞向量效果更好。
討論與展望
Capsule網絡結構在文本分類中能夠深入理解文字的位置信息、語義信息、語法結構等信息,而Attention機制能夠讓RNN網絡更加關注于整理文本的重要性。
希望Capsule網絡結構和Attention機制可以在更多的場景發揮效果,非常歡迎隨時聯系我們交流討論!
感謝各位技術同學的熱心幫助,以及螞蟻金服機器學習平臺-PAI平臺的技術支持,實驗中的cw2vec和word2vec兩種詞向量的生成是在PAI平臺上實現的,為實驗對比提供了很大的幫助,在數據中PAI的統計組件來進行建模的前的EDA。使用Pai-Tensorflow的GPU資源及分布式Tensorflow的支持,極快地加速了整個實驗流程。也希望大家能夠享受機器學習的樂趣!
參考文獻
[1] Mikolov et al. Distributedrepresentations of words and phrases and their compositionality[C]. NIPS. 2013.
[2] Kim Y. Convolutional neuralnetworks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.
[3] Liu P, Qiu X, Huang X.Recurrent neural network for text classification with multi-task learning[J].arXiv preprint arXiv:1605.05101, 2016.
[4] Schuster M, Paliwal K K.Bidirectional recurrent neural networks[J]. IEEE Transactions on SignalProcessing, 1997, 45(11): 2673-2681.
[5] Hochreiter S, Schmidhuber J.Long short-term memory[J]. Neural computation, 1997, 9(8): 1735-1780.
[6] Cho K, Van Merri?nboer B,Gulcehre C, et al. Learning phrase representations using RNN encoder-decoderfor statistical machine translation[J]. arXiv preprint arXiv:1406.1078, 2014.
[7] Cao et al. cw2vec: LearningChinese Word Embeddings with Stroke n-gram Information. AAAI 2018.
[8] Sabour S, Frosst N, Hinton G E.Dynamic routing between capsules[C]//Advances in Neural Information ProcessingSystems. 2017: 3856-3866.
[9] Zhao W, Ye J, Yang M, et al.Investigating Capsule Networks with Dynamic Routing for Text Classification[J].arXiv preprint arXiv:1804.00538, 2018.
[10] Bahdanau D, Cho K, Bengio Y.Neural machine translation by jointly learning to align and translate[J]. arXivpreprint arXiv:1409.0473, 2014.
[11] Yang Z, Yang D, Dyer C, et al.Hierarchical attention networks for document classification[C]//Proceedings ofthe 2016 Conference of the North American Chapter of the Association forComputational Linguistics: Human Language Technologies. 2016: 1480-1489.
— END —
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的深度学习文本分类在支付宝投诉文本模型上的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 码上用它开始Flutter混合开发——F
- 下一篇: 开箱即用的安全方案:MaxCompute