【NLP從零入門(mén)】預(yù)訓(xùn)練時(shí)代下独撇,深度學(xué)習(xí)模型的文本分類算法(超多干貨,小白友好躁锁,內(nèi)附實(shí)踐代碼和文本分類常見(jiàn)中文數(shù)據(jù)集)

如今NLP可以說(shuō)是預(yù)訓(xùn)練模型的時(shí)代纷铣,希望借此拋磚引玉,能多多交流探討當(dāng)前預(yù)訓(xùn)練模型在文本分類上的應(yīng)用战转。

1. 任務(wù)介紹與實(shí)際應(yīng)用

文本分類任務(wù)是自然語(yǔ)言處理(NLP)中最常見(jiàn)搜立、最基礎(chǔ)的任務(wù)之一,顧名思義槐秧,就是對(duì)給定的一個(gè)句子或一段文本使用文本分類器進(jìn)行分類啄踊。根據(jù)文本分類的類別定義,可以分為二分類/多分類刁标、多標(biāo)簽颠通、層次分類,以下面的新聞分類為例:

- 二分類/多分類也即標(biāo)簽集中有兩個(gè)或以上的標(biāo)簽類別膀懈,每個(gè)樣本有且只有一個(gè)標(biāo)簽

- 多標(biāo)簽也即樣本可能有一個(gè)或多個(gè)標(biāo)簽

- 層次分類是特殊的多分類或多標(biāo)簽任務(wù)顿锰,數(shù)據(jù)集的標(biāo)簽之間具有層次關(guān)系。比如下圖樣本的一級(jí)標(biāo)簽是體育启搂,二級(jí)標(biāo)簽是足球硼控,體育為足球的父標(biāo)簽。

文本分類類別

文本分類廣泛應(yīng)用于長(zhǎng)短文本分類胳赌、情感分析牢撼、新聞分類、事件類別分類匈织、政務(wù)數(shù)據(jù)分類、商品信息分類、商品類目預(yù)測(cè)缀匕、文章分類纳决、論文類別分類、專利分類乡小、案件描述分類阔加、罪名分類、意圖分類满钟、論文專利分類胜榔、郵件自動(dòng)標(biāo)簽、評(píng)論正負(fù)識(shí)別湃番、藥物反應(yīng)分類夭织、對(duì)話分類、稅種識(shí)別吠撮、來(lái)電信息自動(dòng)分類尊惰、投訴分類、廣告檢測(cè)泥兰、敏感違法內(nèi)容檢測(cè)弄屡、內(nèi)容安全檢測(cè)、輿情分析鞋诗、話題標(biāo)記等日嘲蚪荩或?qū)I(yè)領(lǐng)域中。

- 情感分析:情感分析是針對(duì)數(shù)據(jù)的情感傾向進(jìn)行分類削彬,可以是二分類(正向或負(fù)向)或者是多分類(按照不同的細(xì)粒度劃分情感)全庸,情感分析在影音評(píng)論、商品評(píng)價(jià)吃警、輿情分析糕篇、股民基金情感分析等都有重要的應(yīng)用。

- 主題分類:主題分類也是常見(jiàn)的文本分類應(yīng)用場(chǎng)景酌心,根據(jù)內(nèi)容或標(biāo)題進(jìn)行分類拌消,即可以是多分類、多標(biāo)簽也可以是層次分類安券,根據(jù)實(shí)際場(chǎng)景需要進(jìn)行標(biāo)簽體系構(gòu)造和劃分墩崩。

- 金融數(shù)據(jù)分類:金融數(shù)據(jù)繁多復(fù)雜,文本分類可以應(yīng)用于金融新聞分類侯勉、股民評(píng)論情感分析鹦筹、基金類型分類、金融問(wèn)答分類址貌、金融情緒分析等多種任務(wù)铐拐,有助于從大量數(shù)據(jù)挖掘有效信息徘键。

