日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

垂直领域出海,多语言预训练好使吗?

發布時間:2024/10/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 垂直领域出海,多语言预训练好使吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?PaperWeekly 原創 ·?作者|劉世興、程任清

單位|騰訊游戲知幾AI團隊

研究方向|自然語言處理


簡介

垂直領域業務出海,往往面臨著新語種、低資源語言數據不足等多語言挑戰,其中一條技術路線是通過機器翻譯的方式將單語(大語種)方案遷移到多語言場景,但是這種做法效果往往很差,原因是小語種、口語化的文本翻譯誤差不斷累積,導致最終模型訓練和預測偏差較大。

我們選擇的技術路線是通過預訓練的方式來解決多語的問題,主要原因是:以往的研究表明預訓練能使許多單語任務獲得顯著的性能提升;考慮到多語數據標注成本昂貴等因素,為每個語種開發維護一套方案成本太大,而預訓練可以在不依賴標注的數據情況下來實現領域知識的遷移。

預訓練技術路線同時也存在著挑戰:基于開放域訓練的開源預訓練模型,是否適用于垂直領域?大規模多語數據需要大的模型,如何部署到線上進行推理?我們團隊支撐了騰訊游戲出海業務,本文將介紹團隊在游戲智能客服場景解決多語挑戰的實踐經驗,給出上述問題的解決方案。

考慮到不太了解多語預訓練的讀者,本文第一部分將介紹近年來在這方向的前沿工作,讀者可通過這一部分了解到:單語的預訓練如何擴展到多語上的;面對多語的場景,預訓練可以通過怎樣的方式應去學習更通用的語言表示 ;以及時下多語言模型主流的關注點。

如果您是已十分了解這些背景,可直接跳到第二部分。第二部分將介紹我們團隊的工作:包括多語垂直領域預訓和知識蒸餾。多語垂直領域預訓我們采用兩階段微調方法,第一階段使用領域數據對 XLM-R 進行二次預訓練,第二階段進行任務相關微調。通過 XLM-R 微調,模型在多語言業務上取得了明顯提升,準確率在英語、中文和阿拉伯語數據上相比線上模型平均提升 6.29%。進一步通過知識蒸餾的技術,在不明顯降低模型效果的同時提升推斷速度,蒸餾的小模型對比大模型提速 12 倍,準確率只降低 0.87%。

我們的預訓練模型已開源:

https://share.weiyun.com/Vl2gHKxS


經典預訓練語言模型介紹


2.1 大名鼎鼎的BERT

大名鼎鼎的 BERT [2] 一經面世,就刷新了 11 項 NLP 任務的性能記錄。可以說很多下游任務基于 BERT 進行 fine-tune 都能帶來比較理想的效果。這篇論文比較亮的點是:

  • 證明了雙向預訓練對語言表示的重要性。

  • 兩項自監督任務進行預訓練:MLM、NSP

其兩項自監督任務中的 Mask language model(MLM)會隨機 mask 15% 的輸入(token),模型需要通過上下文(context)信息還原被 masked 的輸入。MLM 的意義在于,可以使 BERT 作為單模型學習到上下文相關的表征,并能更充分地利用雙向的信息。此外,論文里強調了設計 MLM 任務需要注意的問題:

意思就是預訓練和微調時存在 [mask] token 的不對齊情況。為了解決為了解決這個問題,MLM 采取以下策略 mask15% 的輸入(token):

  • 80%的概率,把輸入替換為?[MASK]。

  • 10%的概率,把輸入替換為隨機的 token。

  • 10%的概率,維持輸入不變。

另外,其兩項自監督任務中的 Next Sentence Prediction(NSP)任務是:其從語料中提取兩個句子 A 與 B ,50% 的概率 B 是 A 的下一個句子,50% 的概率 B 是一個隨機選取的句子,對于上述隨機生成句子對,模型需要判斷句子對是否連續(next sentence),以此為標注訓練分類器。NSP 能使 BERT 可以從大規模語料中學習句子級別表征、句子關系的知識,這對于某些下游任務是很有用的。

