pytorch微调bert_北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT
本文由AI研習(xí)社用戶張正投稿,來稿見文末聯(lián)系方式
作者 | 張正
單位 | 清華大學(xué)
編輯 | Camel
現(xiàn)存的預(yù)訓(xùn)練模型中沒有一種可以完美的適用于所有任務(wù),這也給預(yù)訓(xùn)練模型的選擇帶來困難。對(duì)于這個(gè)問題,論文提供了一種切實(shí)可行的解決方案,即UER(Universal Encoder Representations)。論文標(biāo)題:UER: An Open-Source Toolkit for Pre-training Models;論文地址: https://arxiv.org/abs/1909.05658自然語(yǔ)言處理(NaturalLanguage Processing, NLP)主要研究如何讓計(jì)算機(jī)讀懂人類的自然語(yǔ)言,該技術(shù)是人工智能非常重要的研究領(lǐng)域之一,也是人工智能最難解決的問題之一。幸運(yùn)的是,得益于遷移學(xué)習(xí)技術(shù)的發(fā)展,自然語(yǔ)言處理在近些年也取得了快速的發(fā)展,并廣泛應(yīng)用于機(jī)器翻譯、信息檢索等領(lǐng)域。
何為遷移學(xué)習(xí)?在自然語(yǔ)言處理的背景下,遷移學(xué)習(xí)本質(zhì)上是在一個(gè)源領(lǐng)域(Source Domain)數(shù)據(jù)集上預(yù)訓(xùn)練模型,然后對(duì)該模型進(jìn)行調(diào)整,以在目標(biāo)領(lǐng)域(Target Domain)數(shù)據(jù)集上執(zhí)行自然語(yǔ)言處理功能。在這個(gè)過程中,用于訓(xùn)練模型的源領(lǐng)域與用于任務(wù)執(zhí)行的目標(biāo)領(lǐng)域往往存在不一致性,因此預(yù)訓(xùn)練的模型往往無(wú)法直接完成目標(biāo)領(lǐng)域的自然語(yǔ)言處理任務(wù),那為什么還要進(jìn)行模型預(yù)訓(xùn)練呢?
首先,源領(lǐng)域與目標(biāo)領(lǐng)域之間的差異性與一致性是并存的,經(jīng)過大數(shù)據(jù)訓(xùn)練的模型參數(shù)往往在小數(shù)據(jù)集上也是通用可行的。
其次,在源領(lǐng)域預(yù)訓(xùn)練好的模型只需要經(jīng)過微調(diào),就可以應(yīng)用于目標(biāo)領(lǐng)域上,而無(wú)需重新訓(xùn)練,因此可以節(jié)省訓(xùn)練時(shí)間與計(jì)算量。
預(yù)訓(xùn)練模型有很多種,比如谷歌 BERT 模型、GPT 模型、ELMo 模型等,由于下游任務(wù)的多樣性及運(yùn)算能力的限制,現(xiàn)存的預(yù)訓(xùn)練模型中沒有一種可以完美的適用于所有任務(wù),這也給預(yù)訓(xùn)練模型的選擇帶來困難。對(duì)于這個(gè)問題,論文提供了一種切實(shí)可行的解決方案,即 UER(Universal Encoder Representations)。
通過構(gòu)建一個(gè)整合的預(yù)訓(xùn)練工具箱,UER 包含了多個(gè)低耦合的模塊,各模塊中包含現(xiàn)有的主流模型,用戶可以很方便的調(diào)用這些模型,也可以根據(jù)任務(wù)需求個(gè)性化設(shè)計(jì)自己的預(yù)訓(xùn)練模型。此外,UER 提供了基于不同語(yǔ)料庫(kù)而訓(xùn)練的模型群,這些模型可幫助用戶在下游數(shù)據(jù)集上取得良好的語(yǔ)言處理結(jié)果。
1. 研究背景
NLP 模型包含很多超參數(shù),這些參數(shù)的確定過程通常比較復(fù)雜,而不同的參數(shù)值會(huì)對(duì)模型的性能產(chǎn)生很大的影響。一般文章很難記錄超參數(shù)的選取細(xì)節(jié)及代碼,這也為什么我們?cè)谥貜?fù)別人的工作時(shí)很難取得與原文作者相似的結(jié)果。為此,很多系統(tǒng)提供了解決方案。
1)OpenNMT
OpenNMT(Open-source Neural Machine Translation)是一個(gè)開源的神經(jīng)網(wǎng)絡(luò)翻譯機(jī)器,于 2016 年由哈佛 NLP 研究組與 SYSTRAN 公司聯(lián)合開發(fā)。該系統(tǒng)具有高效、模塊化、易擴(kuò)展等優(yōu)點(diǎn),已經(jīng)取得了較高的翻譯精度。
2)fairseq
Fairseq 模型由 Facebook AI 實(shí)驗(yàn)室在 2017 年提出,主要用于機(jī)器翻譯,其采用了以 CNN 為主的模型結(jié)構(gòu),具有翻譯速度快、精度高的優(yōu)勢(shì)。Fairseq 提供了英語(yǔ)到法語(yǔ)、英語(yǔ)到德語(yǔ)和英語(yǔ)到羅馬尼亞語(yǔ)翻譯的預(yù)訓(xùn)練模型。
3)NCRF++
NCRF++是一個(gè)基于 PyTorch 的開源神經(jīng)序列標(biāo)注工具包,可用于多種神經(jīng)序列標(biāo)注工具包的快速實(shí)現(xiàn)。
4)ngram2vec
N-Gram(有時(shí)也稱為 N 元模型)是自然語(yǔ)言處理中一個(gè)非常重要的概念,通常在 NLP 中,人們基于一定的語(yǔ)料庫(kù),可以利用 N-Gram 來預(yù)計(jì)或者評(píng)估一個(gè)句子是否合理。另外一方面,N-Gram 的另外一個(gè)作用是用來評(píng)估兩個(gè)字符串之間的差異程度。這是模糊匹配中常用的一種手段。
以上模型為目前最主流的 NLP 模型預(yù)訓(xùn)練工具,這些工具對(duì) NLP 技術(shù)的發(fā)展具有深遠(yuǎn)影響。然而這些方法也存在自身的缺陷,比如它們往往只用于解決某個(gè)領(lǐng)域的具體問題,很難具有通用性。因此,提出一種可以融合各種模型并對(duì)其進(jìn)行完善的工具箱具有較大的使用價(jià)值,本文提出的 UER 正是用于解決該問題。
2. UER 主要結(jié)構(gòu)
如圖所示:
UER 主要由四個(gè)部分組成:副編碼器(subencoder)、主編碼器(encoder)、target 和微調(diào)(fine-tuning)。
每個(gè)部分又包含大量可執(zhí)行模型,用戶可以根據(jù)自己的需求調(diào)用相應(yīng)模型,也可以根據(jù)需求自己設(shè)計(jì)相應(yīng)模型。
此外,為了能夠取得更好的預(yù)訓(xùn)練效果,在 UER 中還可以將不同模型進(jìn)行組合使用。
1)副編碼器
該部分主要用于學(xué)習(xí) word 的底層特征。對(duì)于英文單詞來說,底層特征主要指組成單詞的各字母;對(duì)于中文來說,底層特征可以用字符的偏旁部首或者拼音來表示。
通過學(xué)習(xí),模型可以獲知 word 的內(nèi)部結(jié)構(gòu)。UER 采用 CNN 和 RNN 做為副編碼器,并且使用平均池化或最大池化的策略來獲得固定長(zhǎng)度的詞向量(word vector)。
2)主編碼器
該部分主要用于學(xué)習(xí)詞向量的主要特征。UER 可以直接執(zhí)行基礎(chǔ)的編碼器,如 LSTM、GRU、CNN、GatedCNN、AttentionNN 等。也可以根據(jù)需求,實(shí)現(xiàn)不同編碼器的組合,構(gòu)建任意的網(wǎng)絡(luò)結(jié)構(gòu)。
近年來,Transformer 技術(shù)在文本特征提取任務(wù)上表現(xiàn)出優(yōu)越的性能。因此 UER 的主編碼器部分也整合了 Transformer 模塊,為 BERT 等模型的執(zhí)行提供便利。
3)Target
選用恰當(dāng)?shù)?target 是預(yù)訓(xùn)練成功的關(guān)鍵,雖然現(xiàn)有的 target 有很多種,但是它們都有各自的優(yōu)缺點(diǎn)。UER 中包含有很多的 target,用戶可以使用一種或多種 target,并賦予它們不同的權(quán)值。根據(jù)原理的不同,這些 target 可以分為有監(jiān)督和無(wú)監(jiān)督類型。
無(wú)監(jiān)督 target 有很多種,例如 Language model(LM)、Masked LM(MLM)和 Autoencoder(AE)等 target 屬于字符層面的 target,主要用于單詞詞義的預(yù)測(cè);Next sentence prediction(NSP)模型主要用于判斷兩個(gè)句子之間是否具有連續(xù)性。
有監(jiān)督 target 主要包括 Neural machine translation(NMT)和 Classification(CLS)兩種。有監(jiān)督 target 往往可以為模型提供源語(yǔ)料庫(kù)中無(wú)法提供的額外信息。
4)微調(diào)
UER 開發(fā)了與 ULMFiT、GPT 和 BERT 相似的微調(diào)策略,用于下游任務(wù)的模型往往具有和預(yù)訓(xùn)練模型相似的結(jié)構(gòu)與參數(shù),因此預(yù)訓(xùn)練模型只需經(jīng)過微調(diào)即可使用。
很多預(yù)訓(xùn)練任務(wù)包含兩個(gè)階段,即模型預(yù)訓(xùn)練與微調(diào)。但是,在 UER 中包含有 3 個(gè)階段,分別為:在廣義領(lǐng)域語(yǔ)料庫(kù)上的預(yù)訓(xùn)練、在下游數(shù)據(jù)庫(kù)上的預(yù)訓(xùn)練及在下游數(shù)據(jù)庫(kù)的微調(diào)。這樣做的好處是模型可以提前熟知下游數(shù)據(jù)庫(kù)的數(shù)據(jù)分布,從而在微調(diào)環(huán)節(jié)取得更好的訓(xùn)練效果。
3. 結(jié)果驗(yàn)證
為了驗(yàn)證 UER 性能的好壞,作者基于不同的數(shù)據(jù)集設(shè)計(jì)了一系列實(shí)驗(yàn)。
在論文中,作者以基于 BERT 的英文和中文模型為例,對(duì) UER 的模型再現(xiàn)性(即能夠產(chǎn)生目標(biāo)模型的能力)進(jìn)行評(píng)估,并討論了在選取不同 target 和編碼器時(shí),UER 性能的提升效果。
1)模型再現(xiàn)性
前文已經(jīng)提到,UER 中已經(jīng)內(nèi)嵌了大量的模型,用戶可以直接調(diào)用這些模型,無(wú)需自己編寫模型代碼。調(diào)用的方法也非常簡(jiǎn)單,用戶只需要根據(jù)自己的需求,編寫幾行代碼即可完成:
UER 中模型的調(diào)用方法演示
圖中分別演示了執(zhí)行不同模型時(shí)的模型調(diào)用方法,可以看到模型調(diào)用代碼非常簡(jiǎn)單,即使對(duì)于第一次接觸 UER 的用戶來說也可以快速上手,這也是 UER 的特色之一。
在完成模型的調(diào)用之后,需要驗(yàn)證在 UER 中調(diào)用的模型與實(shí)際模型是否存在偏差,即驗(yàn)證 UER 中模型的準(zhǔn)確性。論文中以 BERT 模型為例,分別對(duì)英文和中文的自然語(yǔ)言處理結(jié)果進(jìn)行驗(yàn)證。
在英文驗(yàn)證部分,論文使用 GLUE 基準(zhǔn),并將 UER 取得的測(cè)試結(jié)果與 HuggingFace 的測(cè)試結(jié)果進(jìn)行對(duì)比(表 1):
表1 在GLUE基準(zhǔn)上HuggingFace的測(cè)試結(jié)果與UER的測(cè)試結(jié)果對(duì)比
在中文驗(yàn)證部分,論文使用百度 ERNIE 基準(zhǔn),并將 UER 取得的測(cè)試結(jié)果與 ERNIE 提供的測(cè)試結(jié)果進(jìn)行對(duì)比(表 2):
表2 在ERNIE基準(zhǔn)上ERNIE的測(cè)試結(jié)果與UER的測(cè)試結(jié)果對(duì)比
通過對(duì)比結(jié)果可以看出,UER 取得的測(cè)試結(jié)果與 HuggingFace 和 ERNIE 的測(cè)試結(jié)果相近,因此可以認(rèn)為使用 UER 并不會(huì)影響模型訓(xùn)練效果。
2)target 和編碼器對(duì)測(cè)試結(jié)果的影響
在選擇不同的 target 和編碼器時(shí),模型的測(cè)試結(jié)果也是不同的。論文中,作者分別選擇了不同的 target 和編碼器,并記錄采用 UER 的預(yù)訓(xùn)練模型在數(shù)據(jù)集上的測(cè)試結(jié)果。這里采用了豆瓣書評(píng)、亞馬遜商品用戶評(píng)價(jià)和 Chnsenticorp 三個(gè)中文情感分析數(shù)據(jù)集做為下游數(shù)據(jù)集。
首先,作者在 UER 中采用 BERT-base 的中文模型進(jìn)行預(yù)訓(xùn)練,然后將預(yù)訓(xùn)練完成的模型在下游數(shù)據(jù)集上進(jìn)行微調(diào)。為了進(jìn)行對(duì)比,作者分別采用 MLM 和 CLS 做為 target,并記錄測(cè)試結(jié)果(表3):
表3 采用不同target的預(yù)訓(xùn)練模型性能對(duì)比
通過比較不難發(fā)現(xiàn),選用不同的 target 會(huì)對(duì)預(yù)訓(xùn)練模型的性能產(chǎn)生較大影響,當(dāng)采用 CLS 作為 target 時(shí)模型可以取得最高的測(cè)試結(jié)果。
由于 BERT 對(duì)計(jì)算力要求較高,為了提高運(yùn)算效率,作者在 UER 中采用 2 層的 LTSM 編碼器來代替原始 12 層的 Transformer,并記錄在編碼器改變時(shí)預(yù)訓(xùn)練模型的測(cè)試結(jié)果(表 4):
表4 采用不同編碼器的預(yù)訓(xùn)練模型性能對(duì)比
通過數(shù)據(jù)對(duì)比可以看出,選用 LSTM 編碼器的預(yù)訓(xùn)練模型可以獲得與 BERT 模型相近甚至更好的測(cè)試結(jié)果。該試驗(yàn)證明了采用 UER 進(jìn)行模型預(yù)訓(xùn)練時(shí)可以靈活選擇不同的 target 和編碼器,來取得更好的訓(xùn)練效果及更高的訓(xùn)練效率。
4. 總結(jié)
論文中提出了一種開源的 NLP 模型預(yù)訓(xùn)練工具箱,并詳細(xì)介紹了其組成部分及使用方法。借助于 UER,用戶可以方便、高效地執(zhí)行各類預(yù)訓(xùn)練模型,并根據(jù)需求對(duì)模型進(jìn)行調(diào)整,從而取得模型性能及訓(xùn)練速度的提升。
投稿需知
投稿請(qǐng)聯(lián)系:
郵箱:jiawei@leiphone.com
微信:jiawei1066
總結(jié)
以上是生活随笔為你收集整理的pytorch微调bert_北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wordpress如何让百度快速收录_如
- 下一篇: sqlserver安装目录_Jira试用