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