Bart: Seq2Seq預訓練模型

2021-02-21 機器學習算法與自然語言處理

公眾號關注 「ML_NLP」

最近要開始使用Transformer去做一些事情了,特地把與此相關的知識點記錄下來,構建相關的、完整的知識結構體系,

以下是要寫的文章,本文是這個系列的第十六篇:

Overall

Transformer最早出來是為了解決機器翻譯問題,因而Transformer模型分為兩部分,Encoder和Decoder。Bert模型使用了Encoder部分,而GPT模型使用了Decoder部分,分別得到了很好的預訓練模型。

而本文所解說的Bart,則返本溯源,重新拾起了Encoder-Decoder並用的結構,即seq2seq結構

Bart預訓練模式

Bert,GPT和Bart的對比如下,可以看到,Bart是在Encoder中輸入被損壞的句子,然後在Decoder中去還原。這樣做的好處在於相對於Bert中單一的數據損壞方式,Bart更靈活。

Bart的數據處理方式

在Bert中,數據是按照15%的概率採樣出來替換成特殊標記[MASK],當然,裡面還有一個8:1:1的分配,在這裡就不細說了,感興趣可以去Bert那一篇細看。

而在Bart中,數據的處理就多種多樣了。如下,可以是類似Bert的Mask方式,可以是刪除,可以是顛倒順序,可以是多個詞語替換為一個[MASK]。

其中,詞語刪除和多個詞語替換為一個[MASK]等方式會改變句子的長度,這點是Bert做不到的。

這樣的數據復原方式,使得Bart會在生成問題上很有優勢,實驗也表明了這點,另外,Bart可以在判別任務上也達到和Roberta相近的結果。

實驗

在GLUE數據集上的結果如下,Bart可以達到和Roberta相近的結果。

在Summarization數據集上的結果如下:

在Abstractive QA上的結果如下:

可以看到,Bart這種方式在生成問題上效果很好。

參考文獻[1]. Lewis, Mike, et al. "Bart: Denoising sequence-to-sequence pre-training for natural language generation, translation, and comprehension." arXiv preprint arXiv:1910.13461 (2019).

倉庫地址共享:

在機器學習算法與自然語言處理公眾號後臺回復「代碼」

即可獲取195篇NAACL+295篇ACL2019有代碼開源的論文。開源地址如下:https://github.com/yizhen20133868/NLP-Conferences-Code

重磅!機器學習算法與自然語言處理交流群已正式成立

群內有大量資源,歡迎大家進群學習!

額外贈送福利資源!邱錫鵬深度學習與神經網絡,pytorch官方中文教程,利用Python進行數據分析,機器學習學習筆記,pandas官方文檔中文版,effective java(中文版)等20項福利資源

獲取方式:進入群後點開群公告即可領取下載連結

注意:請大家添加時修改備註為 [學校/公司 + 姓名 + 方向]

例如 —— 哈工大+張三+對話系統。

號主,微商請自覺繞道。謝謝!

推薦閱讀:

開放域知識庫問答研究回顧

使用PyTorch Lightning自動訓練你的深度神經網絡

PyTorch常用代碼段合集

