久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    NLP預訓練家族 | Transformer-XL及其進化XLNet

     520jefferson 2021-07-30

    NewBeeNLP
    永遠有料,永遠有趣
    194篇原創內容
    公眾號

    最近又重新讀了Transformer-XL和XLNet的論文和代碼,又有很多新的感悟。其中,要想搞懂XLNet的同學一定要首先明白Transofrmer-XL,因為XLNet是基于Transformer-XL進行改進的。

    圖片

    • tips:Transformer-XL投稿是被ICLR 2019拒稿的,作者基于Transformer-XL改進提出了XLNet,被NeurIPS 2019接收

    Transformer-XL

    論文全稱及連接:《Transformer-xl: Attentive language models beyond a fixed-length context[1]

    項目地址:https://github.com/kimiyoung/transformer-xl

    Vanilla Transformer語言模型

    Transformer結構第一次提出來是用于機器翻譯任務,提出后自然有個想法:「Transformer結構能不能用于訓練語言模型?」 答案是肯定的。RNN、LSTM等網絡結構訓練語言模型的最大缺點在于容易梯度消失,難以學習長期依賴,但是Transformer沒有合格缺點,因為它沒有沿時間線進行橫向傳播的過程,這樣來說,Transformer很適合訓練語言模型。

    怎么訓練?很簡單,舉個例子,假如現在我們有一句話包含100個token,在預測第一個token的時候,我們把其它的99個token進行attention mask掉,只輸入一個開始標記,讓模型預測第一個token;在預測第二個token的時候,把剩下的98個token attention mask掉,只讓模型看見開始標記和第一個token;在預測第三個token的時候,把剩下的97個token attention mask掉,只讓模型看見開始標記和前兩個token。。。損失函數為真實token和預測token的交叉熵,這樣模型不斷學習,不斷更新參數,就訓練得到一個語言模型了。

    想想這樣有個什么問題?問題就是真實的文本可沒有只包含100個token這么少。舉個例子,假設我現在手頭有個文章是包含4000個token的,那我就要把這4000個token都作為輸入,原理上可以這么做,但實際上,輸入的token很多的情況下,中間層attention的計算資源會爆炸。

    Vanilla Transformer的做法是「切片」,如把4000個token切成8段,每段包含500個token,再對每段進行獨立的訓練,也即在第二段訓練的時候,是看不到第一段的信息的,這樣導致的問題就是「上下文碎片問題(context fragmentation problem)」,由于切片長度限制,模型并不能學習到足夠常的依賴信息,這樣會大大損害學習出來的語言模型的性能。

    在評估時,為了能利用訓練時的最長上下文信息,是每個時間步向右移動一個token,導致的結構是評估耗費的計算資源很大。

    圖片

    改進點

    「改進點一:循環機制」

    圖片

    在計算每個segment的時候,通過緩存上一個segment的信息,把前面segment的信息也考慮進正向傳播過程中(上一個segment的信息雖然參與正向傳播,但上一個segment是不會參與反向傳播的)。具體的看,下面的式子,

    這里的 指的是Transformer第n-1層的第 個segmetn的Encoder的輸出,把它與Transformer第n層的第 的encoder的輸出沿著時間軸拼接在一起,SG表示stop-gradient,即前一個segmetn的信息只參與正向傳播,并不會用到反向傳。另外,在計算查詢矩陣q時,只會用當前segmetn來計算得到;只有在計算鍵值向量時,才會用到拼接的segmetn向量。

    這樣的做法,能大大緩解上下文碎片的問題,舉個例子,假設Transformer的encoder一共有4層,每個segment為500個token。根據循環機制的原理,第4層的第 個segmetn的輸出不僅考慮了第三層encoder的第 個encoder的輸出,也考慮了第 個encdoer的輸出,而第 個encdoer的輸出,不僅考慮了第二層encoder的第 個encdoer的輸出,也考慮了第 個encdoer的輸出,也即,上下文的最大依賴長度是線性增加的,如O(N*L),如這里所說的例子,雖然,一個segmetn是500個token,但其實在最后輸出時,足足考慮了4 * 500 = 2000個token這么多!上下文碎片的問題也就自然得到了大大的緩解了。

    另外,在評估時,由于采用了循環機制,我們就不必每次只向右移動一步了,而且可以采用同訓練時候差不多的片段機制,從而大大提高了評估效率。

    「改進點二:相對位置編碼」

    上面所說的循環機制還有個問題待解決,就是位置編碼,我們知道,原生的Transformer使用的是絕對位置編碼,但絕對位置編碼跟循環機制結合會導致一個問題,舉個例子,我們在計算第 的輸出時,不僅考慮了第 個片段的輸入,還考慮了第 個片段的輸入,假設我們采用絕對位置編碼,那第 個片段和 個片段的第1個token的位置編碼是一樣的,但這是明顯的不合理的。因此,作者提出了一種相對位置編碼的思想。

    具體的,原生的絕對位置編碼在計算attention時,如下式所示,

    采用相對位置編碼,

    • 將絕對位置embedding 用相對位置 代替,注意,這里的 是用原生Transformer的三角函數編碼模式,是不需要學習的;
    • 去代替 ,理由是由于相對編碼的思想,無論query在哪個位置,他們對于自身的位置編碼信息應該都是一樣的,同理,用 去代替
    • 分解成 ,分別表示基于內容的健向量和基于位置的健向量。

    通常這樣的變換,上面的每一項都有其相應的意義

    • (a)項為基于內容的尋址;
    • (b)項為基于內容的位置偏置;
    • (c)項為全局的內容偏置;
    • (d)為全局的位置偏置。

    把循環機制和相對位置編碼的信息合并后,Transformer-XL的最終形態

    Transformer-XL不足及與BERT的對比

    Transformer-XL這篇論文為什么沒有被ICLR接受,我認為主要是因為并沒有與當前一些基于Transformer的模型,如BERT等對比,并沒有在具體的NLP任務如分類、QA等應用進行實踐。論文里只是簡單提了Transformer-XL在文本生成(由于Transformer-XL是語言模型,所以用于文本生成很自然)、無監督特征學習等都有前景,并沒有給出在某些具體的GLUE等的表現,所以略顯單薄。

    不少人都說Transformer-XL能有效解決BERT的長度限制問題,確實,Transformer-XL是不限制文本長度的,它的預訓練模式是語言模型的訓練目標,通過循環機制和相對編碼,可以接受無限長的輸入文本。應用到下游任務也很簡單,如文本分類可以用最后一個token的輸出再接一些前連接層來做分類,序列標注任務也可以用每個token的輸出再接一些網絡。

    為什么BERT是有長度限制?因為在預訓練的時候,就把輸入長度限制在512,BERT會把1~512位置映射到一個position embedding,沒有512以上的position embedding。我們當然也可以重頭預訓練一個最大長度為1000的BERT,但會很耗資源。

    Transformer-XL輸入是沒有position embedding的,相對位置信息是加在每個層encoder的attention計算中。除此之外,Transformer-XL預訓練是只利用了單項信息,BERT是利用了雙向的上下文編碼,所以可以期待對于短文本,Transformer-XL是打不過BERT的,長文本的話還有一點可能。

    XLNet

    論文全稱及連接:《XLNet: Generalized Autoregressive Pretraining for Language Understanding[2]

    項目地址:https://github.com/huggingface/transformers/blob/master/src/transformers/models/xlnet/modeling_xlnet.py

    XLNet的源碼我沒有看作者發的tensorflow版本,而是看的huggingface的pytorch版本。

    AR & AE

    「自回歸語言模型(Autoregressive LM)」

    • 如Transformer-XL,GPT等等,任務為根據上文內容預測下一個單詞,預訓練任務為單項的語言模型任務
    • 優點:可以完成生成類的NLP任務
    • 缺點:只能利用單向信息

    「自編碼語言模型(Autoencoder LM)」

    • 如BERT,根據上下文單詞來預測被【MASK】掉的單詞(噪聲);
    • 優點:能利用到雙向信息;
    • 缺點:預訓練階段和Fine-tuning階段不一樣,預訓練時輸入有【MASK】,但在應用到具體下游任務時,輸入是沒有【MASK】的。

    Permutation Language Modeling

    XLNET的終極目的就是結合自回歸語言模型和自編碼語言模型的優點,提出了排列語言模型。具體的,看下圖

    圖片


    假設我們現在要預測第3個token。正常的語言模型的序列是1 -> 2 -> 3 -> 4,我們對其做「排列組合」,排列方式應該有4!=24種,上圖舉例了其中的4種,如第一種3 -> 2 -> 4 -> 1,這樣排列的話,3是看不到2和4和1的,只能看到上一個segment的輸入(這里可以先不不用理,下面會說,XLNet利用了Transformer-XL的思想,所以會有上一個segment作為mem的概念),通過排列,在預測token3的時候,總會有一些排列能考慮到1、2、4,窮舉排列,一起訓練,這樣的話,模型能將3上下文的信息都能學到。

    注意的是,實際在預訓練時,并非真的排列,如2 -> 4 -> 3 -> 1,并不是排成這個序列,而是利用attention mask的思想來近似作用這種排列,就是把token1 mask掉,因為按照這個排列,token3應該是看不到token1的,利用這種attention mask的思想來近似實現排列。

    雙流自注意力

    根據上面的思想,又引出了一個問題,舉個例子I love New York這四個token,現在有兩個序列1-> 2 -> 3 ->4和1-> 2 -> 4 ->3,現在假設已經知道前面兩個token是I love,要預測下一個token,很明顯,在兩個序列中,下一個token為New的概率都是一樣的,這是非常不合理的,因為下一個token的位置是不一樣的,并沒有把位置信息考慮進去。因此,作者提出了一種雙流自注意力。

    • 當token用于預測后面的字符,這時候,它應該能看到自己的內容信息和位置信息;
    • 當token用于預測自己到底是哪個字符,這時候,它應該只能看到自己的位置信息。

    借此,提出兩種自注意流

    • The content representaion
    • The query representaion

    圖片


    加入位置作為預測信息后,預測下一個token的概率變成

    初始化第一層 ,其中 為一個可訓練的向量, 為相應的詞嵌入。兩種Attention在接下來每層的構造

    在fine tuning應用于下游任務時,把 挪走,只保留

    圖片

    圖片

    與Transformer-XL的結合

    這里就是把Transformer-XL的循環機制和相對位置編碼引進XLNet中,值得注意的是,Permutation只爭對當前的segment,上一個segment的排序是原文本的順序排列。

    多個Segments的輸入

    像BERT之類的模型,輸入是可以是一對文本,這樣的預訓練方式可以適應輸入為不止一個句子的下游任務。XLNet采用了一個相對Segment編碼的方式來解決輸入多個句子的問題。分別用兩個segment編碼 ,其中 是每層endoer可以學習的參數,把他們也加進去attention的計算中,,這里 為查詢向量, 為可學習的編制,當兩個token不是來源于同一句時,=,當來自同一句時,

    想想這樣做的好處?好處就是XLNet不再限制輸入的為一對句子對,而是可以超過兩個以上句子作為輸入,因為XLNet不像BERT一樣,輸入時的segment embedding只能為0或1再映射到一個向量加入到input中,XLNet不是在輸入層映射到0和1,而是在每一層encoder通過引入segmetn編碼,來處理多個句子輸入的問題。

    實驗結果

    值得注意的是,XLNet相對于BERT使用了更多的訓練預料,由于是晚于BERT出來的模型,自然效果是比BERT要好的,與BERT 的比較

    圖片


    與RoBERTa的比較

    圖片


    圖片


    一起交流

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 狠狠做五月深爱婷婷天天综合| 清一区二区国产好的精华液| 国精品人妻无码一区免费视频电影| 自拍偷自拍亚洲精品播放| 日本一区二区三区专线| 国产亚洲精品第一综合另类灬| 日本在线看片免费人成视频| 国产情侣激情在线对白| 最近2019中文字幕大全视频1| 在线 欧美 中文 亚洲 精品| 狠狠色噜噜狠狠亚洲AV| 国产欧美日韩亚洲一区二区三区 | 50岁熟妇的呻吟声对白| 久久综合九色欧美综合狠狠| A男人的天堂久久A毛片| 国产一区二区波多野结衣| 天堂久久久久VA久久久久| 国产性一交一乱一伦一色一情| 秋霞A级毛片在线看| 午夜国产精品福利一二| AV无码国产在线看免费网站| 久久精品国产99国产精品严洲| 亚洲爆乳无码一区二区三区| 狠狠色狠狠色综合久久蜜芽| 宝贝腿开大点我添添公视频免 | 国产成人亚洲精品| 天天澡日日澡狠狠欧美老妇| 天堂资源中文最新版在线一区| 奇米777四色成人影视| 成人午夜激情在线观看| 免费观看一区二区三区| 久久精品国产99国产精品严洲| 国内精品久久久久久无码不卡| 成人特黄A级毛片免费视频| 人妻中文字幕精品系列| 久久大蕉香蕉免费| 欧美交A欧美精品喷水| 日本一道一区二区视频| 无码国产精品一区二区免费I6 | 亚洲熟妇自偷自拍另类| 中文字幕国产精品资源|