以上是對 BERT 的一個簡單介紹,下面要介紹的是引入多語言(multilingual)特性的 BERT,也就是 M-BERT。

2.1.1 M-BERT

Multilingual BERT 的核心思想是用相同的模型和權值來處理所有的目標語言,通過共享參數,Multilingual BERT 可以獲得一定的跨語言遷移能力,以下是 M-BERT 主要的點:

  • 數據取的是 Wikipedias 中 top104 的語言語料,由于數據不均衡,采用指數加權平滑對不同語種進行了采樣。

  • 因為不同語言有不同的詞匯,Multilingual BERT 建立了一個包含所有目標語言的詞匯表。

  • Multilingual BERT 編碼部分的結構和 BERT 相同,并且在所有語言之間共享。

  • 預訓練的任務與 BERT 相同。

M-BERT 在 XNLI 數據集上進行評測( MultiNLI 的多語言版本),下面是其實驗結果:

備注:

Translate Train:在訓練的時候將英文翻譯為每種目標語言,提供分類器進行訓練

Translate Test:翻譯系統只在測試中使用,用于將輸入句子翻譯為訓練所用語言。

Zero Shot:指只在英文數據上訓練,shot 到各個語言的結果

從實驗結果可以看出不管是在 Translate Train 還是 Translate Test 的情況下均獲得比較理想的效果,可以驗證 M-BERT 具有一定的跨語言能力。另外需要指出的是,其實英文版的 BERT 在英文上的效果是 84.2,比上面 MBERT 的 81.4 高,同樣的在中文上也是。

作者說對于高資源的語種,單語言模型會比多語言模型來的好,但是對于讓他們維護幾十種語種的單語模型是做不到的,如果你要訓練的語種沒有單語模型,基于這個多語模型進行訓練是個不錯的選擇。

2.1.2 M-BERT如何做到跨語言的(How Multilingual is MultilingualBERT?)

多語言 BERT 在訓練的時候既沒有使用任何輸入數據的語言標注,也沒有使用任何機制來拉近相似語言的句子的特征表示(預訓練任務和 BERT 是一樣的),哪 M-BERT 怎么做到跨語言的?《How Multilingual is MultilingualBERT?》[9] 這篇論文針對 MBERT 多語言特性進行了分析。

首先作者通過 NER 和 POS 任務進行跨語言遷移學習實驗來驗證 MBERT 的跨語言能力。

上面實驗是在某語言上進行 Fine-tuning,在其他語言上進行評測(Eval),可以看到每個實驗除了在自身語言取得最好的效果(對角線上的結果),在別的語言上也取得不錯的效果,特別是 Pos 任務上,其遷移到其他語言的效果均達到了 80% 以上,作者說是由于 MBERT 在相似語言上的遷移能力會更好,EN、DE、ES、IT 均屬于歐系語種。哪問題來了,是什么給 MBERT 帶來了跨語言的遷移能力呢?

一個猜想是由于詞典記憶,由于多語言 BERT 使用單個的多語言詞典,所以當在微調期間出現的單詞也出現在評估語言中時,這會發生一種跨語言的轉換遷移,作者稱這種現象為詞匯重疊(overlap)。為了測量這個影響,作者計算了 E_train 和 E_eval ,分別表示訓練集和測試集詞匯集合,定義重疊計算公式:

作者在 16 種語言對進行了 zero-shot ner 實驗(如 EN-DE 語言對,指在 EN 數據集上訓練,在 DE 數據集上進行測試),測試的模型則包括 Multilingual BERT 和 English BERT。

從上圖看(橫坐標是通過上面公式計算,縱坐標是 F1 值),我們可以看到 English BERT 的性能表現非常依賴于詞匯重疊,遷移學習的能力會隨著重疊率的下降而逐漸下降,甚至在完全不同的語言文本中(即重疊率為 0)出現 F1 分數為 0 的情況。