相關焦點

  • 深度學習第46講:seq2seq模型
    在前幾講中筆者和大家講到了詞向量的一些內容,關於 word2vec 詞向量的主要類型和訓練方式,以及如何基於訓練好的詞向量做一些簡單的分析
  • 深度學習筆記 | 第15講:seq2seq與注意力機制模型
    在上一講中,小編給大家演示了如何利用 TensorFlow 根據原始文本訓練一個詞向量模型,以及如何根據給定的詞向量模型做一些簡單的自然語言分析。本節將繼續介紹自然語言處理中其他的一些模型,今天要介紹的模型就是一款經典的 RNN 模型——seq2seq,以及著名的注意力模型,最後小編會在這些理論的基礎上給出一個基於seq2seq和注意力模型的機器翻譯實例。
  • keras教程:手把手教你做聊天機器人(下)—— 快速搭建seq2seq模型
    準備對話數據2. 搭建seq2seq模型3. 訓練模型,並預測聊天效果並且,使用「字典」和「語料」,我們已經完成了第1步準備的工作。感興趣的同學,可以戳這裡:《 keras教程:手把手教你做聊天機器人(上) 》這一期,我們來構建機器人最核心的部分:seq2seq模型下面,我們就開始啦~~如果我問你:「今天的心情如何?」你會如何回答我?
  • NLP集大成之預訓練模型綜述
    在CV領域,預訓練模型通常使用監督訓練;但在NLP領域,通常是缺少大量監督數據的,只有在翻譯任務上有足夠大量的數據,所以CoVe預訓練模型就是在翻譯數據上訓練的。NLP中常見的預訓練任務有以下幾種:語言模型類語言模型(LM)LM通常特指自回歸語言模型或單向語言模型,其思想是用前T個詞預測第T+1個詞。
  • PyTorch專欄(六): 混合前端的seq2seq模型部署
    scripted_searcher graph: graph(%input_seq : Tensor,      %input_length : Tensor,      %max_length : int,
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    2.0,及基於此框架的ERNIE 2.0預訓練模型,在共計16個中英文任務上超越了BERT和XLNet, 取得了SOTA效果。通過使用連續學習,可以不斷積累新的知識,模型在新任務當中可以用歷史任務學習到參數進行初始化,一般來說比直接開始新任務的學習會獲得更好的效果。 a: 預訓練連續學習ERNIE 的預訓練連續學習分為兩步,首先,連續用大量的數據與先驗知識連續構建不同的預訓練任務。其次,不斷的用預訓練任務更新ERNIE 模型。
  • RNA seq第十九講 | 可變剪切的RNA-Seq分析
    )與可變剪切的先驗概率推斷差異可變剪切;在訓練的時候,首先使用無信息先驗模型只基於RNA-Seq數據生成高置信度差異以及非差異的標籤,然後再用於訓練,然後預測的結果又用於DARTS BHT(info),用預測結果作為先驗;Figure 1B: 與其他方法不同的是,DARTS不僅使用了cis sequence還整合了兩種情況下trans RNA-binding
  • 學界 | 百度提出冷聚變方法:使用語言模型訓練Seq2Seq模型
    近日,百度研究院發表論文提出冷聚變(Cold Fusion)方法,即在 Seq2Seq 模型訓練過程中加入語言模型,實現更快地收斂
  • RoBERTa中文預訓練模型:RoBERTa for Chinese
    本項目是用TensorFlow實現了在大規模中文上RoBERTa的預訓練,也會提供PyTorch的預訓練模型和加載方式。(roberta_l24_zh),使用30G文件訓練, 9月8日2、12層RoBERTa模型(roberta_l12_zh),使用30G文件訓練, 9月8日3、6層RoBERTa模型(roberta_l6_zh), 使用30G文件訓練, 9月8日4、PyTorch版本的模型(roberta_l6_zh_pytorch) 9月8日5、30G中文語料
  • 字節跳動開源序列推理引擎LightSeq
    2017 年 Google 提出了 Transformer [1] 模型,之後在它基礎上誕生了許多優秀的預訓練語言模型和機器翻譯模型,如 BERT [2] 、GPT 系列[13]等,不斷刷新著眾多自然語言處理任務的能力水平。與此同時,這些模型的參數量也在呈現近乎指數增長(如下圖所示)。例如最近引發熱烈討論的 GPT-3 [3],擁有 1750 億參數,再次刷新了參數量的記錄。
  • 中文預訓練ALBERT模型來了:小模型登頂GLUE,Base版模型小10倍、速度快1倍
    海量中文語料上預訓練ALBERT模型:參數更少,效果更好。預訓練小模型也能拿下13項NLP任務,ALBERT三大改造登頂GLUE基準。‍ALBERT模型介紹 Introduction of ALBERTALBERT模型是BERT的改進版,與最近其他State of the art的模型不同的是,這次是預訓練小模型,效果更好、參數更少。
  • 中文預訓練ALBERT模型來了:小模型登頂GLUE,Base版模型小10倍速度快1倍
    海量中文語料上預訓練ALBERT模型:參數更少,效果更好。ALBERT模型介紹 Introduction of ALBERTALBERT模型是BERT的改進版,與最近其他State of the art的模型不同的是,這次是預訓練小模型,效果更好、參數更少。
  • 資源 | 最強預訓練模型BERT的Pytorch實現(非官方)
    BERT,該模型被認為是最強 NLP 預訓練模型,刷新了 11 項 NLP 任務的當前最優性能記錄。簡介谷歌 AI 關於 BERT 的論文展示了該模型在多個 NLP 任務上取得的驚豔結果,包括在 SQuAD v1.1 QA 任務上的 F1 得分超過人類。該論文證明,基於 Transformer(自注意力)的編碼器可以有力地替代之前以合理方式訓練的語言模型。
  • 復旦邱錫鵬教授:2020最新NLP預訓練模型綜述
    2、提出了一種預訓練模型的分類體系,通過四種分類維度來劃分目前已有的預訓練模型。包括:表徵的類型,即:是否上下文感知編碼器結構,如:LSTM、CNN、Transformer預訓練任務類型,如:語言模型LM,帶掩碼的語言模型MLM,排列語言模型PLM,對比學習等針對特定場景的拓展和延伸。
  • 【Github】BERT-train2deploy:BERT模型從訓練到部署
    ,網上多數文章只提到了模型的訓練方法,後面的生產部署及調用並沒有說明。的字典,所以要在訓練的時候就保存起來,在convert_single_example這個方法裡增加一段: #--- save label2id.pkl --- #在這裡輸出label2id.pkl , add by xmxoxo 2019/2/27 output_label2id_file = os.path.join(FLAGS.output_dir, "label2id.pkl
  • 谷歌開源NLP模型可視化工具LIT,模型訓練不再「黑箱」
    深度學習模型的訓練就像是「黑箱操作」,知道輸入是什麼、輸出是什麼,但中間過程就像個黑匣子,這使得研究人員可能花費大量時間找出模型運行不正常的原因。假如有一款可視化的工具,能夠幫助研究人員更好地理解模型行為,這應該是件非常棒的事。
  • 國內數十位NLP大佬合作,綜述預訓練模型的過去、現在與未來
    BERT 、GPT 等大規模預訓練模型(PTM)近年來取得了巨大成功,成為人工智慧領域的一個裡程碑。由於複雜的預訓練目標和巨大的模型參數,大規模 PTM 可以有效地從大量標記和未標記的數據中獲取知識。通過將知識存儲到巨大的參數中並對特定任務進行微調,巨大參數中隱式編碼的豐富知識可以使各種下遊任務受益。現在 AI 社區的共識是採用 PTM 作為下遊任務的主幹,而不是從頭開始學習模型。
  • 解密多任務學習框架PALM,讓你的模型開啟「學霸」模式
    通過使用預訓練模型可以大大減少模型訓練對數據的依賴,僅需要使用少量數據在下遊任務中微調(Fine-tune),就可以獲得效果非常優秀的模型。不過如果希望獲得更好的效果,該怎麼辦呢?有人也許會說:多訓練幾個epoch嘛!但是對於這種單一任務且有監督學習的微調方式,單獨增加訓練epoch並不是一個好方法,過度的訓練容易損害模型的泛化能力,發生過擬合現象。
  • 飛槳對話模型工具箱(二):對話自動評估模塊ADE
    考慮到匹配任務(預測上下文是否匹配)與自動評估任務之間的天然聯繫,飛槳ADE模塊利用了匹配任務作為自動評估任務的預訓練,然後再利用少量標註數據進行模型微調。 因此,飛槳ADE模塊可以在無標註數據或少量標註數據的情況下使用:在無標註數據的情況下,利用負採樣訓練匹配模型作為評估工具,實現對多個對話系統回復質量排序。