- 醫(yī)療數(shù)據(jù)分類:目前,文本分類已有許多醫(yī)療領(lǐng)域的成功應(yīng)用遍蟋,如藥物反應(yīng)分類吹害、癥狀和患者問(wèn)題分類,健康問(wèn)答分類虚青、電子病歷分類它呀、藥品文本分類等等。

- 法律數(shù)據(jù)分類:文本分類在法律領(lǐng)域也有許多成果的探索棒厘,如罪名分類纵穿、案情要素分類、刑期預(yù)測(cè)奢人、法律條文分類谓媒、法律情感分析、判決預(yù)測(cè)达传、法律文本挖掘篙耗、合規(guī)審查等等,幫助我們從海量的法律數(shù)據(jù)抽取有效信息宪赶。

2. 文本分類中文數(shù)據(jù)集

2.1 多分類數(shù)據(jù)集

THUCNews新聞分類數(shù)據(jù)集: http://thuctc.thunlp.org/

百科問(wèn)答分類數(shù)據(jù)集: https://github.com/brightmart/nlp_chinese_corpus#3%E7%99%BE%E7%A7%91%E7%B1%BB%E9%97%AE%E7%AD%94json%E7%89%88baike2018qa

頭條新聞標(biāo)題數(shù)據(jù)集(tnews):https://github.com/aceimnorstuvwxz/toutiao-text-classfication-dataset

復(fù)旦新聞文本數(shù)據(jù)集:https://www.heywhale.com/mw/dataset/5d3a9c86cf76a600360edd04

IFLYTEK app應(yīng)用描述分類數(shù)據(jù)集:https://storage.googleapis.com/cluebenchmark/tasks/iflytek_public.zip

CAIL2018 刑期預(yù)測(cè)宗弯、法條預(yù)測(cè)、罪名預(yù)測(cè) https://cail.oss-cn-qingdao.aliyuncs.com/CAIL2018_ALL_DATA.zip

CAIL 2022事件檢測(cè):https://cloud.tsinghua.edu.cn/d/6e911ff1286d47db8016/

2.2 情感分類數(shù)據(jù)集

亞馬遜商品評(píng)論情感數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/yf_amazon/intro.ipynb

財(cái)經(jīng)新聞情感分類數(shù)據(jù)集: https://github.com/wwwxmu/Dataset-of-financial-news-sentiment-classification

ChnSentiCorp 酒店評(píng)論情感分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/tree/master/datasets/ChnSentiCorp_htl_all

外賣(mài)評(píng)論情感分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/waimai_10k/intro.ipynb

weibo情感二分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/weibo_senti_100k/intro.ipynb

weibo情感四分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/simplifyweibo_4_moods/intro.ipynb

商品評(píng)論情感分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/online_shopping_10_cats/intro.ipynb

電影評(píng)論情感分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/dmsc_v2/intro.ipynb

大眾點(diǎn)評(píng)分類數(shù)據(jù)集:https://github.com/SophonPlus/ChineseNlpCorpus/blob/master/datasets/yf_dianping/intro.ipynb

2.3 多標(biāo)簽數(shù)據(jù)集

學(xué)生評(píng)語(yǔ)分類數(shù)據(jù)集:https://github.com/FBI1314/textClassification/tree/master/multilabel_text_classfication/data

CAIL2019婚姻要素識(shí)別:https://aistudio.baidu.com/aistudio/projectdetail/3996601

2.4 層次分類數(shù)據(jù)集

頭條新聞標(biāo)題分類(tnews的升級(jí)版):https://github.com/aceimnorstuvwxz/toutiao-multilevel-text-classfication-dataset

網(wǎng)頁(yè)層次分類數(shù)據(jù)集:https://csri.scu.edu.cn/info/1012/2827.htm

Chinese Medical Intent Dataset(CMID): ?https://github.com/liutongyang/CMID

2020語(yǔ)言與智能技術(shù)競(jìng)賽事件分類:https://github.com/percent4/keras_bert_multi_label_cls/tree/master/data

3. 預(yù)訓(xùn)練模型簡(jiǎn)介

