日常工作中,因為很多原因,我們面對的問題總不能一下放模型里,就能就得到很好的效果,前面有文章詳細講過可以通過bad case分析定位并解決問題(心法利器[40] | bad case治療術:解決篇,這是最后一篇),今天換個角度,從一個分類任務來看,會有哪些問題,以及有哪些可以考慮的解決方案。
這里,我按照問題作為分類,來給出一些常見的解決方案。
看完這篇文章后,別遇事不決換模型了,別讓老板知道你只會這招(狗頭)。
數(shù)據(jù)的問題
在現(xiàn)實問題下,有80%以上的效果不好,都是由于數(shù)據(jù)的問題,這里我來列舉一些常見的數(shù)據(jù)問題以及解決方案。
數(shù)據(jù)標注錯誤
人很難不犯錯的,即使是一些比較出名的開源數(shù)據(jù)集,其實也很難達到全對的水平,很多數(shù)據(jù)集只要認真做過case,例如做過case分析,就會發(fā)現(xiàn)其實有很多的標注錯誤,實際應用中,大部分情況準確率能達到95%就已經(jīng)是高質(zhì)量的數(shù)據(jù)了,一般能達到90-92%這個數(shù)據(jù)集就基本可用了,而如果模型本身預測的結(jié)果準確率就只是在90%上下,其實模型已經(jīng)很大程度擬合好了這個數(shù)據(jù)集,再往上的提升很可能只是分數(shù)高,擬合了錯誤結(jié)果而已,這個是需要首先說明的。
其次,有些數(shù)據(jù)集,和很多原因有關,無論是訓練集還是測試集,準確率可能都只是在六七十甚至更低,我們其實無法苛求模型能達到更好的水平。對訓練集,如果質(zhì)量低,這事就和拿了本錯誤的教材一樣,根本學不好,對測試集,再優(yōu)秀的模型遇到這個測試集,即使預測對了,標注是錯的,體現(xiàn)在指標上也是準確率很低,模型怎么換效果都不好。
這個數(shù)據(jù)標注問題,往往體現(xiàn)的是這個系統(tǒng)的上限,此時,我們所應該聚焦的,就是提升數(shù)據(jù)標注的準確性,這里給出大家提一些可以考慮的策略:
仔細修正標注策略(畢竟數(shù)據(jù)標注除了人工還有很多方法),制定更多規(guī)則來優(yōu)化。
如果數(shù)據(jù)標注比較困難,可以考慮多人標注,對不一致的部分進行復合,整體質(zhì)量提升會比較明顯。
配合模型、規(guī)則等多個策略進行比對,對不一致的部分進行復標。
利用模型,對模棱兩可(二分類概率在0.5上下)或者明顯錯誤的(正類prob在0.1左右或負類prob在0.9左右),進行復標。
后面幾個策略其實挺“主動學習”的,核心就是通過模糊或者不一致來挖掘很可能有錯的部分進行復合,來提升整體的質(zhì)量。
數(shù)據(jù)數(shù)量問題
現(xiàn)階段,雖然有無監(jiān)督之類的很多策略,但是對于特定的任務或者需求,總是離不開訓練數(shù)據(jù)的,我們需要數(shù)據(jù)來讓模型知道“遇到這個情況該選哪個”,因此數(shù)據(jù)數(shù)量是需要基本保證的。
首先,很多人很容易想到兩個常見策略:
數(shù)據(jù)增強。
無監(jiān)督。
這兩個方案,是可以的,但不是萬能的:
數(shù)據(jù)增強——在本身數(shù)據(jù)的覆蓋面已經(jīng)較充足的情況。例如天氣意圖的分類,其實來回就這么集中情況,列舉完增強就行。但是遇到類似電影、電視劇意圖的分類,分布很難完整覆蓋,只有幾條樣本完全不能通過常規(guī)的增強解決。
無監(jiān)督——如果有自信模型能往特定的方向預測,那這么做其實還行,但是定向這事很困難的,例如都是二分類問題,一個分是否是天氣意圖,一個分是否是電影意圖,都是同一批數(shù)據(jù),如何知道訓出的無監(jiān)督模型朝著那個任務的方向預測?
所以,私以為還是要從人體的根源出發(fā)。分幾個情況吧:
整體數(shù)據(jù)都很少的情況。
整體數(shù)據(jù)尚可,但是特定類目或者特定情況的數(shù)據(jù)太少的情況。
對于整體數(shù)據(jù)都很少的問題,如果是像我前面說的——在本身數(shù)據(jù)的覆蓋面已經(jīng)較充足的情況,那其實直接數(shù)據(jù)增強是可以的,增強之后會讓模型強化對特定意識的了解,直接就能學出來了,但是如果不足,那就要找渠道增加數(shù)據(jù)了,有用戶數(shù)據(jù)的,可以撈一些用戶query,根據(jù)用戶點擊在整理下,沒有的,結(jié)合一些詞典構造一些樣本放入也是可以的,甚至有一些場景是有公開數(shù)據(jù)的,直接拿來用。
而對于數(shù)據(jù)樣本不均衡的問題,之前有寫過文章介紹,此處不贅述了(心法利器[44] | 樣本不均衡之我見)。
小補充
只有在數(shù)據(jù)的數(shù)量和質(zhì)量都比較充足的時候,我們才有資格去談模型,談其他的優(yōu)化策略,這應該是一名成熟的算法工程師所需要掌握的基礎知識。
模型升級的收益
模型的升級往往帶來的是一個系統(tǒng)級別的提升,這個系統(tǒng)提升是上限的提升,只有到這個系統(tǒng)內(nèi)部的多個位置都已經(jīng)有比較高了,這時候換模型才能帶來比較明顯的收益,例如數(shù)據(jù)已經(jīng)調(diào)教的比較好,沒有什么大問題,這個時候升級模型能很快提分,這里例如fasttext->textcnn,上預訓練模型等,但是確實是要看清切換的時機,畢竟切換是需要成本的,到時候切換完效果不提升,白干活的話KPI很容易崩的(狗頭)。
有關切換時機,大家可以看這篇(心法利器[63] | 預訓練模型的上線時機)。
特定樣本引入打來的提升
常規(guī)下,要調(diào)整效果,還是要從bad case里出發(fā),理解數(shù)據(jù)中常見的問題,然后進行優(yōu)化,其實是日常最常用的方式,這個方式簡單快速,但是也有難點,難的是發(fā)現(xiàn)規(guī)律并進行解決,這里給大家介紹一些比較常見的問題和主要解決方法。
正負樣本里某些詞的詞頻差距很大,導致模型認為出現(xiàn)的這個詞就是分類標志,導致分類錯誤。
解決方法1,撈日志,這個詞在正類多就找?guī)н@個詞的負類樣本,反之亦然。
解決方法2,刪除樣本,例如這個詞在正類多就干掉一些正樣本。
泛化能力不足,模型只學到了正規(guī)的句式,對于泛化、換個說法的樣本可能就預測錯了。
r-dropout,值得推薦。
拼接,和一些無意義、閑聊類的句子進行拼接,維持源類別,放入對應類目的樣本中。
數(shù)據(jù)增強,尤其關注隨機交叉的這個策略,有收益。
檢索增強,用向量召回最接近的句子,用這批放入對應類目。
因為缺乏特定形式的樣本(模型沒見過),導致模型只能猜還猜不對。
加入特定類型的樣本。(在天氣意圖分類數(shù)據(jù)里,把“天氣之子”作為負樣本放入訓練集中)
考慮通過別的方式解決,例如用詞典(心法利器[41] | 我常說的詞典匹配到底怎么做)或者以搜代分的方式來處理(心法利器[60] | 以搜代分的生效機理)補充。
當然,還有一些別的策略,這些策略很大程度和自己對業(yè)務、數(shù)據(jù)的理解有關,越是了解提升的幅度會越大。最近的一次實驗,由于用戶query其實都是語音轉(zhuǎn)文字得到的句子,而由于采音、ASR等問題,得到的用戶query可能不是完整的,不完整意味著可能有關鍵詞但是信息仍舊模糊,這就容易導致誤召回了(模糊或者無意義的句子是會被認為是負類的),因此,我才用的策略是對常見高頻的句子做隨機截斷,然后放入負類中,最終結(jié)果是以2%的召回率代價換來了4%的準確率提升,算是收益較大的,漏召回的會根據(jù)實際情況再調(diào)整即可。
其他策略的引入
一個完整可控的系統(tǒng),不能光靠模型來解決所有問題,而實際上也是模型并不能解決所有問題,我們需要眾多的支持和輔助,構造成一個系統(tǒng),才能讓整體效果達到新的高度,這里有一些可以考慮的思路。
對于簡單、高頻的問題,其實不太認為需要模型,處理用一些詞典和規(guī)則能更加穩(wěn)定可控地解決。
如果問題的尾巴比較長,長尾問題的樣本比較難獲取,占比較低,此時模型并不能學得好,與其考慮增強和挖掘,不如交給檢索的方式做更加高效,別考慮增加特定樣本了(以搜代分:心法利器[26] | 以搜代分:文本多分類新思路)。
模型附帶后處理,解決模棱兩可,或者比較邊界的問題,舉個例子:
閾值大于0.7的才是正類,0.5-0.7的部分需要依賴別的因素做進一步判斷才準入。
多個分類模塊組合,最終用加入rank層進行多結(jié)果的排序,解決復雜多變的分類場景。
多個二分類,不讓模型處理混淆問題,最終rank層再來擇優(yōu)。
類目體系更新頻繁,重訓模型對其他類目影響大。
多個分類場景差異大,數(shù)據(jù)不好平衡。
審核編輯:劉清
-
數(shù)據(jù)集
+關注
關注
4文章
1224瀏覽量
25446
原文標題:文本分類日常提點技巧
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
PCBA代工避坑指南:常見問題+解決方案全解析
常見xgboost錯誤及解決方案
常見換熱器故障及解決方案
常見OTDR故障及解決方案
DFT的常見誤區(qū)與解決方案
SSM開發(fā)中的常見問題及解決方案
常見的時間繼電器故障及解決方案
常見的GND連接錯誤及解決方案
常見BGA芯片故障及解決方案
buck電路常見故障及解決方案
TTL電路中的常見問題及解決方案
一些常見的動態(tài)電路

aes加密的常見錯誤及解決方案
PID控制的常見問題及解決方案
分享一些常見的電路

評論