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