隨著Transformer 和 Bert 的出現(xiàn)搂妻,NLP模型大步跨向了預(yù)訓(xùn)練模型的時(shí)代蒙保,剛?cè)腴T(mén)的NLP的同學(xué)可能會(huì)疑惑什么是預(yù)訓(xùn)練模型?預(yù)訓(xùn)練模型和文本分類模型是什么關(guān)系欲主?我該使用什么預(yù)訓(xùn)練模型邓厕?只有CPU能訓(xùn)練嗎?怎么開(kāi)源加載預(yù)訓(xùn)練模型扁瓢?

什么是預(yù)訓(xùn)練模型详恼?

通常來(lái)說(shuō)模型復(fù)雜度越高參數(shù)越多,模型越能擬合復(fù)雜的問(wèn)題引几,模型的預(yù)測(cè)精度越高昧互。隨著深度學(xué)習(xí)的發(fā)展,模型參數(shù)的數(shù)量飛速增長(zhǎng)伟桅。為了訓(xùn)練這些參數(shù)敞掘,需要更大的數(shù)據(jù)集來(lái)避免過(guò)擬合,而構(gòu)建大規(guī)模的標(biāo)注數(shù)據(jù)集非常困難(成本過(guò)高楣铁,標(biāo)數(shù)據(jù)的苦?_?)玖雁。所以目前的做法是先在超大規(guī)模的語(yǔ)料采用無(wú)監(jiān)督或者弱監(jiān)督的方式訓(xùn)練模型,模型能夠獲得語(yǔ)言語(yǔ)義盖腕、語(yǔ)法相關(guān)的知識(shí)赫冬,然后再用具體的任務(wù)數(shù)據(jù)訓(xùn)練浓镜,這樣的模型稱為預(yù)訓(xùn)練模型。

預(yù)訓(xùn)練模型首先會(huì)將輸入的句子使用分成多個(gè)token劲厌,英文句子通常是subword-level的分詞策略竖哩,中文句子由于最小的單位就是字,所以通常是一個(gè)字符即為一個(gè)token脊僚,例如句子 "今天是個(gè)好天氣!" 切分為8個(gè)token ['今', '天', '是', '個(gè)', '好', '天', '氣', '!'];在多語(yǔ)言模型中也有將詞作為token的情況遵绰,還是上面的例子辽幌,句子切分為5個(gè)token ['今天', '是個(gè)', '好', '天氣', '!']。(分詞細(xì)節(jié)可以參見(jiàn) tokenizers小結(jié))

此外椿访,模型會(huì)在每個(gè)輸入的開(kāi)頭加入一個(gè)[CLS]的token乌企,在句子對(duì)間加入一個(gè)[SEP]的token。如下圖所示成玫,每個(gè)輸入token會(huì)映射為一個(gè)對(duì)應(yīng)的特征表示加酵,經(jīng)過(guò)預(yù)訓(xùn)練模型得到每個(gè)token的輸出特征表示,token輸出的特征表示會(huì)用于不同的任務(wù)哭当,[CLS]的輸出特征通常被認(rèn)為是整個(gè)句子的語(yǔ)義表示猪腕。

這里以BERT論文內(nèi)示意圖為例,目前絕大多數(shù)基于Transformer的預(yù)訓(xùn)練模型結(jié)構(gòu)都是相似的

接下來(lái)就是預(yù)訓(xùn)練钦勘,不同預(yù)訓(xùn)練模型的預(yù)訓(xùn)練方式略有不同陋葡,常用的無(wú)監(jiān)督任務(wù)包括MLM和NSP任務(wù):

Mask Language Model(MLM):掩碼預(yù)測(cè)任務(wù),也即將一個(gè)句子中某一個(gè)token用掩碼[MASK]替換彻采,然后讓模型預(yù)測(cè)出這個(gè)token腐缤。例如:"今天出太陽(yáng)了,是個(gè)[MASK]天氣"肛响,希望模型預(yù)測(cè)[MASK] -> 好岭粤。具體來(lái)說(shuō)就是用[MASK]的模型輸出特征,后接一個(gè)分類器進(jìn)行分類特笋。

