乾貨解析|深度學習文字分類在支付寶投訴文字模型上的應用
作者:兔子醬 來源:雲棲社群
原文連結: https://yq.aliyun.com/articles/625878?spm=a2c4e.11153940.bloghomeflow.148.453a291aTdoUO1
小螞蟻說
隨著深度學習的快速發展,以及在影像、語音領域取得的不錯成果,基於深度學習的自然語言處理技術也日益受到人們的關注。計算機是怎麼理解人類的語言的呢?
傳統機器學習的應用,常常是利用上述人工總結的文字特徵,但往往會遇到一些問題。比如“貓”和“咪”這兩詞語的語義很接近(即近義詞),但計算機並不能真正的在詞語語義層面理解,只是把他們當作了兩個不同的詞語。再比如“小狗”和“小貓”是很相關的兩個詞語,也不能被很好的理解和刻畫。
本文主要介紹了深度學習中的文字分類任務,以及一些應用於文字分類的深度學習模型。文字分類是自然語言處理領域最經典的場景之一,試圖推斷出給定的文字(句子、文件等)的標籤或標籤集合。透過這些技術,計算機能夠更好地理解人類的語言。
針對支付寶投訴欺詐場景,螞蟻金服人工智慧團隊設計了多個文字深度學習模型。包括雙向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.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31473948/viewspace-2212399/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【長篇乾貨】深度學習在文字分類中的應用深度學習文字分類
- 文字圖Tranformer在文字分類中的應用ORM文字分類
- 文字分類(下)-卷積神經網路(CNN)在文字分類上的應用文字分類卷積神經網路CNN
- 【AI in 美團】深度學習在文字領域的應用AI深度學習
- 文字分類模型文字分類模型
- 深度學習——如何用LSTM進行文字分類深度學習文字分類
- 萬字總結Keras深度學習中文文字分類Keras深度學習文字分類
- 如何用 Python 和深度遷移學習做文字分類?Python遷移學習文字分類
- 乾貨|當深度學習遇見自動文字摘要,seq2seq+attention深度學習
- 訓練PaddleOCR文字方向分類模型模型
- 如何用機器學習對文字分類機器學習文字分類
- 深度學習在乳腺癌上的應用!深度學習
- 教你用Pytorch建立你的第一個文字分類模型PyTorch文字分類模型
- 5.2.2 用TextCNN做文字分類CNN文字分類
- 系統學習NLP(十九)--文字分類之FastText文字分類AST
- 如何用Python和機器學習訓練中文文字情感分類模型?Python機器學習模型
- 序列資料和文字的深度學習深度學習
- 文字分類-TextCNN文字分類CNN
- 文字分類在內容安全應用中的資料不平衡問題文字分類
- 深度學習模型在序列標註任務中的應用深度學習模型
- 【人人都能學得會的NLP - 文字分類篇 03】長文字多標籤分類分類如何做?文字分類
- (一)文字分類經典模型之CNN篇文字分類模型CNN
- 盤點:文字內容安全領域 深度學習的六個主流應用方法深度學習
- 深度學習在OC中的應用深度學習
- 深度學習在攜程搜尋詞義解析中的應用深度學習
- Bert文字分類實踐(一):實現一個簡單的分類模型文字分類模型
- 一文帶你速覽分層注意力網路在文字分類中的應用文字分類
- 深度解析NLP文字摘要技術:定義、應用與PyTorch實戰PyTorch
- 深度學習之卷積模型應用深度學習卷積模型
- 文字分類:Keras+RNN vs傳統機器學習文字分類KerasRNN機器學習
- 深度學習用於文字摘要的論文及程式碼集錦深度學習
- 膠囊網路(Capsule Network)在文字分類的探索文字分類
- 深度學習在股票市場的應用深度學習
- 使用 TensorFlow Hub 和估算器構建文字分類模型文字分類模型
- 線上文字實體抽取能力,助力應用解析海量文字資料
- 【人人都能學得會的NLP - 文字分類篇 04】層次化多標籤文字分類如何做?文字分類
- BiLSTM-Attention文字分類文字分類
- 文字分類論文系列---文字分類