北大、人大聯合開源工具箱UER,3 行代碼完美復現BERT、GPT

本文由AI研習社用戶張正投稿,來稿見文末聯繫方式

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT
北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

作者 | 張正

單位 | 清華大學

現存的預訓練模型中沒有一種可以完美的適用於所有任務,這也給預訓練模型的選擇帶來困難。對於這個問題,論文提供了一種切實可行的解決方案,即UER(Universal Encoder Representations)。論文標題:UER: An Open-Source Toolkit for Pre-training Models;
論文地址: https://arxiv.org/abs/1909.05658

自然語言處理(NaturalLanguage Processing, NLP)主要研究如何讓計算機讀懂人類的自然語言,該技術是人工智能非常重要的研究領域之一,也是人工智能最難解決的問題之一。幸運的是,得益於遷移學習技術的發展,自然語言處理在近些年也取得了快速的發展,並廣泛應用於機器翻譯、信息檢索等領域。

何為遷移學習?在自然語言處理的背景下,遷移學習本質上是在一個源領域(Source Domain)數據集上預訓練模型,然後對該模型進行調整,以在目標領域(Target Domain)數據集上執行自然語言處理功能。在這個過程中,用於訓練模型的源領域與用於任務執行的目標領域往往存在不一致性,因此預訓練的模型往往無法直接完成目標領域的自然語言處理任務,那為什麼還要進行模型預訓練呢?

首先,源領域與目標領域之間的差異性與一致性是並存的,經過大數據訓練的模型參數往往在小數據集上也是通用可行的。

其次,在源領域預訓練好的模型只需要經過微調,就可以應用於目標領域上,而無需重新訓練,因此可以節省訓練時間與計算量。

預訓練模型有很多種,比如谷歌 BERT 模型、GPT 模型、ELMo 模型等,由於下游任務的多樣性及運算能力的限制,現存的預訓練模型中沒有一種可以完美的適用於所有任務,這也給預訓練模型的選擇帶來困難。對於這個問題,論文提供了一種切實可行的解決方案,即 UER(Universal Encoder Representations)。

通過構建一個整合的預訓練工具箱,UER 包含了多個低耦合的模塊,各模塊中包含現有的主流模型,用戶可以很方便的調用這些模型,也可以根據任務需求個性化設計自己的預訓練模型。此外,UER 提供了基於不同語料庫而訓練的模型群,這些模型可幫助用戶在下游數據集上取得良好的語言處理結果。

1. 研究背景

NLP 模型包含很多超參數,這些參數的確定過程通常比較複雜,而不同的參數值會對模型的性能產生很大的影響。一般文章很難記錄超參數的選取細節及代碼,這也為什麼我們在重複別人的工作時很難取得與原文作者相似的結果。為此,很多系統提供瞭解決方案。

1)OpenNMT

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

OpenNMT(Open-source Neural Machine Translation)是一個開源的神經網絡翻譯機器,於 2016 年由哈佛 NLP 研究組與 SYSTRAN 公司聯合開發。該系統具有高效、模塊化、易擴展等優點,已經取得了較高的翻譯精度。

2)fairseq

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

Fairseq 模型由 Facebook AI 實驗室在 2017 年提出,主要用於機器翻譯,其採用了以 CNN 為主的模型結構,具有翻譯速度快、精度高的優勢。Fairseq 提供了英語到法語、英語到德語和英語到羅馬尼亞語翻譯的預訓練模型。

3)NCRF++

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

NCRF++是一個基於 PyTorch 的開源神經序列標註工具包,可用於多種神經序列標註工具包的快速實現。

4)ngram2vec

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

N-Gram(有時也稱為 N 元模型)是自然語言處理中一個非常重要的概念,通常在 NLP 中,人們基於一定的語料庫,可以利用 N-Gram 來預計或者評估一個句子是否合理。另外一方面,N-Gram 的另外一個作用是用來評估兩個字符串之間的差異程度。這是模糊匹配中常用的一種手段。

以上模型為目前最主流的 NLP 模型預訓練工具,這些工具對 NLP 技術的發展具有深遠影響。然而這些方法也存在自身的缺陷,比如它們往往只用於解決某個領域的具體問題,很難具有通用性。因此,提出一種可以融合各種模型並對其進行完善的工具箱具有較大的使用價值,本文提出的 UER 正是用於解決該問題。

2. UER 主要結構

如圖所示:

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

UER 主要由四個部分組成:副編碼器(subencoder)、主編碼器(encoder)、target 和微調(fine-tuning)。

每個部分又包含大量可執行模型,用戶可以根據自己的需求調用相應模型,也可以根據需求自己設計相應模型。

此外,為了能夠取得更好的預訓練效果,在 UER 中還可以將不同模型進行組合使用。

1)副編碼器

該部分主要用於學習 word 的底層特徵。對於英文單詞來說,底層特徵主要指組成單詞的各字母;對於中文來說,底層特徵可以用字符的偏旁部首或者拼音來表示。

通過學習,模型可以獲知 word 的內部結構。UER 採用 CNN 和 RNN 做為副編碼器,並且使用平均池化或最大池化的策略來獲得固定長度的詞向量(word vector)。

2)主編碼器

