0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Transformer的細(xì)節(jié)和效果如何

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 作者:深度學(xué)習(xí)自然語言 ? 2022-08-30 10:12 ? 次閱讀

在文本理解任務(wù)(Natural Language Understanding)上,預(yù)訓(xùn)練模型已經(jīng)取得了質(zhì)的飛躍,語言模型預(yù)訓(xùn)練+下游任務(wù)fine-tune基本上已經(jīng)成為標(biāo)配。

很多人曾經(jīng)嘗試將 BERT 等預(yù)訓(xùn)練語言模型應(yīng)用于文本生成任務(wù)(Natural Language Generation),然而結(jié)果并不理想。究其原因,是在于預(yù)訓(xùn)練階段和下游任務(wù)階段的差異。

BART這篇文章提出的是一種符合生成任務(wù)的預(yù)訓(xùn)練方法,BART的全稱是Bidirectional and Auto-Regressive Transformers,顧名思義,就是兼具上下文語境信息和自回歸特性的Transformer。那么它的細(xì)節(jié)和效果如何呢,就讓我們一起來看看吧

論文名稱:《BART: Denoising Sequence-to-Sequence Pre-training for NaturalLanguage Generation, Translation, and Comprehension》

論文鏈接:https://arxiv.org/pdf/1910.13461.pdf

1. 從GPT,BERT到BART

GPT:是一種 Auto-Regressive(自回歸)的語言模型。它也可以看作是Transformer model的Decoder部分,它的優(yōu)化目標(biāo)就是標(biāo)準(zhǔn)的語言模型目標(biāo):序列中所有token的聯(lián)合概率。GPT采用的是自然序列中的從左到右(或者從右到左)的因式分解。

BERT:是一種Auto-Encoding(自編碼)的語言模型。它也可以看作是Transformer model的Encoder部分,在輸入端隨機(jī)使用一種特殊的[MASK]token來替換序列中的token,這也可以看作是一種noise,所以BERT也叫Masked Language Model。

1245fc58-27dd-11ed-ba43-dac502259ad0.png表1. GPT和BERT的對比

BART:吸收了 BERTbidirectional encoderGPTleft-to-right decoder 各自的特點;是建立在標(biāo)準(zhǔn)的 seq2seq Transformer model 的基礎(chǔ)之上,這使得它比 BERT 更適合文本生成的場景;此外,相比GPT也多了雙向上下文語境信息。在生成任務(wù)上獲得進(jìn)步的同時,它也可以在一些文本理解類任務(wù)上取得SOTA。

1256211e-27dd-11ed-ba43-dac502259ad0.png圖1. BERT、GPT和BART對比

1.1. 關(guān)于BART的討論

Loss Function 就是重構(gòu)損失, 也就是decoder的輸出和原文ground truth之間的交叉熵。

BART 的結(jié)構(gòu)在上圖中已經(jīng)很明確了:就是一個BERT+GPT的結(jié)構(gòu);但是不同之處在于(也是作者通篇在強(qiáng)調(diào)的),相對于BERT中單一的noise類型(只有簡單地用[MASK] token進(jìn)行替換這一種noise),BART在encoder端嘗試了多種noise。其原因和目的也很簡單:

BERT的這種簡單替換導(dǎo)致的是encoder端的輸入攜帶了有關(guān)序列結(jié)構(gòu)的一些信息(比如序列的長度等信息),而這些信息在文本生成任務(wù)中一般是不會提供給模型的。

BART采用更加多樣的noise,意圖是破壞掉這些有關(guān)序列結(jié)構(gòu)的信息,防止模型去“依賴”這樣的信息。

1.2. BART中的多種Noise

Token Masking: 就是BERT的方法----隨機(jī)將token替換成[MASK]。

Token Deletion: 隨機(jī)刪去token。

Text Infilling: 隨機(jī)將一段連續(xù)的token(稱作span)替換成一個[MASK],span的長度服從 的泊松分布。注意span長度為0就相當(dāng)于插入一個[MASK]。

Sentence Permutation: 將一個document的句子打亂。