Next sentence Prediction(NSP):從文章中摘取兩個(gè)句子A和B剃浇,50%是上下文關(guān)系,50%不是雹有,訓(xùn)練模型預(yù)測(cè)句子A和句子B是否為上下文關(guān)系偿渡,也即在[CLS]的模型輸出特征后接一個(gè)分類器進(jìn)行二分類。

關(guān)于預(yù)訓(xùn)練模型結(jié)構(gòu)和訓(xùn)練細(xì)節(jié)就不在這里贅述了霸奕,現(xiàn)在已經(jīng)有許多寫(xiě)的很好文章講解溜宽。

預(yù)訓(xùn)練模型和文本分類模型關(guān)系?

預(yù)訓(xùn)練模型學(xué)習(xí)到的文本語(yǔ)義表示能夠避免從零開(kāi)始訓(xùn)練模型质帅,他們之間的關(guān)系可以直觀地理解為适揉,預(yù)訓(xùn)練模型已經(jīng)懂得了相關(guān)句法留攒、語(yǔ)義的語(yǔ)言知識(shí),用具體任務(wù)數(shù)據(jù)訓(xùn)練使得預(yù)訓(xùn)練模型”更懂”這個(gè)任務(wù)嫉嘀,在預(yù)訓(xùn)練過(guò)程中學(xué)到的知識(shí)基礎(chǔ)使學(xué)習(xí)文本分類任務(wù)事半功倍炼邀。

以BERT論文內(nèi)示意圖為例,先對(duì)模型進(jìn)行預(yù)訓(xùn)練剪侮,在預(yù)訓(xùn)練模型的參數(shù)基礎(chǔ)上用具體任務(wù)的訓(xùn)練數(shù)據(jù)微調(diào)

我該使用什么預(yù)訓(xùn)練模型拭宁?

目前已經(jīng)有許多開(kāi)源的預(yù)訓(xùn)練集模型,雖然英文預(yù)訓(xùn)練模型有GLUE 榜單瓣俯,中文預(yù)訓(xùn)練模型有CLUE榜單杰标,多語(yǔ)言模型有XTREME榜單,但選擇模型還是要根據(jù)具體的任務(wù)和硬件條件進(jìn)行選擇彩匕。我中文分類任務(wù)做的比較多腔剂,我常用的預(yù)模型包括 ERNIE (多尺寸模型選擇真的香)、Roformer-v2驼仪、Mengzi掸犬、RoBERTa-wwm-ext。

只有CPU能訓(xùn)練嗎绪爸?

能湾碎,但耗時(shí)比較長(zhǎng)。CPU開(kāi)發(fā)者推薦使用層數(shù)比較少的小模型奠货,或選擇白嫖一些在線AI平臺(tái)免費(fèi)算力比如AI Studio(每天白嫖8小時(shí)V100胜茧,Paddle)、Google Colab(要翻墻仇味,Pytorch Tensorflow都支持)呻顽。

怎么加載開(kāi)源的預(yù)訓(xùn)練模型?

目前最方便的方法就是在PaddleNLP(Paddle)或 HuggingFace(Pytorch)直接根據(jù)模型名稱使用AutoModel的方式調(diào)用丹墨,也可以在github上找開(kāi)源模型參數(shù)下載鏈接廊遍。

model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)

4. 基于預(yù)訓(xùn)練模型的文本分類算法

講了這么多,終于到文本分類算法介紹了贩挣。文本分類算法最最常用的就是模型微調(diào)喉前,當(dāng)然也還包括在最近討論度很高的預(yù)訓(xùn)練新范式提示學(xué)習(xí)(Prompt Tuning),之前看到基于檢索的方法做文本分類也還蠻有意思的王财。

4.1 常用方法——預(yù)訓(xùn)練模型微調(diào)

基于預(yù)訓(xùn)練模型微調(diào)的想法非常簡(jiǎn)單直接卵迂,也即將[CLS]的模型輸出特征表示作為輸入句子的特征表示,通常為768維或1024維的向量绒净,然后接入一個(gè)線性分類器(通常為單層全連接層)進(jìn)行文本分類任務(wù)訓(xùn)練见咒。