但是多語言 BERT 則在大范圍重疊率上表現得非常平緩,即使是不同的語言文本,這證明多語言 BERT 在某種程度上擁有超過淺層詞匯級別的深層次表征能力,而不依賴于簡單的詞典記憶。

為了深入研究多語言 BERT 為何能在不同的語言文本上具有良好的泛化能力,作者在詞性標注任務 POS 上做了一些實驗嘗試。

在 table4 中,我們可以看到,多語言 BERT 在只有阿拉伯文(UR)的數據集上進行 POS 任務的微調,在只有梵文(HI)上的數據集進行測試,仍然達到了 91% 的準確率,這是令人非常驚訝的,這表明多語言 BERT 擁有強大的多語言表征能力。

但是,跨語言文本遷移卻在某些語言對上表現出糟糕的結果,比如英文和日語(49.4%、57.4%),這表明多語言 BERT 不能在所有的情況下都表現良好。

一個可能的解釋就是類型相似性,比如英語和日語有不同的主語、謂語以及賓語順序,但是英語卻和保加利亞語(BG)有相似的順序,這說明多語言 BERT 在不同的順序上泛化性能不夠強。為了驗證這個解釋,更深入的了解深層次的多語言表征的本質,作者設計了實驗來更深入了解這種表征。

備注:WALS 是與語法結構相關的特征,從描述性材料中收集的語言結構屬性。可以簡單理解兩個語種間 WALS 特征共有的更多,則更相似。

圖 2 展示了多語言 BERT 在零樣本遷移學習上 POS 任務的準確率與 WALS 特征數量的對比圖。我們可以看到,準確率會隨著語言相似度的提升而提升,這證明多語言 BERT 對具有相似特征的語言的遷移學習更加友好。

順序類型特征是語種相似特征的一種,如 Table4 中展示的英文和日語具有不同的順序類型特征,為了驗證順序類型特征是否會影響跨語言表征,作者設計實驗包括包括主謂賓(subject/verb/object,SVO)順序、形容詞名詞(adjective/noun,AN)順序。

SVO languages: Bulgarian, Catalan, Czech, Danish,English, Spanish, Estonian, Finnish, French, Galician, He- brew, Croatian,Indonesian, Italian, Latvian, Norwegian (Bokmaal and Nynorsk), Polish, Portuguese(European and Brazilian), Romanian, Russian, Slovak, Slovenian, Swedish, andChinese.?

SOV Languages: Basque, Farsi, Hindi, Japanese, Korean,Marathi, Tamil, Telugu, Turkish, and Urdu.?

table 5 展示了在 POS 任務上進行的跨語言遷移學習的宏平均準確率與語言類型特征的對比。我們可以看到性能表現最好的情況是語言類型特征一樣(SVO 和 SVO,SOV 和 SOV,AN 和 AN 以及 NA 和 NA)的遷移學習,這表明雖然多語言BERT能夠學習到一定的多語言表征,但是似乎沒有學習到這些語言類型結構的系統轉換去適應帶有不同語言順序的目標語言。

最后作者還設計了一個實驗探索多語言 BERT 在特征空間上的多語言表征。作者首先從數據集 WMT16 中采樣了 5000 個句子對,將句子分別輸入到沒有經過微調的多語言 BERT。然后抽取每個句子在 BERT 每一層的隱藏特征向量(除開 [CLS] 與 [SEP])并取平均,每層每句利用 L2 距離計算最近得到句子。

如圖 3 所示,該圖是翻譯任務上的最近鄰準確度在 BERT 每一層網絡上的結果。我們可以看到,在 BERT 的非底層網絡都實現了較高的準確率,這說明多語言 BERT 可能一種語言無關的方式,在大多數隱藏層共享語言特征表示。至于為什么在最后幾層網絡上準確率又下降了,論文提到:BERT 在預訓練的時候可能需要添加與語言相關的信息。

