文本分類在內容安全應用中的數據不平衡問題

2021-01-07 網易易盾

經過幾十年的發展,文本分類在學術界已經是一個比較成熟的技術,目前自然語言處理(NLP)的研究熱點已經不在文本分類上面。然而,作為內容安全檢測的一個重要技術手段,文本分類在實際業務中還是有不少的挑戰。

首先,內容安全場景對分類的準確度要求極高,不但要求較低的誤判率,任何一個漏判都有可能給產品方帶來嚴重的後果。其次,眾所周知數據不平衡對分類模型的影響很大,而內容安全場景恰恰存在非常嚴重的數據不平衡問題。本文主要討論文本分類在內容安全應用中遇到的數據不平衡問題以及常用的解決辦法。

數據不平衡問題是分類算法在實際應用中經常遇到的一個問題,它指的是在訓練語料或真實數據中,各個類別的數據量相差較大,我們知道模型的訓練本質上就是最小化一個損失函數,如果各個類別的樣本規模不一樣,損失函數的值較大部分由大類別貢獻,那麼最終得到的模型分類將偏向於大類別。

舉個例子,假如訓練語料中正樣本數量為100個,負樣本數量為100000個,那麼你很可能得到這麼一個模型:不管輸入什麼樣的數據,分類結果都是負例,這個模型準確率>99.9%看起來相當不錯,可實際上這個模型有跟沒有沒啥區別。上面是一個比較極端的例子,可很不幸的是,內容安全領域的數據不平衡現象就是這麼極端,有害內容佔比一般低於千分之一。

對於數據不平衡問題,目前還未看到比較理想的解決方法,現有的方法按照其著眼點可以分為數據重採樣、修改損失函數、模型改造3大類。其中模型改造這一類的方法都是與某一特定模型緊密耦合的,由於缺少通用性實際應用中使用的較少,本文只對前面兩種方法進行介紹:

一、數據重採樣

數據重採樣是處理數據不平衡問題時首先能想到的方法,既然各個類別數量不平衡,那我們想辦法讓每個類的數量都差不多不就行了嗎?

數據重採樣方法在只有訓練數據的基礎上,對訓練數據進行採樣,從而讓各個類別數量接近,具體分為過採樣和欠採樣兩種思路。需要注意的是,如果你的模型對業務產生的價值較大,並且數量少的類別線上數據並不少,只是缺少標籤,那麼也別想著用技術手段解決不平衡問題了,收集點數據找人去打標才是最佳選擇。

1.過採樣

最簡單的過採樣方法對小類別的樣本進行重複隨機採樣,補充到小類別當中,直到小類別樣本數據量增大到符合要求為止。可以看出這種方法只是單純增加小類別樣本數量,並不能擴大小類別樣本的多樣性。

SMOTE一種近鄰插值方法,它使用下面的公式對小類別的兩個相似樣本進行線性組合:

其中0≤u≤1, x^R是x的5近鄰中的隨機一個。可以看到,SMOTE生成了新的樣本,擴大了小類別樣本的多樣性,同時生成樣本的總體期望值與原來的分布相同。

由於SMOTE是直接對向量化的數據進行插值,不能直接應用於文本分類任務的離散空間插值。作為替代方案,我們可以在小類別樣本上面進行LDA概率主題模型建模,然後利用LDA模型生成新的樣本。

LDA模型認為文檔的主題並不是確定的,而是一個多項式概率分布,這個概率分布本身又是根據Dirichlet分布產生的,Dirichlet分布的參數可以通過Gibbs Sampling方法從提供的語料上面學習得到。

有了LDA模型以後,文本生成過程如下:對文本中的每個詞,根據Dirichlet分布隨機生成一個主題分布,然後根據主題分布隨機抽樣出具體的詞彙,重複上述過程直到滿足文本長度要求。

改進過採樣小類別樣本多樣性的另一種思路是對小類別樣本使用文本增強方法。文本增強是在NLP低資源任務中經常使用到的一種技術,主要是通過對原文本進行小幅度的修改,使得修改後的文本跟原文本在內容上有一定的差異,同時又與原文本保持相同語義。常用的文本增強方法有詞彙替換、隨機噪聲插入、樣本混合、回譯、句法變換等。

2.欠採樣

與過採樣方法相反,欠採樣對大類別的樣本進行隨機刪減,直到規模與小類別相近為止。欠採樣方法一般運用在大類別樣本規模和多樣性足夠大的場合,否則建議優先嘗試過採樣方法。