基于預(yù)訓(xùn)練模型微調(diào)的文本分類示意圖

4.2 小樣本——提示學(xué)習(xí)(Prompt Tuning)

近來(lái),提示學(xué)習(xí)的火熱挂疆,主要還是在小樣本場(chǎng)景的優(yōu)秀表現(xiàn)改览。

提示學(xué)習(xí)的主要思想是將文本分類任務(wù)轉(zhuǎn)換為構(gòu)造提示(Prompt)中掩碼 [MASK] 的分類預(yù)測(cè)任務(wù)下翎,也即在掩碼 [MASK]模型輸出特征后接入線性層分類器預(yù)測(cè)掩碼位置可能的字或詞。提示學(xué)習(xí)使用待預(yù)測(cè)字的預(yù)訓(xùn)練向量來(lái)初始化分類器參數(shù)(如果待預(yù)測(cè)的是詞宝当,則為詞中所有字的預(yù)訓(xùn)練向量平均值)视事,充分利用預(yù)訓(xùn)練語(yǔ)言模型學(xué)習(xí)到的特征和標(biāo)簽文本,從而降低樣本需求庆揩。

我們以下圖情感二分類任務(wù)為例來(lái)具體介紹提示學(xué)習(xí)流程俐东。在輸入文本后加入構(gòu)造提示"我[MASK]喜歡。"订晌,將"負(fù)向"或"正向"的情感二分類任務(wù)轉(zhuǎn)化為掩碼[MASK]"不"或"很"的二分類任務(wù)犬性,構(gòu)造提示[MASK]分類器預(yù)測(cè)分類與原始標(biāo)簽的對(duì)應(yīng)關(guān)系為"不"->"負(fù)向" 、"很"->"正向" 腾仅。具體實(shí)現(xiàn)方法是在掩碼[MASK]的輸出向量后接入線性分類器(二分類),然后用"不"和"很"的預(yù)訓(xùn)練向量來(lái)初始化分類器進(jìn)行訓(xùn)練套利。

預(yù)訓(xùn)練模型微調(diào)和提示學(xué)習(xí)對(duì)比圖

4.3 創(chuàng)新方法——檢索

除了以上兩種方法推励,還試過(guò)用檢索的方式做文本分類。檢索的方法適合標(biāo)簽類別較多或者是標(biāo)簽類別不固定(有時(shí)候會(huì)新增標(biāo)簽)肉迫。

基于檢索的方法做文本分類有兩種思路验辞,一種是把標(biāo)簽集作為召回庫(kù),一種是把訓(xùn)練數(shù)據(jù)作為召回庫(kù)喊衫。這兩種思路在訓(xùn)練階段的方法是一致的跌造,可以用雙塔模型(也就是兩個(gè)預(yù)訓(xùn)練模型),一個(gè)模型輸入句子族购,另一個(gè)模型輸入標(biāo)簽壳贪,進(jìn)行訓(xùn)練拉近句子和標(biāo)簽的[CLS]輸出特征表示之間距離。在預(yù)測(cè)階段寝杖,召回集有所不同:

思路一把標(biāo)簽作為召回集违施,每個(gè)標(biāo)簽的向量表示(也即[CLS]輸出特征表示)是固定的,我們構(gòu)建一個(gè)標(biāo)簽向量庫(kù)瑟幕。我們用待預(yù)測(cè)的句子的向量在標(biāo)簽向量庫(kù)進(jìn)行檢索磕蒲,找到特征相似度最大的標(biāo)簽,也即為待預(yù)測(cè)句子的標(biāo)簽只盹。

檢索方式做文本分類思路一

思路二則是把訓(xùn)練數(shù)據(jù)作為召回集辣往,構(gòu)建一個(gè)訓(xùn)練集文本的向量庫(kù),我們用待預(yù)測(cè)的句子的向量表示(也即[CLS]輸出特征表示)在文本向量庫(kù)進(jìn)行檢索殖卑,找到特征相似度最大的訓(xùn)練集文本站削,待預(yù)測(cè)句子的標(biāo)簽也即召回文本的標(biāo)簽。