Document Rotation: 從document序列中隨機(jī)選擇一個token,然后使得該token作為document的開頭。

129d6bbe-27dd-11ed-ba43-dac502259ad0.png表2. 不同noise及其作用

注意這里不同的noising變換方式還可以組合。

2. BART在下游任務(wù)上的應(yīng)用

2.1. Sequence Classification Task

將該序列同時輸入給encoder端和decoder端,然后取decoder最后一個token對應(yīng)的final hidden state作為label,輸入給一個線性多分類器。

12bd259e-27dd-11ed-ba43-dac502259ad0.png圖2. BART用于序列分類任務(wù)

注意在序列的最后要加一個token,保證seq2seq模型輸出的label包含序列中每一個token的信息,這是因為decoder的輸入是right-shifted的,不這樣做的話label將不包含最后一個token的信息。

2.2. Token Classification Task

這一類問題意思是,將序列的所有token都看作獨立的選項,序列長度為M,那么選項的個數(shù)就是M,在序列的所有token中選擇k個。屬于這類的經(jīng)典問題有SQuAD,即answer endpoint classification

將該序列同時輸入給encoder端和decoder端,使用decoder的final hidden states作為每個token的向量表征,該向量表征作為分類問題的輸入,輸入到分類系統(tǒng)中去。

2.3. Sequence Generation Task

由于BART本身就是在sequence-to-sequence的基礎(chǔ)上構(gòu)建并且預(yù)訓(xùn)練的,它天然比較適合做序列生成的任務(wù),比如概括性的問答,文本摘要,機(jī)器翻譯等。

2.4. Machine Translation

具體的做法是將BART的encoder端的embedding層替換成randomly initialized encoder,新的encoder也可以用不同的vocabulary。

通過新加的Encoder,我們可以將新的語言映射到BART能解碼到English(假設(shè)BART是在English的語料上進(jìn)行的預(yù)訓(xùn)練)的空間。具體的finetune過程分兩階段:

第一步只更新randomly initialized encoder + BART positional embedding + BART的encoder第一層的self-attention 輸入映射矩陣。

第二步更新全部參數(shù),但是只訓(xùn)練很少的幾輪。

12f8aace-27dd-11ed-ba43-dac502259ad0.png圖3. BART用于機(jī)器翻譯

3. 實驗1: 不同預(yù)訓(xùn)練目標(biāo)的比較

論文對不同的pretrain objective,在多個下游任務(wù)上進(jìn)行了比較嚴(yán)謹(jǐn)詳盡的實驗對比。模型結(jié)構(gòu): Transformer-base。

不同的Pre-train Objective有:

GPT: (Auto-Regressive) Language model

XLNET: Permuted Language Model

BERT: Masked Language Model

UniLM: Multitask Masked Language Model

MASS: Masked Seq-to-Seq

對比實驗涉及的下游任務(wù)有:

SQuAD: 將context和question連在一起輸入Encoder和Decoder,輸出的是context中的span。

MNLI: 將2個句子連在一起輸入Encoder和Decoder(中間加上[EOS]表示隔開),模型輸出的是兩個句子之間的關(guān)系,是典型的序列分類問題。

ELI5: 抽象的問答,將context和question連在一起輸入,模型輸出抽象摘要文本。

XSum: 新聞?wù)扇蝿?wù)

ConvAI2: 對話生成任務(wù)

CNN/DM:摘要生成任務(wù)

132030d0-27dd-11ed-ba43-dac502259ad0.png

3.1 結(jié)論

不同預(yù)訓(xùn)練方法各有千秋,在不同下游任務(wù)上的效果差異很大:比如說Language Model在ELI5任務(wù)上最好,但是在SQuAD任務(wù)上是最差的。

BART預(yù)訓(xùn)練中的Token Masking作用很關(guān)鍵:Token Masking包括Token Masking,Token Deletion,Text Infilling。從表中可以看出,只做Document Rotation / Sentence Shuffling的預(yù)訓(xùn)練模型效果很差。另外,Deletion比Masking效果好。

134d5e52-27dd-11ed-ba43-dac502259ad0.png