Multilingual BERT 多語言特性的分析。可以總結的是:多語言 BERT 在某種程度上擁有超過淺層詞匯級別的深層次表征能力。而不依賴于簡單的詞典記憶,在相似的語種上遷移能力表現較好,而沒有學習到這些語言類型結構的系統轉換去適應帶有不同語言順序的目標語言。

下面將介紹引入了語言相關的信息的 XLM。

2.2 遷移能力強大的XLMs(XLMR)

XLMs [4] 是 Facebook AI 提出的一個多語言改良版的 BERT,這個模型在跨語言分類任務(15 個語言的句子蘊含任務)上比其他模型取得了更好的效果。XLMs 的核心概念有以下兩點:

1. 共享 sub-word 字典:所有語種共用一個字典,該字典是通過 Byte Pair Encoding(BPE)構建的。共享的內容包括相同的字母、符號 token 如數字符號、專有名詞。這種共享字典能夠顯著的提升不同語種在嵌入空間的對齊效果。本文在單語料庫中從隨機多項式分布中采樣句子進行 BPE 學習。為了保證平衡語料,句子的采樣服從多項式分布:

中 ????=0.5。使用這種分布抽樣,可以增加分配給 low-resource 語種的 token 數量,并減輕對 high-resource 語種的偏見。這可以防止 low-resource 語種數據集的單詞在字符級被分割。

2. 改良了基于單語種語料的無監督學習 MLM 和提出了新的基于跨語言的平行語料的有監督學習方法 TLM。

XLMs 的 MLM 這一個預訓練目標與 BERT 的 MLM 思想相同,不同的點在于在于模型輸入。BERT 的輸入是句子對,而 XLM 使用的是隨機句子組成的連續文本流,另外引入了語種編碼。

TLM 使用的是有監督的跨語言并行數據。如上圖所示輸入為兩種并行語言的拼接,同時還將 BERT 的原始 embedding 種類改進為代表語言 ID 的 Laguage embedding。TLM 訓練時將隨機掩蓋源語言和目標語言的 token,除了可以使用一種語言的上下文來預測該 Token 之外(同 BERT),XLM 還可以使用另一種語言的上下文以及 Token 對應的翻譯來預測。這樣不僅可以提升語言模型的效果還可以學習到 source 和 target 的對齊表示。

XLMs 在 XNLI 上進行的試驗,其在 translate-train、translate-test 和 zero shot 上對比都達到了最好的效果。首先可以看到平均準確率:MLM 比 laser 高 1.3%,并通過 TLM 任務進一步提高到了 75.1%。另外在低資源語種:sw (斯瓦希里語)和 ur(烏爾都語)上,提高了 6.2% 和 6.3%,而在單語種:如英語也比 mBERT 提高了 3.6%,比 laser 提高了 11.1。可以說 XLMs 在各語種上做到了全面的提升。

▲ Resultson cross-lingual classification accuracy. Test accuracy on the 15 XNLIlanguages.?

然而這些還不夠,XLMs 的進階版 XLMR [5] 進一步擴大了其跨語言優勢,XLMR 主要在兩個方面進行了優化,一個是模型上、一個是數據上。

模型上:

  • XLM-R 基于 RoBERTa 模型框架,利用 MLM 作為訓練任務。

  • 分詞上,XML-R 采用 SentencePiece 進行分詞,可不區分語言地對句子進行切分。( 250k 大詞典)

  • XLM-R 未引入 XLM 中的 Language Embedding,為了更好得適應文本中交替出現不同語言的單詞。

訓練數據:作者采用 CommonCrawl 作為訓練數據,并且通過采樣加強了小語種的訓練數據比例,下圖是 CommonCrawl 和 Wikipedia 各語言語料規模的對照,CommonCrawl 規模更大,特別是小語種的優勢更為明顯。

總結起來其實就是:模型更大、數據更多并且沒有用 TLM 。

XLMR 也在 XNLI 上進行的試驗評測,如下圖所示:

▲ Resultson cross-lingual classification. We report the accuracy on each of the 15 XNLIlanguages and the average accuracy.?

上圖試驗結果,在 Cross-lingualTransfer 的設定下,xlmr 達到 80.9% 準確率,分別比 xlm 和 mbert 提高了 10.2% 和 14.6%。并在小語種上表現尤為明顯,如在 sw 上比前綴提高了 15.7% 和 23.5%。另一方面,與單語模型相比,跨語言模型可以借助翻譯方法進行更多語言的數據增強,如 TRANSLATE-TRAIN-All 的設定下,XLM-R 的效果達到 82.4%。

另外在 GLUE 數據集上對比了 XLM-R 和 XLNET、RoBERTa 等單語種語言模型,XLM-R 超過了 BERT-large,略低于 XLNET 和 RoBERTa。也就是說 XLM-R 不僅獲得了多語種能力,而且沒有犧牲英文上的水平

▲?GLUEdev results.?

最后作者又做了一系列實驗來探究跨語言遷移的影響因素。

圖 2 所示,在初期,語言數量的增加可以帶動小語種語言的學習,小語種語言效果逐漸提升。而當數量達到并超過某個點時,模型總體遷移效果下降,包括高低資源語言。整體上,語言越多,模型學習難度越大。7 種語言到 100 種語言效果從 71.8% 下降到 67.7%。

圖 3 所示,語料規模上,訓練語料越充分,模型效果越好,在小語種上的表現更加明顯。同時圖 7 中,增加訓練的 BatchSize,模型效果也會有明顯的提升。

圖4 所示,分別是 wiki 在 7、30 和 100 個語種上,并增加隱層大小為 768、960 和 1152,在模型參數規模與詞表規模上,整體上,模型參數規模越大、詞表越大,模型效果越好。增加模型參數可以在一定程度上緩解語言增加帶來的模型能力退化。

圖 5 所示,可以看出隨著增加小語種語料數量,可以較顯著地提升小語種的表現。如何平衡高低資源對模型效果有較大的影響?高低資源語言的平衡,作者通過平滑系數平衡高低資源語言的訓練數據。綜合考慮,作者取平滑系數為 0.3。

圖 6 所示,體現了增加詞典大小可以提高模型效果,32k 到 256k 在 XNLI 上提高了 2.8%(橙色是 bert_base,提高了 3%)

2.3 多語預訓練模型關注點

跨語預訓練模型,目前我總結主要有以下幾個點:

  • 高低資源語種語料平衡

  • subword,largevocabulary(mbert:110k xlmr:250K)

  • 引入語種信息

  • 預訓練任務的探索(TLM、翻譯、XLCO)

  • 更多的數據

  • 更大的模型(mbart 680M)


游戲垂直領域實戰

我們團隊的業務場景是一個從候選標準問題集匹配出和用戶查詢(query)匹配的問題,通過計算 query 與每個候選標準問題的匹配分數,選擇最高分的標準問題。所以我們的任務是一個句子對分類任務,預測兩個文本是否匹配。我們使用的評測指標是匹配分數最高的準確率即 Top1 準確率。結合業務特性,我們在多語言問答的業務場景下選擇采用 XLM-R 來提升業務效果。

預訓練模型是在通用語料上訓練好的,如何應用在具體領域任務上呢?一般通過遷移學習的方法,將預訓練模型學到的語言知識遷移到目標任務上。具體方法有兩種:

1. 特征抽取:訓練時把預訓練模型當作一個編碼器,固定其參數不變;

2. 微調:訓練時預訓練模型的參數與任務層參數一起參與訓練。

兩種方法各有優劣,特征抽取方法能夠減少訓練參數,還可以預計算預訓練特征,但是可能需要額外的復雜網絡結構;微調方法通常只需要加上任務相關的預測層就能取得很好的效果,所以一般采用微調方法。


3.1 二次預訓練探索

自從 BERT 之后,微調成為了利用預訓練模型進行下游任務的主要方法。預訓練模型通過足夠的參數和預訓練,能夠從文本中提取足夠的信息,在進行具體任務時,只需加上少量參數構成的預測層就能取得很好的效果。盡管如此,不同的微調策略仍然能進一步提升效果。因為預訓練模型是在通用語料上訓練的,和下游任務的數據通常差別較大。