原始的欠採樣方法對於大類別的樣本的刪減是無差別的,但在實際應用中大類別內部的樣本分布本身也是不均衡的,有些樣本分類器很容易就能把它與小類別區分開來,有些樣本則更容易被分類器誤分為小類別。理想的欠採樣方法應該是多刪除那些容易分類的冗餘樣本,儘可能多保留較難分類的樣本。為了達到這樣的效果,我們可以使用迭代預分類方式不斷篩選大類別的樣本。

首先從大類別中隨機挑選少量的樣本作為種子樣本,剩下的作為候選樣本,然後用種子樣本聯合小類別樣本組成訓練集訓練出一個分類模型,分類模型對候選樣本進行分類,從錯分的樣本裡面隨機挑選少量的樣本補充到種子樣本當中,重複前面的過程直至類別平衡或者候選樣本不再被錯分為止。通過上面的方法,最終挑選出來的樣本都是對分類貢獻比較大的樣本。

二、修改損失函數

我們在前面提到,數據不平衡對文本分類的影響本質上是由模型訓練過程中最小化損失函數這一目標決定的,因此解決數據不平衡問題的第二種思路就是修改損失函數,減少大類別對損失函數的影響。

特別是在深度學習技術流行以後,由於損失函數的定義與具體模型結構較為解耦,對損失函數進行改進後,可以用於所有的分類模型,因此目前這塊的研究工作還比較活躍,不斷出現較為有代表性的方法。

1.loss類別加權

這是一種比較樸素簡單的方法,在計算每個樣本的loss的時候根據其類別乘以不同的權重,權重係數一般與類別樣本數量成反比。Loss類別加權在本質上跟數據重採樣是相通的,兩者最終對loss的改變是一致的。

2.Focal loss

focal loss不但考慮了類別規模性差異的因素,而且還同時考慮了容易分類樣本和較難分類樣本的差別,假設樣本的真實label為t,focal loss計算公式如下:

其中p_t是模型輸出的label為t的概率,α是類別係數,γ>=0稱作focusing parameter,稱作調製係數。可以看出,當γ=0時focalloss就退化成普通的類別加權loss。當γ>0時,樣本越容易分類,p就越接近1,調製係數就越小,最終loss值就越小,樣本越難以分類,p就越接近0,調製係數就越大,最終loss值就越大,因此,調製係數的引入使得loss的計算偏向於那些較難分類的樣本。

3.GHM loss

Focal loss是在理想情況下考慮對難分類樣本的處理,在現實場景中訓練數據往往是有噪聲的,比如人工打標失誤,這個時候可能模型已經收斂了,focal loss還在死懟這些不能正確分類的噪聲樣本,最終反而用力過度,得到不是最優的模型。

GHM解決了這個問題,它首先提出梯度模長的定義:

p就是模型預測值,p*就是真實值,模長越大,分類錯誤越嚴重。GHM對不同模長的樣本數量做了統計,結果如下:

上面y軸是取了log的結果,左邊那些代表了大部分較容易分類的樣本,右邊很難分類的樣本也不少。Focal loss的做法是忽略左邊那些容易分類樣本,重點關注右邊那些難分類的樣本,GHM的思路卻是右邊這些樣本太難了,應該是異常的,不如先忽略這部分樣本。具體做法就是根據梯度上面的樣本量,樣本數量越多的梯度給的權重越小,公式如下:

其中GD(g)稱作梯度密度,密度越大說明這個梯度區間的樣本量越多。

三、效果評估

常規情況下文本分類模型的開發流程是這樣:

1)從真實業務數據中收集一批數據,如果沒有標籤則進行人工標註。

2)把這些數據分成3份:訓練集、驗證集(或叫開發集)、測試集。

3)算法人員在訓練集上面訓練模型,在驗證集上面驗證效果,過程中夾雜著選模型、調參、各種魔改等等。

4)最終得到一個比較滿意的模型,在測試集上面跑一下效果,如果ok那就上線,不行那就重來。

上述流程之所以行得通,是因為我們假設訓練集、驗證集、測試集數據分布都與真實業務數據一致,驗證集和測試集代表了對真實數據的一個採樣,模型在測試集上的表現與在真實場景是一樣的。在內容安全檢測場景,由於極度的數據不平衡問題上面的流程就不適用了:測試集中如果保持正常內容和有害內容比例跟線上一致,要麼需要標註巨量的正常樣本,要麼有害樣本數量太少,得到的召回率可信度不高,如果兩者比例與線上脫軌,那麼得到的準確率、精確度、召回率這些指標必然與在線上數據的表現不一致。