5. 文本分類實(shí)戰(zhàn)

接下來(lái)將帶你快速使用PaddleNLP完成實(shí)現(xiàn)多分類孵稽、多標(biāo)簽钻哩、層次分類任務(wù)屹堰。你可以仿照數(shù)據(jù)集格式,替換數(shù)據(jù)集目錄街氢,直接訓(xùn)練你自己的數(shù)據(jù):

- 多分類實(shí)踐代碼notebook(只有一個(gè)標(biāo)簽):https://aistudio.baidu.com/aistudio/projectdetail/4535085

- 多標(biāo)簽實(shí)踐代碼notebook(有一個(gè)或多個(gè)標(biāo)簽):https://aistudio.baidu.com/aistudio/projectdetail/4540529

- 層次分類實(shí)踐代碼notebook(標(biāo)簽間存在層次關(guān)系):https://aistudio.baidu.com/aistudio/projectdetail/4540619

最好用GPU跑扯键,比較快,平臺(tái)有白嫖的資源

代碼詳解 ?? ? 施工ing

6. 實(shí)踐經(jīng)驗(yàn)總結(jié)

6.1 數(shù)據(jù)為王時(shí)代

在實(shí)踐代碼開(kāi)始之前更想討論一下數(shù)據(jù)珊肃,我個(gè)人的實(shí)踐經(jīng)驗(yàn)來(lái)說(shuō)荣刑,提高文本分類精度最快、最有效的方法是既不是模型伦乔,也不是算法調(diào)參厉亏,而是數(shù)據(jù)質(zhì)量。文本分類總的來(lái)說(shuō)不是個(gè)復(fù)雜的自然語(yǔ)言處理任務(wù)(甚至可以說(shuō)是最基本的任務(wù))烈和,如何更好地進(jìn)行數(shù)據(jù)標(biāo)簽地劃分減少混淆重合情況和高質(zhì)量的數(shù)據(jù)標(biāo)注(正確標(biāo)注爱只,標(biāo)準(zhǔn)統(tǒng)一,且訓(xùn)練集與預(yù)測(cè)數(shù)據(jù)分布一致)是得到高精度的文本分類模型的關(guān)鍵招刹。

- 標(biāo)簽體系劃分恬试。文本分類任務(wù)的標(biāo)簽體系依具體的任務(wù)而定,沒(méi)有固定標(biāo)準(zhǔn)疯暑,一個(gè)清晰分界明確的標(biāo)簽體系有利于數(shù)據(jù)標(biāo)注和分類训柴。如果是多分類任務(wù)的話盡量減少標(biāo)簽之間范圍重合,這樣有助于標(biāo)注標(biāo)準(zhǔn)的統(tǒng)一妇拯,減少出現(xiàn)在標(biāo)注的時(shí)候相似的樣本有的被標(biāo)記為A幻馁,有的標(biāo)記為B,降低準(zhǔn)確率越锈。

- 標(biāo)注正確仗嗦。"Garbage in, garbage out(垃圾進(jìn),垃圾出)"甘凭,如果訓(xùn)練數(shù)據(jù)包含很多錯(cuò)誤儒将,可想而知模型不會(huì)有很好的預(yù)測(cè)結(jié)果。人工檢查所有數(shù)據(jù)標(biāo)注是否準(zhǔn)確对蒲,成本不低钩蚊,因此可以通過(guò)一些算法計(jì)算訓(xùn)練數(shù)據(jù)對(duì)模型的擾動(dòng),來(lái)篩選出臟數(shù)據(jù)進(jìn)行重新標(biāo)注蹈矮。(這點(diǎn)之后會(huì)寫(xiě)新的文章細(xì)講)

