深度學習文本分類在支付寶投訴文本模型上的應用

小螞蟻說:算法

隨着深度學習的快速發展,以及在圖像、語音領域取得的不錯成果,基於深度學習的天然語言處理技術也日益受到人們的關注。計算機是怎麼理解人類的語言的呢?安全

傳統機器學習的應用,經常是利用上述人工總結的文本特徵,但每每會遇到一些問題。好比「貓」和「咪」這兩詞語的語義很接近(即近義詞),但計算機並不能真正的在詞語語義層面理解,只是把他們看成了兩個不一樣的詞語。再好比「小狗」和「小貓」是很相關的兩個詞語,也不能被很好的理解和刻畫。微信

本文主要介紹了深度學習中的文本分類任務,以及一些應用於文本分類的深度學習模型。文本分類是天然語言處理領域最經典的場景之一,試圖推斷出給定的文本(句子、文檔等)的標籤或標籤集合。經過這些技術,計算機可以更好地理解人類的語言。網絡

針對支付寶投訴欺詐場景,螞蟻金服人工智能團隊設計了多個文本深度學習模型。包括雙向GRU,Capsule Network和Attention-based Model等等,均在支付寶投訴欺詐場景上取得了不錯的效果。你們一塊兒來看看吧!架構

clipboard.png

背景介紹

對於風控業務,用戶的投訴是理解黑產運做方式和監控風控變化的重要形式。風險決策中心天天會獲得大量用戶投訴文本信息,每一個投訴文本一般對應必定的風險形式。目前分類模型只解決了部分對於文本信息利用率的問題。目前支付寶投訴欺詐場景主要應用到的深度學習模型有TextCNN和雙向GRU。框架

相關工做分析

本文的主要目的是想介紹一下深度學習中的文本分類任務,以及一些應用於文本分類的深度學習模型。文本分類是天然語言處理領域最經典的場景之一,試圖推斷出給定的文本(句子、文檔等)的標籤或標籤集合。機器學習

文本分類中包含了大量的技術實現,從是否使用了深度學習技術做爲標準來衡量,能夠將這些技術實現分爲兩大類:基於傳統機器學習的文本分類和基於深度學習的文本分類。分佈式

文本分類的應用很是普遍,其中比較有常見的應用有垃圾郵件分類,情感分析,新聞主題分類,自動問答系統中的問句分類以及一些現有的數據競賽等。現有的數據競賽包括知乎的看山杯機器學習挑戰賽,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層防止過擬合。

clipboard.png

天然語言處理中更經常使用的是遞歸神經網絡(RNN, Recurrent NeuralNetwork),可以更好的表達上下文信息。Liu et al., 2016 [3] 介紹了RNN用於分類問題的設計。用於文本分類的RNN網絡結構以下圖所示,網絡中將最後一個單元的結果做爲文本特徵,鏈接全鏈接Softmax層進行分類。

clipboard.png

除此以外,還有使用雙向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):控制輸出。

clipboard.png

在多個LSTM鏈接的循環網絡中,單個的LSTM的各個門的控制方式以下:

clipboard.png

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等算法均取得了一致性的提高。

clipboard.png

cw2vec算法同時利用了中文詞語內部和上下文的結構信息,來設計損失函數,所以產生更高質量的中文詞向量。

clipboard.png

除了「形」以外,「音」的刻畫能夠經過「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,其模型結構圖以下所示。

clipboard.png

咱們當前使用的網絡結構是隱藏大小爲128的BiGRUs(雙向GRUs),鏈接膠囊網絡層,膠囊數量設置爲10,路由數量設置爲3。

Attention機制

在談及基於Attention機制的模型時,不能不先說起一下Encoder-Decoder框架,Encoder-Decoder框架能夠理解成由一個句子生成另外一個句子的通用處理模型。其架構以下圖所示:

clipboard.png

如圖中的例子能夠看到經過Encoder編碼了「機器學習」四個繁體字,獲得一箇中間語義,即圖中標了紅框框的綠色方塊。而後將這個紅框框的綠色方塊做爲Decoder的輸入。這裏得作一下解釋,Encoder-Decoder是一個通用的計算框架,其中的Encoder和Decoder能夠是不一樣的模型組合,好比CNN、RNN等,上圖展現的就是Encoder和Decoder都是RNN的組合。

仔細看上圖的翻譯框架能夠看到,在生成目標單詞的時候,不管哪一個單詞都是用到同一個紅框框的綠色方塊,即同一個中間語義。這就是展示出一種注意力不集中的分心模型。那注意力模型是如何的呢?

Bahdanau et al., 2014 [10] 提出了將Attention機制應用到在機器翻譯。注意力模型會在輸出目標單詞的時候關注到輸入單詞的,好比輸出「machine」的時候,注意力模型應該將目光注意到「機器」兩個詞上,即「機器」的關注重要性應該大一些,而「學習」兩個詞的重要性應該小一些。基於Attention機制的模型架構以下圖所示。

clipboard.png

Yang et al., 2016 [11] 提出了用詞向量來表示句子向量,再由句子向量表示文檔向量,而且在詞層次和句子層次分別引入Attention的層次化Attention模型(Hierarchical Attention Networks,HAN)。HAN的模型結構以下圖所示。

clipboard.png

咱們當前使用的網絡結構是隱藏大小爲128的BiGRUs(雙向GRUs),鏈接word-level的Attention層。

實驗結果

實驗中讀取了支付寶投訴欺詐場景的一段數據做爲訓練集,另外一段時間的數據做爲測試集。數據的標籤是三分類,有違禁類,非案件類和欺詐類。其中欺詐的分類結果是咱們主要關注的結果。數據集通過一些去重數據,去除文本中的標點,填充空值等預處理操做後,將處理後的數據輸入咱們的神經網絡模型中,獲得以下結果。

實驗中咱們主要對比Capsule Network和TextCNN模型以及BiGRU模型和Attention模型在不一樣詞向量做爲初始網絡Embedding層在不一樣評價指標下的效果對比。其中爲了驗證兩種詞向量拼接後的高維詞向量對網絡結構的效果,添加了一組詞向量拼接後對不一樣網絡結構的實驗對比。

clipboard.png

上圖是使用word2vec做爲詞向量,多個網絡模型在支付寶投訴文本上的一組實驗示例。第一張圖是該組模型的ROC曲線,第二張圖是該組模型的Precision/Recall曲線。

clipboard.png

上圖是使用cw2vec做爲詞向量,多個網絡模型在支付寶投訴文本上的一組實驗示例。第一張圖是該組模型的ROC曲線,第二張圖是該組模型的Precision/Recall曲線。

clipboard.png

上圖是使用拼接後的高維向量做爲詞向量,多個網絡模型在支付寶投訴文本上的一組實驗示例。第一張圖是該組模型的ROC曲線,第二張圖是該組模型的Precision/Recall曲線。

clipboard.png

備註:其中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的支持,極快地加速了整個實驗流程。也但願你們可以享受機器學習的樂趣!

本文做者:兔子醬

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索