訂閱
糾錯
加入自媒體

今天淺談一下「繼續預訓練」

2022-07-27 10:58
程序媛驛站
關注

最近和同事聊天,聊到一次面試時,同事作為面試官,提問了一個小問題:「如果你擁有的預訓練的語料和下游任務的語料分布差異很大,你會怎么做」

「那他答上來了嗎」我問到

「沒有」他說

一、基本概念

繼續預訓練是什么?

常見為:

· 基于大規模預訓練語言模型(如bert/ernie/gpt等),針對(或使用)下游NLP任務的特定語料,對模型進行領域/任務的繼續訓練。范式的更迭可以表示為:

· pre-training + fine-tuning

· pre-training + continual pre-training + fine-tuning

為什么要繼續預訓練?

繼續預訓練的目的:

· 為了得到適應不同行業/任務領域的預訓練模型,提升下游任務的效果

什么時候需要繼續預訓練?

· 預訓練(pre-train)的語料與下游任務(finetune)語料的【數據分布/領域差異】大時

· 例如:現在你的任務是從法律文件中做NER任務,但你使用的bert模型為普通的bert-base-chinese,那么如果想要達到一個下游任務上更好的效果,你最好使用大量的法律領域語料來繼續預訓練從而得到一個適應法律領域的預訓練模型。

那么,領域差距是怎么造成的?

· 領域差距的本質,究其根本原因,還是數據問題。

· 本質:詞匯/n-gram不匹配

· 領域差距主要是由特定領域的n-gram的不同以及其出現的上下文的不同造成的

· 不同領域的token/word/n-gram的不同直接導致了語言模型可以在相應領域語料中獲取的embedding/feature表征的不同,因此在通用領域上預訓練好的模型feature在特定領域語料上使用時往往不會達到最優的效果。

二、如何繼續預訓練?

數據設計直接設計數據是解決數據的領域差異的一種通用且高效的方法(畢竟領域差距的本質,究其根本原因,還是數據問題)。

· 挖掘領域數據:

 · 【任務適應/領域適應】方法

 · 如:Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks

 · BioBERT: a pre-trained biomedical language representation model for biomedical text mining

 · SCIBERT: A Pretrained Language Model for Scientific Text

 · FinBERT: Financial Sentiment Analysis with Pre-trained Language Models

 · 設計訓練方法:

 · 新詞挖掘 + whole word masking

 · 行業/領域新詞挖掘

 · 知識增強的mlm

 · 實體 mask

 · 如:ERNIE2.0

 · 數據增強:

 · UDA(Unsupervised Data Augmentation)

 · 對抗訓

 · 練偽標簽(半監督)

 · 對比學習(infoNCE-loss)

參數設計

· 參數平滑泛化:

 · SWA(Stochastic Moving Average,隨機滑動平均)和EMA(Exponential Moving Average,指數滑動平均)

模型設計

· 模型學習使用領域知識:

· 固定原始PLM,額外訓練一個adapter去學習/利用領域知識

· 如:Taming Pre-trained Language Models with N-gram Representations for Low-Resource Domain Adaptation

· 模型適應不同任務:

· 多任務學習(偏向于Pre-train+Massive Multi-tasking的領域)

· prompt

三、現存問題

數據問題

· 數據數量

· 如數據數量不夠/缺少人工標注

· 數據長尾

· 數據普遍遵循長尾理論,存在大多數數據出現次數少,少數數據出現次數多的特點。出現次數少的大多數數據即為長尾數據,長尾數據的特征表示往往很難準確建模。

 · 可以通過針對長尾數據做特定的知識引入的方式來解決

 · 如:Enhancing Language Model Pre-training with Dictionary

 · 數據分布

 · 分布不全面或有偏差

 · 如現有醫療數據-外科類別,只是醫療體系中的冰山一角,并不能覆蓋全部的所需醫療行業知識。

 · 類別不均衡

 1 可以使用數據增強/過采樣/欠采樣/集成學習/resample/reweight的方法來解決

· 標注數據的噪音/質量

· 如雖然數據有標注,但是不同標注人員對于數據存在認知偏差

· 可以使用交叉驗證/置信學習/聚類分析的方法來解決

知識缺乏

預訓練與下游任務存在偏差,模型缺乏下游特定知識

· 前面我們說過「領域差距的本質,究其根本原因,還是數據問題,是不同領域之間的詞匯/n-gram的不匹配」,這其中也是領域知識不匹配的問題。

知識引入方法:

· 顯式:通過語料/詞條釋義/SPO等引入知識;隱式:通過向量方法。

· 現有論文&解決方案:

· Enhancing Language Model Pre-training with Dictionary

· Kformer:Knowledge Injection in Transformer Feed-Forward Layers

· Decomposable Knowledge-enhanced Pre-trained Language Model for  Natural Language Understanding

但這里需要注意的是:常見數據中的知識含量會很容易的被大規模語言模型學習到,而長尾數據中包含的知識由于模型見的比較少,其中的知識很難學到,所以解決知識問題研究者們通常會從長尾數據入手,但-解決「數據長尾」問題并不等于解決「知識缺乏」問題!

· 因為長尾數據并不一定是需要引入知識的數據,也有可能是錯誤的表述方法導致出現的數據

· 如:

· 對于句子:「醫生:那你最近的話,給寶寶多吃一點白粥米湯淌少喝一點,然后吃一點媽咪愛或者益生菌類的菜!

· 如果進行長尾數據的檢測,其中的「米湯淌」和「媽咪愛」很容易會被判別為長尾數據,其中「媽咪愛」作為一種藥的別稱或許是需要相關詞條/知識的引入,但人類很容易看出「米湯淌」并不需要引入知識

· 如果不加判斷的把所有的長尾數據都加入知識,很大概率會引入大量噪音,導致最終效果不升反降。

那么如何判別長尾數據是否需要引入知識呢?

· 一些論文提出了知識實體的判別方法

· 如:Decomposable Knowledge-enhanced Pre-trained Language Model for  Natural Language Understanding

理解缺乏

現存的模型普遍缺乏深度理解,偏向于字面匹配,推理成分較少,能力較弱。

· 引用:

· 如:模型無法很好的處理下述問題

雖然現有的大模型在發布/發論文的時候,給出的指標都看起來是非常高(各個任務上都是8/90+),但本質上這些數據集提供的都是一些偏向于使用學習字面含義就能夠解決的任務,如文本分類/生成/NER等。

然而,一旦使用一些較難的,需要推理能力的任務,所有的模型都會出現遠不如人類的奇差的表現。如:

現有論文&解決方案:

· Chain of Thought Prompting Elicits Reasoning in Large Language Models

大模型推理能力「reasoning」的研究,是一個難點,也是一個亮點

四、參考文獻

論文

· Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks

· Taming Pre-trained Language Models with N-gram Representations for Low-Resource Domain Adaptation

· Exact solutions to the nonlinear dynamics of learning in deep linear neural networks

· BioBERT: a pre-trained biomedical language representation model for biomedical text mining

· SCIBERT: A Pretrained Language Model for Scientific Text

· FinBERT: Financial Sentiment Analysis with Pre-trained Language Models

· Enhancing Language Model Pre-training with Dictionary

· Knowledge Injection in Transformer Feed-Forward Layers

· Decomposable Knowledge-enhanced Pre-trained Language Model for  Natural Language Understanding

· Chain of Thought Prompting Elicits Reasoning in Large Language Models

       原文標題 : 今天淺談一下「繼續預訓練」

聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

    人工智能 獵頭職位 更多
    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號