- 訓(xùn)練數(shù)據(jù)和預(yù)測(cè)數(shù)據(jù)分布一致砰逻。深度學(xué)習(xí)模型可以理解為擬合訓(xùn)練數(shù)據(jù)的分布,雖然大規(guī)模語(yǔ)料預(yù)訓(xùn)練泛鸟,能夠有效幫助模型有更好的泛化能力蝠咆,但只有模型學(xué)習(xí)與預(yù)測(cè)場(chǎng)景相似的訓(xùn)練樣本,才能在預(yù)測(cè)數(shù)據(jù)有更好的表現(xiàn)。在實(shí)踐場(chǎng)景中遇到許多效果不好的基本是這個(gè)問(wèn)題刚操,比如遇到多標(biāo)簽分類訓(xùn)練集的數(shù)據(jù)只有一個(gè)標(biāo)簽闸翅,模型理所應(yīng)當(dāng)傾向于只預(yù)測(cè)一個(gè)標(biāo)簽,而測(cè)試集有多個(gè)標(biāo)簽菊霜,效果可想而知不太好坚冀。

- 文本數(shù)據(jù)精選有效信息。目前預(yù)訓(xùn)練模型通常支持的max_length最大為512鉴逞,有些模型可能會(huì)應(yīng)用一些策略使模型能夠接受輸入長(zhǎng)度最長(zhǎng)2048记某,當(dāng)然還有一些支持長(zhǎng)文本的模型例如Longformer,ERNIE-Doc构捡。但輸入文本過(guò)長(zhǎng)液南,容易爆顯存,訓(xùn)練速度過(guò)慢勾徽,并且由于文本包含過(guò)多無(wú)用的信息干擾使模型效果變差滑凉。因?yàn)槲谋緮?shù)據(jù)十分多樣,如何精選文本數(shù)據(jù)需要按實(shí)際數(shù)據(jù)而定喘帚,常見(jiàn)方法按句號(hào)對(duì)句子截?cái)喑╂ⅰ⒗靡恍┱齽t式匹配的方法篩選有效文本內(nèi)容等。

- 充足的數(shù)據(jù)啥辨。雖然文本分類在零樣本和小樣本領(lǐng)域有許多探索,但效果暫時(shí)還是很難超越在充足訓(xùn)練數(shù)據(jù)進(jìn)行微調(diào)盯腌。充足的數(shù)據(jù)優(yōu)先的方法當(dāng)然是選擇數(shù)據(jù)標(biāo)注的方式溉知,數(shù)據(jù)增強(qiáng)策略也是常見(jiàn)擴(kuò)充數(shù)據(jù)的方法。

總而言之腕够,高質(zhì)量的訓(xùn)練數(shù)據(jù)是高精度文本分類模型的關(guān)鍵级乍。

6.2 實(shí)踐經(jīng)驗(yàn)記錄

現(xiàn)實(shí)場(chǎng)景中的數(shù)據(jù)并不總是那么理想,需要根據(jù)一些實(shí)際情況進(jìn)行靈活變化帚湘。使用的也許不一定是最好的解法玫荣,歡迎各位大佬們討論。

- 文本分類的類別非常多大诸,幾百上千甚至萬(wàn)級(jí)別捅厂。這時(shí)候用預(yù)訓(xùn)練模型微調(diào)的方法,效果表現(xiàn)可能非常一般甚至可能難以收斂资柔。如果還要使用預(yù)訓(xùn)練模型微調(diào)的話焙贷,建議是使用多個(gè)分類模型,先訓(xùn)練一個(gè)文本分類模型(大類分類器)把數(shù)據(jù)分為具體的大類贿堰,每個(gè)大類再訓(xùn)練一個(gè)文本分類模型(子類分類器)對(duì)樣本類別進(jìn)行預(yù)測(cè)(缺點(diǎn)就是要訓(xùn)練多個(gè)分類器)辙芍;另一個(gè)方法就是用檢索的方法去做,不再是分類,而是召回與文本最相似的標(biāo)簽故硅。