所以通過在下游任務微調前,先進行一個“中間”微調通常可以提升下游任務的效果。這個“中間”任務可以是用下游任務領域數據進行預訓練 [7],也可以是和下游任務類型相同或接近、但訓練數據更充足的任務 [8]。通過在下游任務領域內數據進行二次預訓練,通常能夠取得更好的效果 [7]。

我們基于 XLM-R base 進行微調,采用領域數據二次預訓練然后再進行任務微調的二階段微調法。我們搜集了業務相關的數據,總共 1000 萬數據量,包含多種語言,其中主要語言是 en(英文)、zh(中文)、ar(阿拉伯語)、tr(土耳其語)、hi(印地語)和 id(印度尼西亞語)。

先上最終效果,下表對比了有無二次預訓練的效果,XLMR 是直接用 12 層的 XLM-RoBERTa base 模型微調,XLMR-domain 是先進行二次預訓練,然后再微調。XLMR 微調相比線上模型帶來平均 2.92% 提升,二次預訓練進一步增加了平均 3.27% 的提升。

接下來詳細介紹我們二次預訓練的方法和探索。預訓練模型的三個主要部分是數據、模型(編碼器)結構、訓練任務。基于預訓練模型進行二次預訓練一般不改變模型結構,于是我們可以從數據和訓練任務兩方面進行優化。

3.1.1 預訓練任務

我們首先來看訓練任務方面。

XLM-R 是 XLM 的改進版,XLM [4] 提出了 Translation Language Modeling (TLM)訓練任務,將平行文本以 [eos] 分隔符分隔進行拼接,作為一條訓練數據。XLM 使用 Masked Language Modeling(MLM)任務與 TLM 任務交替訓練。

因為 XLM-R 使用了更大的訓練數據和更充分的訓練,只用 MLM 任務就取得了非常好的效果,且 TLM 任務需要平行語料,所以 XLM-R 沒有使用 TLM 任務。

在我們的業務場景中,需要計算兩個問題的匹配分數,且兩個問題可能是不同種語言。這種情況下,MLM 任務中每條數據都來自一種語言,與我們的情景存在差距,帶來了訓練、預測的“鴻溝“。在錯例分析中我們也發現有一部分是跨語言匹配錯例。那我們能否通過 TLM 任務,來去除這個“鴻溝”呢?

TLM 任務需要使用平行語料,但是我們沒有,于是我們嘗試使用其他語種文本的機器翻譯作為平行文本,構造平行文本對訓練數據。我們采用 MLM+TLM 任務進行二次訓練,下表是實驗對比,加入 TLM 任務后英語和中文沒有明顯提升,阿拉伯語提升明顯。說明 TLM 任務確實帶來了一定的提升。但是在后續的知識蒸餾時,加入 TLM 任務的模型蒸餾效果較差,所以后續沒有使用 TLM 任務。

3.1.2 Batch構造方法

接著,我們嘗試從數據角度進行優化。首先是模型輸入 Batch 的構造方法。

如上圖,XLM-R 訓練時,將同種語言下的所有文檔的句子當作句子流,每行文本后加上句末符號 eos([\s]),構造訓練 batch 的數據時截取固定長度如 256 token 作為一條訓練數據。

我們二次訓練的數據以短文本居多,我們擔心上述方法會造成多個不相關的句子拼成一條訓練數據,影響模型對文本上下文的學習,因此我們最初是以語料的每行文本作為一條訓練數據(Line by Line),長度不足的以 padding 補齊(2.1 節的實驗結果使用 Line by Line 方法構造 batch)。

但是發現每個 batch 下會有很多的 padding,這顯然極大地浪費算了,特別是 self-attention 的計算對序列長度比較敏感。因此,我們實驗對比了 XLM-R 的構造方法(XLMR-mlm-2)和 Line by Line(XLMR-mlm) 方法,發現 XLM-R 的構造方法loss收斂更快,loss 降得更低,訓練效率更高,效果也有所提升。實驗表明,不需要擔心不同句子拼接成長文本“句子”會給模型訓練帶來不利影響。