Left-to-Right Pretraining會提升生成任務(wù)的效果:和Masked Language Model和Permuted Language Model相比,包含Left-to-Right預(yù)訓(xùn)練的模型在生成任務(wù)上表現(xiàn)更好。

1383ff2a-27dd-11ed-ba43-dac502259ad0.pngMasked Language Model和Permuted Language Model相比于包含Left-to-Right Auto-regressive Pre-training的模型,在生成任務(wù)上明顯表現(xiàn)要差一些

雙向的encoder對于SQuAD任務(wù)很重要

ELI5任務(wù)上單純的Language Model (Left-to-Right AR Language Model)表現(xiàn)最好,一個可能的解釋是該任務(wù)的輸出和輸入關(guān)系不大,因此BART沒有優(yōu)勢。

預(yù)訓(xùn)練目標(biāo)不是唯一的重要因素,比如表中的Permuted Language Model的效果不如XLNet,作者提到,可能的原因有XLNet中有一些結(jié)構(gòu)上的改進(jìn)(比如relative-position embedding和segment-level recurrence)

4. 實驗2: 大規(guī)模實驗

實驗發(fā)現(xiàn),在discriminative任務(wù)(NLU)上和RoBERTa/XLNet效果持平,在生成任務(wù)上顯著高于BERT, UniLM, XLNet, RoBERTa等模型

4.1. Discriminative Tasks

BART并沒有因為單向的decoder而影響在文本理解類任務(wù)上的效果:

13ba9bfc-27dd-11ed-ba43-dac502259ad0.png

4.2. Generation Tasks

BART得益于單向的decoder,在三大類生成任務(wù)上效果拔群

摘要生成:

13d2a97c-27dd-11ed-ba43-dac502259ad0.png摘要任務(wù)上的對比

對話生成:

13e45b4a-27dd-11ed-ba43-dac502259ad0.png對話生成任務(wù)上的對比

抽象問答

1408de3e-27dd-11ed-ba43-dac502259ad0.png抽象問答任務(wù)上的對比

4.3. 翻譯

143900be-27dd-11ed-ba43-dac502259ad0.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 語言模型
    +關(guān)注

    關(guān)注

    0

    文章

    487

    瀏覽量

    10201
  • 機(jī)器翻譯
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    14837
  • Transformer
    +關(guān)注

    關(guān)注

    0

    文章

    135

    瀏覽量

    5944