內容安全業務上主要關心誤判和漏判的情況,前面的例子也可以看出準確率在這裡意義不大,所以我們只重點評估模型的精確度和召回率。

模型重新訓練有兩種原因,一種是純粹的技術優化,比如換個神經網絡或loss,一種是修正線上的誤判漏判badcase,第二種情況訓練集是會補充新樣本的。我們保持一個相對獨立由一些代表性樣本構成的測試集,裡面的正負樣本比較均衡。測試集不會每次都隨訓練集一起維護,只有在出現一些新類型的樣本時才進行維護。

當模型優化完成以後,先在測試集跑一遍,計算召回率指標和總體準確率,這個召回率可以認為是接近真實的,準確率就只能作為模型不同版本定性比較的一個參照值了。由於正常內容的範圍實在過於廣大,測試集很難覆蓋所有可能的誤判樣例,並且測試集正負樣本比例並非真實比例,這導致精確度很難估算並且不準確。

在測試集上面根據召回率和準確率評估當前版本模型比上一個版本有改進以後,再使用線上真實數據跑一遍,對命中的數據抽樣人工打標,從而計算出一個比較真實的精確度指標。

四、反向利用

內容安全檢測數據極度不平衡的特點,在給模型效果優化帶來挑戰的同時,也給我們優化系統整體RT提供了幫助。深度學習模型相比傳統的機器學習模型在精度方面進步很多,但相應的計算量卻也增加更多,比如,CNN模型的檢測時間是SVM的十倍以上。

在全面升級深度學習模型的同時,硬體的成本也急劇增加,硬體資源嚴重限制了NLP最新模型與技術的落地。其實線上數據有害內容的比例是很低的,對於大部分正常內容的檢測理論上是在浪費硬體算力。理想狀態下只要把那些有害內容過一下模型識別出來然後刪除即可。基於這樣的想法,我們提出了預檢-終檢二階段過濾的模式:

在原來的深度學習模型基礎上,使用機器學習模型在重新訓練出一個預檢模型,調整預檢模型的分類閾值使得模型對有害樣本具有非常高的召回。線上數據先過預檢模型,把召回出來的少量可疑數據再用深度學習模型識別。這種模式實際效果非常好,上線後在保持召回基本不變的前提下,RT直接減少75%以上。

五、總結

本文針對內容安全場景中文本分類遇到的數據不平衡問題進行討論,介紹了應對數據不平衡問題的幾種技術方法,包括過採樣、欠採樣、加權loss、focal loss、GHM loss等,同時分析了數據不平衡對模型效果評估的影響以及我們採取的做法,最後分享了我們利用數據不平衡特點進行RT優化的經驗。

在網上,我們會閱讀到在各種場景下出現的文字,包括圖片標題、帳戶名稱、視頻彈幕、社群評論、簡訊等,這推動著網易易盾不斷結合實際場景推出新的技術解決方案。

除文本檢測之外,易盾的內容安全服務涵蓋圖片檢測、視頻檢測、音頻檢測、人工審核和智能審核系統等產品,以及廣告合規、網站內容檢測、文檔內容檢測、歷史數據清洗、音視頻、社交娛樂、政企、媒體等解決方案。

智能時代,內容安全與技術的結合更加深刻。今後,在關注相關研究的同時,易盾將繼續根據自己的業務特點進行探索。(作者:網易易盾NLP算法專家林洋港(菜牛))