另外,我們實驗了基于 XLMR 的構造方式下,是否添加句末分隔符 eos 的影響。如上表,XLMR-no_eos 是沒有 eos,XLMR-eos 是有 eos。我們發現,無分隔符的模型效果較差,和 Line by Line 方式差不多。顯然,分隔符成功地將不同上下文的句子分隔開來,讓模型能夠區分出數據中的不同上下文。

3.1.3 訓練數據的語言分布的影響

多語言場景下,不同語言的數據分布也對模型預訓練有影響。我們預訓練的數據中各語言的數據分布不平衡,如下圖所示,英語、中文、阿拉伯語等數量較多,其他語種較少。

針對這種情況,XLM-R 論文在訓練時采取了語言采樣策略,對大語種欠采樣,小語種過采樣。我們進行二次預訓練時實驗對比了不同采樣策略:無語言采樣(no_sampling);所有語言參與采樣(lang_sampling);將 6 大語種外的小語種看成一種“語言”,進行 7 大“語種”采樣(six_lang_sampling)。

實驗結果如下表所示。因為小語種數量很少,所以所有語言參與采樣(lang_sampling)會將大語種數據“過分”欠采樣,最終的實驗效果沒有明顯提升,而針對 6 大語種采樣的效果提升明顯。

3.2 預訓模型上線——知識蒸餾

經過上述實驗,我們終于得到了一個效果不錯的模型,然而微調出來的大模型雖然效果好,但是模型的推斷耗時太長,難以部署。我們調研了模型壓縮方法,發現模型壓縮主要有減枝、權重量化、參數共享和知識蒸餾等方法。我們的目標主要是在不明顯降低效果的情況下提升模型的推斷速度,所以我們選擇了知識蒸餾方法,將大模型知識遷移到小模型上。我們參考 TinyBERT 的蒸餾方法,并根據實驗得出一套有效的蒸餾流程。

3.2.1 TinyBERT簡介

TinyBERT [6]使用 4 層 312 隱層維度的小 transformer 結構做學生模型(student),蒸餾 BERT(teacher),相比 BERT-base 在 GLUE 上達到了其 96% 的效果,13% 的參數和 10% 的推斷時間。下面簡單介紹 TinyBERT 的實現方式。

TinyBERT 提出了從 transformer 的具體組件蒸餾,包括 embedding 層;transformer 的隱層和 attention 矩陣;預測層的 logits,總體的損失函數是相應的 4 部分。預測層 logits 的 loss 定義為 teacher 的 logits 與 student 的 logits 的 soft cross-entropy loss,其他 3 個 loss 是 teacher 與 student 相應組件的 MSE loss。

訓練時提出了兩階段蒸餾框架,通用模型蒸餾和任務相關蒸餾。通用模型蒸餾使用大規模通用語料進行蒸餾訓練,這一階段的蒸餾不包括預測層 logits 的蒸餾。進行任務蒸餾時,先對任務數據集進行數據增強,然后進行蒸餾,此時的 teacher 是 BERT 在改任務的微調模型。

需要注意的是任務蒸餾也分為兩步:(1)step1 蒸餾 : 對 embedding 層、transformer 隱層和注意力矩陣蒸餾;(2)預測蒸餾: 只對預測層的 logits 蒸餾。

3.2.2 蒸餾XLMR

3.2.2.1 只使用任務蒸餾

首先,我們采用 TinyBERT 的任務蒸餾方法,即隨機初始化一個小模型,然后進行 step1 蒸餾,預測蒸餾。teacher 模型是微調好的 XLMR-base(12層,隱層維度 768),student 模型選擇了層數 2、3 和 4 層,隱層維度都是 384 的小模型。