該部分主要用於學習詞向量的主要特徵。UER 可以直接執行基礎的編碼器,如 LSTM、GRU、CNN、GatedCNN、AttentionNN 等。也可以根據需求,實現不同編碼器的組合,構建任意的網絡結構。

近年來,Transformer 技術在文本特徵提取任務上表現出優越的性能。因此 UER 的主編碼器部分也整合了 Transformer 模塊,為 BERT 等模型的執行提供便利。

3)Target

選用恰當的 target 是預訓練成功的關鍵,雖然現有的 target 有很多種,但是它們都有各自的優缺點。UER 中包含有很多的 target,用戶可以使用一種或多種 target,並賦予它們不同的權值。根據原理的不同,這些 target 可以分為有監督和無監督類型。

無監督 target 有很多種,例如 Language model(LM)、Masked LM(MLM)和 Autoencoder(AE)等 target 屬於字符層面的 target,主要用於單詞詞義的預測;Next sentence prediction(NSP)模型主要用於判斷兩個句子之間是否具有連續性。

有監督 target 主要包括 Neural machine translation(NMT)和 Classification(CLS)兩種。有監督 target 往往可以為模型提供源語料庫中無法提供的額外信息。

4)微調

UER 開發了與 ULMFiT、GPT 和 BERT 相似的微調策略,用於下游任務的模型往往具有和預訓練模型相似的結構與參數,因此預訓練模型只需經過微調即可使用。

很多預訓練任務包含兩個階段,即模型預訓練與微調。但是,在 UER 中包含有 3 個階段,分別為:在廣義領域語料庫上的預訓練、在下游數據庫上的預訓練及在下游數據庫的微調。這樣做的好處是模型可以提前熟知下游數據庫的數據分佈,從而在微調環節取得更好的訓練效果。

3. 結果驗證

為了驗證 UER 性能的好壞,作者基於不同的數據集設計了一系列實驗。

在論文中,作者以基於 BERT 的英文和中文模型為例,對 UER 的模型再現性(即能夠產生目標模型的能力)進行評估,並討論了在選取不同 target 和編碼器時,UER 性能的提升效果。

1)模型再現性

前文已經提到,UER 中已經內嵌了大量的模型,用戶可以直接調用這些模型,無需自己編寫模型代碼。調用的方法也非常簡單,用戶只需要根據自己的需求,編寫幾行代碼即可完成:

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

UER 中模型的調用方法演示

圖中分別演示了執行不同模型時的模型調用方法,可以看到模型調用代碼非常簡單,即使對於第一次接觸 UER 的用戶來說也可以快速上手,這也是 UER 的特色之一。

在完成模型的調用之後,需要驗證在 UER 中調用的模型與實際模型是否存在偏差,即驗證 UER 中模型的準確性。論文中以 BERT 模型為例,分別對英文和中文的自然語言處理結果進行驗證。

在英文驗證部分,論文使用 GLUE 基準,並將 UER 取得的測試結果與 HuggingFace 的測試結果進行對比(表 1):

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

表1 在GLUE基準上HuggingFace的測試結果與UER的測試結果對比

在中文驗證部分,論文使用百度 ERNIE 基準,並將 UER 取得的測試結果與 ERNIE 提供的測試結果進行對比(表 2):

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

表2 在ERNIE基準上ERNIE的測試結果與UER的測試結果對比

通過對比結果可以看出,UER 取得的測試結果與 HuggingFace 和 ERNIE 的測試結果相近,因此可以認為使用 UER 並不會影響模型訓練效果。

2)target 和編碼器對測試結果的影響

在選擇不同的 target 和編碼器時,模型的測試結果也是不同的。論文中,作者分別選擇了不同的 target 和編碼器,並記錄採用 UER 的預訓練模型在數據集上的測試結果。這裡採用了豆瓣書評、亞馬遜商品用戶評價和 Chnsenticorp 三個中文情感分析數據集做為下游數據集。

首先,作者在 UER 中採用 BERT-base 的中文模型進行預訓練,然後將預訓練完成的模型在下游數據集上進行微調。為了進行對比,作者分別採用 MLM 和 CLS 做為 target,並記錄測試結果(表3):

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

表3 採用不同target的預訓練模型性能對比

通過比較不難發現,選用不同的 target 會對預訓練模型的性能產生較大影響,當採用 CLS 作為 target 時模型可以取得最高的測試結果。

由於 BERT 對計算力要求較高,為了提高運算效率,作者在 UER 中採用 2 層的 LTSM 編碼器來代替原始 12 層的 Transformer,並記錄在編碼器改變時預訓練模型的測試結果(表 4):

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT

表4 採用不同編碼器的預訓練模型性能對比

通過數據對比可以看出,選用 LSTM 編碼器的預訓練模型可以獲得與 BERT 模型相近甚至更好的測試結果。該試驗證明了採用 UER 進行模型預訓練時可以靈活選擇不同的 target 和編碼器,來取得更好的訓練效果及更高的訓練效率。

4. 總結

論文中提出了一種開源的 NLP 模型預訓練工具箱,並詳細介紹了其組成部分及使用方法。藉助於 UER,用戶可以方便、高效地執行各類預訓練模型,並根據需求對模型進行調整,從而取得模型性能及訓練速度的提升。

郵箱:jiawei@leiphone.com

北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT"


分享到:


相關文章: