概述
新型深度模型天天刷屏刷榜,模型日新月異,做算法的不免感到焦慮。發(fā)現(xiàn)自己看論文的速度已經(jīng)趕不上他們發(fā)論文的速度了。在此啟發(fā)下,想寫一寫自己工作的思考,面對一個領(lǐng)域,我們?nèi)绾芜M(jìn)行技術(shù)選型,這個系列我會結(jié)合著自己的工作,幫助大家選擇一個好的Baseline模型??赡苓@也是我的困惑,大家模型介紹的歡天喜地,并沒有指出哪些適合做baseline,到頭還得自己一個一個試,希望我的經(jīng)驗(yàn)?zāi)軒椭蠹夜?jié)省一點(diǎn)點(diǎn)時間。我就很滿足了。技術(shù)更新太快,自己并不是專家,您看到這篇文章的時候,可能已經(jīng)有點(diǎn)過時,擇優(yōu)享用吧。
問題描述
今日主角:文本分類
問題定義:給定一段文本,預(yù)測一個或者多個標(biāo)簽。
-
問題舉例
搜索類目預(yù)測:query-紅色連衣裙 label-女裝_連衣裙
智能客服意圖分類:query-我的快遞怎么還沒到 label-物流沒到
新聞分類:query-哈登今日xx分 label-體育
情感分類:query-我好難過啊 label-傷心
-
技術(shù)側(cè)劃分
query的長度:短句、段落、文章
預(yù)測label:一個、多個(同時滿足)
label數(shù)量
技術(shù)價值:該技術(shù)非常的實(shí)用,一方面可以幫助公司節(jié)省一些人力標(biāo)注成本,另一方面,可以賦能業(yè)務(wù),讓業(yè)務(wù)做一些之前無法做到的分析、運(yùn)營。
模型介紹
本文不一一對比各個模型的原理,參看用深度學(xué)習(xí)(CNN RNN Attention)解決大規(guī)模文本分類問題 - 綜述和實(shí)踐即可。這里我一句話介紹一下模型的區(qū)別。
一句話模型總結(jié):
傳統(tǒng)非embedding模型:baseline太低,我直接忽略。有能超過textcnn的請指教。
textcnn:抽取Ngram特性,適用于詞語特征明顯的業(yè)務(wù),幾個詞就能很好的區(qū)分問題,參數(shù)量要夠大,size取正常詞語長度(1,2,3,4,5)即可,非常好用的短文本Baseline。
textrnn:抽取序列特征,正常情況下和cnn幾乎沒有太大差異,企業(yè)場景幾乎可以忽略,性能夠的話,可以無腦和textcnn做概率層面的模型融合。
rcnn:幾乎可以忽略,企業(yè)場景幾乎可以忽略提升。
bert:比textcnn/textrnn會有不同幅度提升,可以適應(yīng)更小的訓(xùn)練數(shù)據(jù),但是性能和復(fù)雜度都不太適合做baseline。能用好bert的可能也不在這篇文章的適用人群范圍了。
[HAN]( Hierarchical Attention Networks for Document Classification):雙層的attention,文本較長的可以作為baseline非常不錯。
好了,模型介紹到此結(jié)束。
文本分類Trick
這里,我來說一下,具體應(yīng)用場景下我們一般關(guān)注什么樣的問題。以及我們有哪些解決對策。個人做的應(yīng)用偏向于短文本,所以trick也會偏向短文本。
思考1:訓(xùn)練數(shù)據(jù)量、標(biāo)簽量。
每個標(biāo)簽需要有足夠豐富度,主觀評估一個新case進(jìn)來,要能找到大概相似的問法(不要幻想模型可以無中生有,以上模型都不具備此能力)。
評估訓(xùn)練集準(zhǔn)確率,不要有太多臟數(shù)據(jù)。
標(biāo)簽是否變化,變化標(biāo)簽需要定時訓(xùn)練,增量數(shù)據(jù)來源需要有保障。
每個標(biāo)簽下的數(shù)據(jù)量:1w條通常就夠了。(這條針對對數(shù)據(jù)量沒概念的同學(xué))
記?。何谋痉诸悾辽僭诙涛谋痉诸愊?,數(shù)據(jù)決定一切,99%的質(zhì)的提升都來自數(shù)據(jù)的處理。
思考2:數(shù)據(jù)來源
用戶行為數(shù)據(jù):如果用戶的行為能抽取出高質(zhì)量的標(biāo)簽,那這一定是個非常nice的來源,他可以是應(yīng)付動態(tài)。
業(yè)務(wù)標(biāo)注:人工標(biāo)注,需要一定的人力成本,可以提供好用的工具幫助業(yè)務(wù)快速標(biāo)注。
無標(biāo)注抽?。和ǔN覀冇写罅繜o標(biāo)注的數(shù)據(jù),這些數(shù)據(jù)是真實(shí)的,所以要好好利用這部分,正則、規(guī)則、模型預(yù)訓(xùn)練抽取都是能有非常大提升的地方。
思考3:評估與調(diào)整
主觀評估:做業(yè)務(wù)不是打比賽,不是一個死的東西,你需要知道你模型能干啥,textcnn來說,就是能抽取詞語特性,有類似的訓(xùn)練集數(shù)據(jù)大多都是能出結(jié)果的。不要單瞅著一個top1準(zhǔn)確率,要看badcase是什么原因造成的,能從數(shù)據(jù)層處理的,就在數(shù)據(jù)層處理。
關(guān)注80%:企業(yè)中的文本分類都多都是類目分布不均勻的,不要太在意一些很少很少的case,先把頭部的做好。
模型調(diào)參:參數(shù)先要自己摸一摸,知道大致的參數(shù)規(guī)模。參數(shù)規(guī)模盡可能大就好了,這里會有個邊際效應(yīng)。比如textcnn filter_num我一般設(shè)置200-400,少了不夠,多了無用。不管選取哪個baseline,都需要把模型給玩熟悉,他能干啥,不能干啥要知道,然后去就搞數(shù)據(jù)。
關(guān)注過擬合:需要大致看下訓(xùn)練集和測試機(jī)的loss差異,注意不要過擬合。
關(guān)于模型優(yōu)化、流程優(yōu)化
技術(shù)層面的東西講完了,留下一些自己的思考,當(dāng)作和大家討論。
作為一項(xiàng)基礎(chǔ)技術(shù),文本分類服務(wù)很多業(yè)務(wù)。人力有限的情況下,很難做一些定制化的優(yōu)化。所以模型的更新一定是有較大提升的,即在性能無影響的情況下,所有場景都能比較穩(wěn)步提升。當(dāng)然這并不容易。但是可以嘗試做出一些新東西,更貼近業(yè)務(wù)或者其他更易用的模型。
模型提升點(diǎn):
文本分類可以融入特征:比如加入問題的類目、品牌、甚至用戶等信息,豐富文本分類的信息。這里就需要設(shè)計一下網(wǎng)絡(luò)結(jié)果,適應(yīng)這種特征的融入。
更自然語言的模型:比如業(yè)務(wù)同學(xué)的觀點(diǎn)都很抽象,是否可以通過半閱讀理解的形式補(bǔ)充。舉個例子:生鮮壞果是一個常見的客服問題。很多非生鮮的可能會被錯判,業(yè)務(wù)是否能加一個選項(xiàng):生鮮水果。通過這個詞選項(xiàng)能優(yōu)化部分case。這部分可以通過語義向量的引入解決。
遷移學(xué)習(xí):BERT的遷移效果非常好,各個業(yè)務(wù)如果有類似的話,遷移也是個非常不錯的優(yōu)化點(diǎn)。
實(shí)體化:詞語實(shí)體化一直是比較想探索的模塊,詞語實(shí)體化后能大大減少訓(xùn)練數(shù)據(jù)的復(fù)雜度,并且具有更高的泛化性和可控性。
流程提升點(diǎn):數(shù)據(jù)為王的模型下,如何讓打標(biāo)的人更快的達(dá)標(biāo)也是個技術(shù)活
提供近義詞:水果->蘋果、梨子...能自動出來當(dāng)然更好啦,這也比較容易用w2v實(shí)現(xiàn)。
提供近似語句:模型可以預(yù)測出相似的句子來輔助標(biāo)注。
聚類:幫助發(fā)現(xiàn)一些新的類簇,很多標(biāo)簽可能需要新搞一個。