乾貨解析|深度學習文字分類在支付寶投訴文字模型上的應用

HitTwice發表於2018-08-20
小螞蟻說:

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

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

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

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

乾貨解析|深度學習文字分類在支付寶投訴文字模型上的應用

背景介紹

對於風控業務,使用者的投訴是理解黑產運作方式和監控風控變化的重要形式。風險決策中心每天會得到大量使用者投訴文字資訊,每個投訴文字通常對應一定的風險形式。目前分類模型只解決了部分對於文字資訊利用率的問題。目前支付寶投訴欺詐場景主要應用到的深度學習模型有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層防止過擬合。

乾貨解析|深度學習文字分類在支付寶投訴文字模型上的應用

自然語言處理中更常用的是遞迴神經網路(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”的時候,注意力模型應該將目光注意到“機器”兩個詞上,即“機器”的關注重要性應該大一些,而“學習”兩個詞的重要性應該小一些。基於Attention機制的模型架構如下圖所示。

乾貨解析|深度學習文字分類在支付寶投訴文字模型上的應用

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 —

相關文章