相關焦點

  • 盤點:文本內容安全領域 深度學習的六個主流應用方法
    實際上,self-attention是目前用得最多的attention技術,它不需要額外的數據,只根據文本自身的上下文,就能計算文本中各個詞的重要性。可以看出,attention本質上就是算各個詞的權重,然後進行加權平均。而我們知道在word2vec問世以後,在怎麼把多個詞的詞向量變成單個向量來表示句子的問題上,有一種做法就是加權平均,比如根據tf-idf加權平均。
  • 盤點:文本內容安全領域 深度學習的六個主流應用方法
    實際上,self-attention是目前用得最多的attention技術,它不需要額外的數據,只根據文本自身的上下文,就能計算文本中各個詞的重要性。可以看出,attention本質上就是算各個詞的權重,然後進行加權平均。而我們知道在word2vec問世以後,在怎麼把多個詞的詞向量變成單個向量來表示句子的問題上,有一種做法就是加權平均,比如根據tf-idf加權平均。
  • 文本分類又來了,用 Scikit-Learn 解決多類文本分類問題
    翻譯 | 朱茵      整理 | 餘杭  MY 在商業領域有很多文本分類的應用,比如新聞故事通常由主題來分類;內容或產品常常被打上標籤;基於如何在線談論產品或品牌,用戶被分成支持者等等。然而大部分的文本分類文章和網上教程是二進位的文本分類,像垃圾郵件過濾(spam vs. ham)、情感分析(積極的和消極的)。在大量實例中,我們現實世界的問題要比這些複雜的多。因此,這是我們今天要做的:將消費者的財務投訴分成12個預定義的類。這些數據可以從 data.gov 下載。
  • 乾貨| 深度學習在文本分類中的應用
    文本分類的應用非常廣泛。,判斷文本情感屬於{非常消極,消極,中立,積極,非常積極}中的哪一類新聞主題分類:判斷新聞屬於哪個類別,如財經、體育、娛樂等自動問答系統中的問句分類社區問答系統中的問題分類:多標籤分類,如知乎看山杯
  • 如何解決機器學習中數據不平衡問題
    與此同時,越來越多的機器學習算法從學術界走向工業界,而在這個過程中會有很多困難。數據不平衡問題雖然不是最難的,但絕對是最重要的問題之一。 一、數據不平衡在學術研究與教學中,很多算法都有一個基本假設,那就是數據分布是均勻的。當我們把這些算法直接應用於實際數據時,大多數情況下都無法取得理想的結果。
  • 基於關鍵詞的文本內容過濾算法的研究與應用
    在人民網下一步發展戰略中,新媒體融合論壇中副總編輯盧新寧等人闡述了發展方向,其強調新創新的作用及其內容生產,強調了對人民網、手機人民網、人民網客戶端、數據中心等平臺的建設。在內容過濾中由於網絡中主體信息為文本,所以內容過濾研究主要針對信息文本展開。 2.1文本過濾相關技術 內容過濾系統中使用了相關的文本過濾技術。文本過濾(Text Filering)是指計算機根據用戶對信息的需求,從大量的文本流中尋找對應信息或剔除不相關信息的過程。對用戶需求的判斷和所採用方法使之與需求相適應對提升文本過濾的效果十分重要。
  • 達觀數據乾貨分享:深度解析文本分類與標籤的應用價值和原理
    信息過載時代,文本分類和文本標籤是我們整合閱讀文本信息的常用手段。本文系統介紹文本分類和文本標籤的技術原理和應用價值,並結合項目案例談談兩者的使用技巧。一、分類和標籤的共性與差異圖書管理員在給圖書分類時,會根據書的內容、形式、體裁等信息,按照《中國圖書館圖書分類法》進行分類。
  • 機器學習自動文本分類
    它們的應用無處不在。正如 Jeff Bezos 在給股東的年度公開信中所說:在過去的幾十年中,計算機已將程式設計師可以用清晰的規則和算法來描述的任務自動化。而對於精確描述規則困難得多的任務,現代機器學習技術同樣可以自動化。說到自動化文本分類,我們寫過文章介紹它背後的技術及其應用。在這裡,我們改進一下文本分類器。
  • 中文文本分類:你需要了解的10項關鍵內容
    在人工智慧浪潮席捲全球的今天,文本分類技術已經被廣泛地應用在文本審核、廣告過濾、情感分析和反黃識別等NLP領域。本文從達觀數據中文文本分類的實踐出發,總結了從數據預處理到特徵工程、算法選擇再到後處理和評價指標等流程中的10項關鍵內容,希望能對讀者有所幫助。
  • 文本對分類以及多標籤分類問題的解決思路
    現實生活中,有大量的文本需要人工區分類,而自然語言相關技術的發展使得人們可以通過算法的手段代替手工,極大的加速了社會的發展.而文本分類任務一直是NLP一隻老掉牙的事,從常規的新聞文本分類到特定領域的多類分類(Multiclass classification)  和多標籤分類(Multilabel classification).
  • 文本分類六十年
    這些文獻中已經提出了許許多多的算法模型、基準數據集一集評測指標,因此需要一個對這個領域進行全面而且跟進趨勢的調查。這裡我們介紹基於機器學習和深度學習的文本分類,主要內容來自北航、伊利諾伊大學等學者聯合發表論文 A Survey on Text Classification: From Shallow to Deep Learning。
  • 數據挖掘之文本分類技術,最詳細的原理解讀
    在理解文本信息的問題上,由於信息量的龐大,如果僅憑人工方式來收集和挖掘文本數據,不僅需要消耗大量的人力和時間,而且也是很難實現的。於是,實現自動文本分類就顯得尤其重要,它是文本信息挖掘的基本功能,也成為了處理和組織文本數據的核心技術。
  • 搜狐黨磊:深度學習在短文本分類中的應用
    【IT168 評論】本文根據【創客168】第12期現場演講嘉賓黨磊老師分享內容整理而成。錄音整理及文字編輯@IT168許真真。講師介紹黨磊,搜狐視頻高級工程師。2015年研究生畢業後加入搜狐視頻,曾負責短視頻推薦的召回模型、排序模型、短視頻播放質量評價體系、短視頻分類等項目,目前主要研究方向為將深度學習算法應用到視頻推薦系統中。
  • 通過隨機採樣和數據增強來解決數據不平衡的問題
    大多數用於分類的機器學習算法都是在假設平衡類的情況下開發的,然而,在現實生活中,擁有適當平衡的數據並不常見。因此,人們提出了各種方案來解決這個問題,以及一些應用這些解決方案的工具或者類庫。例如,imbalanced-learn 這個python庫,它實現了最相關的算法來解決類不平衡的問題。
  • 以BBC新聞文章為例:應用XGBoost等算法進行文本分類
    /data/bbc-text.csv')bbc_text_df.head()表中似乎含有許多長文本。後續章節將對其作詳細論述。現在的問題是:若給定一個「文本」,就需要預測其類別。這無疑是一個多累文本分類的問題。
  • NLP基礎任務:文本分類近年發展匯總,68頁超詳細解析
    然而,基礎任務不代表簡單任務:文本來源複雜多樣,文本粒度有大有小,文本標籤之間也有各種關係。面對各種問題,文本分類,仍在飛速發展中。來自美國維吉尼亞大學的Kamran Kowsari博士等人,用了68頁A4紙的篇幅,從0開始,細緻的總結了文本分類近些年的發展,循序漸進,新手友好!
  • 【關於 文本分類 trick】那些你不知道的事
    6.2 特徵挖掘策略離散數據挖掘構建關鍵詞的高維稀疏特徵:類似結構化數據挖掘(如CTR中的wide&deep),比如根據關鍵詞列表對文本內容進行挖掘,構建高維稀疏特徵並餵入xDeepFM [3] 中進行處理,最後與文本向量一同拼接。其他業務特徵:如疾病大類劃分、就診科室等業務特徵。
  • 機器學習中不平衡數據集分類示例:乳腺鉬靶微鈣化攝影數據集分類
    Deephub翻譯組:Alexander Zhao癌症檢測是不平衡分類問題的一個普遍例子,因為非癌症病例往往比實際癌症病例多得多。一個典型的不平衡分類數據集是乳腺攝影數據集,這個數據集用於從放射掃描中檢測乳腺癌(特別是在乳腺攝影中出現明亮的微鈣化簇)。研究人員通過掃描圖像,對目標進行分割,然後用計算機視覺算法描述分割對象,從而獲得了這一數據集。由於類別不平衡十分嚴重,這是一個非常流行的不平衡分類數據集。
  • 自然語言處理 | 通過影片查看示例簡單了解NLP中的文本分類
    NLP的應用機器翻譯,即Google翻譯信息檢索問題回答即ChatBot總結情緒分析社交媒體分析挖掘大數據 單詞和序列NLP系統需要正確理解文本,符號和語義。許多方法可以幫助NLP系統理解文本和符號。
  • 達觀數據:如何用深度學習做好長文本分類與法律文書智能化處理
    在NLP領域中,文本分類輿情分析等任務相較於文本抽取,和摘要等任務更容易獲得大量標註數據。因此在文本分類領域中深度學習相較於傳統方法更容易獲得比較好的效果。正是有了文本分類模型的快速演進,海量的法律文書可以通過智能化處理來極大地提高效率。我們今天就來分析一下當前state of art的文本分類模型以及他們在法律文書智能化中的應用。