實驗結果如下表,蒸餾的4層模型效果最好,平均準確率只比 XLMR-base 降低了 1.93%,2、3 層的模型效果較差。從耗時上看,4 層小模型的耗時較高,2 層最低。所有蒸餾模型效果都優于沒使用蒸餾、直接隨機初始化然后訓練的模型(4 層-無蒸餾)。

3.2.2.2 加上通用蒸餾

具體任務的訓練數據是有限的,因此僅僅使用任務蒸餾無法獲得類似預訓練模型一樣的泛化能力。我們可以先進行通用蒸餾,令小模型具備通用知識,然后再進行任務蒸餾,學習具體任務知識。考慮到用開放語料進行通用蒸餾比較耗時,我們使用二次預訓練 XLMR 的訓練數據,進行了領域內的通用蒸餾。

如上文所述,通用蒸餾會蒸餾 embedding 層、transformer 的隱層和注意力矩陣,但是不使用 MLM 任務的 loss。通用蒸餾后的小模型相比隨機初始化的模型會有更好的模型參數,通用蒸餾可以相當于一個高質量的 student 的參數初始化,能夠應用在同領域的多個下游任務上。

如下表所示,加上通用蒸餾后(+gen),2 層和 3 層小模型也能取得接近大模型的效果。TinyBERT 的任務蒸餾里包含兩個訓練階段(step1 階段和預測蒸餾),step1 階段蒸餾的任務和通用階段是一樣的,也不包括預測任務的 loss。所以我們可以實驗跳過 step1 階段直接進行預測蒸餾(2 層+gen-step1),結果發現效果只降低 0.32%。

進一步的,我們實驗了只使用預測蒸餾(只預測蒸餾),發現實驗效果差很多。所以,最終采取的蒸餾流程是先進行通用蒸餾,然后再進行預測蒸餾。


總結

我們將多語言預訓練模型 XLM-R 應用在多語言業務上,通過二次預訓練和知識蒸餾,最終提升了模型效果。整個流程可以總結為下圖,通用 XLMR 模型二次預訓練后得到領域 XLMR 模型,然后基于領域 XLMR 模型進行微調得到微調 XLMR,最后通過通用蒸餾、任務蒸餾兩階段蒸餾法得到小模型 TinyXLMR。

參考文獻

[1] Qiu X, Sun T, Xu Y, et al. Pre-trained models for natural language processing: A survey[J]. arXiv preprint arXiv:2003.08271, 2020.

[2] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

[3] Yang Z, Dai Z, Yang Y, et al. Xlnet: Generalized autoregressive pretraining for language understanding[C]//Advances in neural information processing systems. 2019: 5753-5763.

[4] Conneau A, Lample G. Cross-lingual language model pretraining[C]//Advances in Neural Information Processing Systems. 2019: 7059-7069.

[5] Conneau A, Khandelwal K, Goyal N, et al. Unsupervised cross-lingual representation learning at scale[J]. arXiv preprint arXiv:1911.02116, 2019.

[6] Jiao X, Yin Y, Shang L, et al. Tinybert: Distilling bert for natural language understanding[J]. arXiv preprint arXiv:1909.10351, 2019.

[7] Sun C, Qiu X, Xu Y, et al. How to fine-tune bert for text classification?[C]//China National Conference on Chinese Computational Linguistics. Springer, Cham, 2019: 194-206.

[8] Garg S, Vu T, Moschitti A. Tanda: Transfer and adapt pre-trained transformer models for answer sentence selection[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(05): 7780-7788.

[9] Telmo Pires, Eva Schlinger, and Dan Garrette. 2019. How multilingual is multilingual bert? In ACL.

更多閱讀

#投 稿?通 道#

?讓你的論文被更多人看到?

如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術干貨。我們的目的只有一個,讓知識真正流動起來。

?????來稿標準:

? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?

? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?

? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志

?????投稿郵箱:

? 投稿郵箱:hr@paperweekly.site?

? 所有文章配圖,請單獨在附件中發送?

? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

總結

以上是生活随笔為你收集整理的垂直领域出海,多语言预训练好使吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。