- 多分類任務(wù)預(yù)測(cè)可能會(huì)出現(xiàn)訓(xùn)練集沒(méi)有出現(xiàn)的類別庶灿,希望可以預(yù)測(cè)成"其他"。前面也提到訓(xùn)練數(shù)據(jù)最好與預(yù)測(cè)數(shù)據(jù)一致吃衅,否則效果可能有限往踢,但現(xiàn)實(shí)場(chǎng)景還是很難避免。最直接的想法是在多分類中構(gòu)建一個(gè)"其他"的類別捐晶,但這種方法也有缺點(diǎn)菲语,比如就是訓(xùn)練的時(shí)候一點(diǎn)其他類別的數(shù)據(jù)沒(méi)有,另外也可能由于"其他"類別的數(shù)據(jù)分布差異很大惑灵,導(dǎo)致這個(gè)類別預(yù)測(cè)效果較差山上。最終選擇的實(shí)踐方法是使用多標(biāo)簽的方式進(jìn)行訓(xùn)練,然后預(yù)測(cè)時(shí)候選擇置信度最高的類別作為標(biāo)簽類別英支,如果置信度低于閾值(比如0.5)佩憾,則這個(gè)類別為"其他"。訓(xùn)練的時(shí)候干花,如果有"其他"類別的數(shù)據(jù)妄帘,則該數(shù)據(jù)的標(biāo)簽為[0,0,0...,0]。

- 關(guān)于調(diào)參池凄。超參數(shù)設(shè)置我自己常用的是learning rate [1e-5,3e-5,5e-5]抡驼,batch size[16, 24, 32],使用早停策略肿仑,選擇開(kāi)發(fā)集精度最高的模型參數(shù)致盟。如果要進(jìn)一步提高精度的話,會(huì)選定epoch數(shù)(不使用早停策略)應(yīng)用warmup策略尤慰。個(gè)人感覺(jué)馏锡,超參設(shè)置對(duì)模型效果影響不大(除非把batch size設(shè)為1,learning rate設(shè)的超大或超小這種)伟端,warmup策略也是小幅度的提高杯道,在文本分類任務(wù)通過(guò)調(diào)參實(shí)現(xiàn)精度10%幅度這種大提高的可能性非常小。(參考:CLUE超參搜參結(jié)果)

7.參考

BERT 論文: https://arxiv.org/pdf/1810.04805.pdf

PaddleNLP文本分類應(yīng)用:PaddleNLP/applications/text_classification at develop · PaddlePaddle/PaddleNLP

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末责蝠,一起剝皮案震驚了整個(gè)濱河市党巾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霜医,老刑警劉巖昧港,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異支子,居然都是意外死亡创肥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叹侄,“玉大人巩搏,你說(shuō)我怎么就攤上這事≈捍” “怎么了轨功?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵番电,是天一觀的道長(zhǎng)焰扳。 經(jīng)常有香客問(wèn)我拾徙,道長(zhǎng),這世上最難降的妖魔是什么飘哨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任胚想,我火速辦了婚禮,結(jié)果婚禮上芽隆,老公的妹妹穿的比我還像新娘浊服。我一直安慰自己,他們只是感情好胚吁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布牙躺。 她就那樣靜靜地躺著,像睡著了一般腕扶。 火紅的嫁衣襯著肌膚如雪孽拷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天半抱,我揣著相機(jī)與錄音脓恕,去河邊找鬼。 笑死代虾,一個(gè)胖子當(dāng)著我的面吹牛进肯,可吹牛的內(nèi)容都是我干的激蹲。 我是一名探鬼主播棉磨,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼学辱!你這毒婦竟也來(lái)了乘瓤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤策泣,失蹤者是張志新(化名)和其女友劉穎衙傀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體萨咕,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡统抬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聪建。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钙畔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出金麸,到底是詐尸還是另有隱情擎析,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布挥下,位于F島的核電站揍魂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棚瘟。R本人自食惡果不足惜现斋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望解取。 院中可真熱鬧步责,春花似錦、人聲如沸禀苦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)振乏。三九已至蔗包,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間慧邮,已是汗流浹背调限。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留误澳,地道東北人耻矮。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像忆谓,于是被迫代替她去往敵國(guó)和親裆装。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容