原文標(biāo)題:4. 實驗2: 大規(guī)模實驗

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    adxl加速度mems測量低頻振動的效果如何?

    之前選用了adxl372 和adxl345,我想請問一下,這些mems對低頻振動的檢測效果如何 目前項目需求測量0.5Hz-1000kHz頻率的振動,量程大概在±20g 以上兩種mems是否滿足。
    發(fā)表于 12-28 07:09

    如何實現(xiàn)在圖標(biāo)圖像中實現(xiàn)一個點,效果如下圖

    如何實現(xiàn)在圖標(biāo)圖像中實現(xiàn)一個點,效果如下圖,紅色的點可以動。坐標(biāo)為(x°,Y°)
    發(fā)表于 07-13 08:39

    如何更改ABBYY PDF Transformer+界面語言

    在安裝ABBYY PDF Transformer+時會讓您選擇界面語言。此語言將用于所有消息、對話框、按鈕和菜單項。在特殊情況下,您可能需要在安裝完成后更改界面語言以適應(yīng)需求,方法其實很簡單,本文
    發(fā)表于 10-11 16:13

    PDF Transformer+“調(diào)整亮度”警告消息解決辦法

    在掃描期間,如果亮度設(shè)置不正確,ABBYY PDF Transformer+將顯示警告消息。用黑白模式掃描時,也可能需要調(diào)整亮度設(shè)置。下面小編給大家講講ABBYY PDF Transformer
    發(fā)表于 10-13 14:20

    如何更改ABBYY PDF Transformer+旋轉(zhuǎn)頁面

    為了實現(xiàn)最佳識別效果,頁面應(yīng)有標(biāo)準(zhǔn)方向,即,水平線條和字母應(yīng)向上。所以有時不得不對文檔頁面進(jìn)行旋轉(zhuǎn),以優(yōu)化ABBYY PDF Transformer+轉(zhuǎn)換結(jié)果。下面小編給大家講講如何更改ABBYY
    發(fā)表于 10-16 10:19

    LabVIEW中圖像濾波Vi以及實現(xiàn)效果如何實現(xiàn)

    新手求助!??!LabVIEW中圖像濾波Vi以及實現(xiàn)效果如何實現(xiàn),能提供子Vi最好先謝謝大神
    發(fā)表于 01-11 22:58

    VL53L1水下使用效果如何?

    我知道舊的vl6180x在水下工作,但我找不到任何有關(guān)VL53L1的信息。有人試過嗎?如果是這樣,它的效果如何?我主要關(guān)注接近檢測/距離測量,但有限的手勢/運動檢測將是一個很好的獎勵
    發(fā)表于 04-15 09:23

    請問AT24C64和MX25L6406E效果如何?

    想試試AT24C64,MX25L6406E看看效果如何,不知道是否有人試過
    發(fā)表于 08-06 02:39

    CJMCU-115或者GY-33傳感器的效果如何,是否沒有色差?

    CJMCU-115或者GY-33傳感器的效果如何,是否沒有色差?
    發(fā)表于 10-17 06:01

    空調(diào)制熱效果如何?空調(diào)制熱多少度最合適?

    空調(diào)制熱效果如何? 首先,空調(diào)不制熱并不能說明是空調(diào)本身的質(zhì)量出了問題,因為空調(diào)制熱也受到外界低溫條件的影響。陳先
    發(fā)表于 11-22 16:52 ?6614次閱讀

    EE-26:AD184x Sigma Delta轉(zhuǎn)換器:它們使用直流輸入的效果如何?

    EE-26:AD184x Sigma Delta轉(zhuǎn)換器:它們使用直流輸入的效果如何?
    發(fā)表于 04-17 17:21 ?7次下載
    EE-26:AD184x Sigma Delta轉(zhuǎn)換器:它們使用直流輸入的<b class='flag-5'>效果如</b>何?

    我們可以使用transformer來干什么?

    技術(shù)細(xì)節(jié)問題。 解讀以上所有問題不再本文范疇內(nèi),但筆者也將在后續(xù)文章中繼續(xù)探索以上問題。本文重點關(guān)注:我們用transformer干啥? 我們用transformer干啥?筆者突
    的頭像 發(fā)表于 04-22 10:49 ?1.2w次閱讀
    我們可以使用<b class='flag-5'>transformer</b>來干什么?

    Go項目中引入中間件的目的和效果如

    中間件是什么?Go 項目中引入中間件的目的和效果如何?本文詳細(xì)介紹了Golang 中間件。 中間件是一種計算機(jī) 軟件,可為 操作系統(tǒng) 提供的 軟件應(yīng)用程序 提供服務(wù),以便于各個軟件之間的溝通,特別是
    的頭像 發(fā)表于 08-14 14:24 ?1931次閱讀

    基于Transformer的目標(biāo)檢測算法

    掌握基于Transformer的目標(biāo)檢測算法的思路和創(chuàng)新點,一些Transformer論文涉及的新概念比較多,話術(shù)沒有那么通俗易懂,讀完論文仍然不理解算法的細(xì)節(jié)部分。
    發(fā)表于 08-16 10:51 ?574次閱讀
    基于<b class='flag-5'>Transformer</b>的目標(biāo)檢測算法

    使用PyTorch搭建Transformer模型

    Transformer模型自其問世以來,在自然語言處理(NLP)領(lǐng)域取得了巨大的成功,并成為了許多先進(jìn)模型(如BERT、GPT等)的基礎(chǔ)。本文將深入解讀如何使用PyTorch框架搭建Transformer模型,包括模型的結(jié)構(gòu)、訓(xùn)練過程、關(guān)鍵組件以及實現(xiàn)
    的頭像 發(fā)表于 07-02 11:41 ?1066次閱讀