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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

XLNET原理详解

發布時間:2023/12/4 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 XLNET原理详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

論文原文地址?arxiv.orgGitHub論文源碼下載?github.com

0. XLNet概述

XLNet是一個語言模型。和ELMO,GPT,BERT一脈相承,同時借鑒了Transformer-XL,故稱XLNet(XL含義源于衣服尺碼,意思是模型橫向更寬);并提出一些新方法改善了Bert存在的問題,目前取得了全面超越Bert的成果。和Bert一樣,XLNet也分為Pre-train和Fine-tune兩階段;并且參數規模比Bert更大。

1. AR(autoregressive) vs AE(autoencoding)

AR譯為自回歸,意思是對于序列 ,根據 預測 。GPT,ELMO都屬于AR語言模型。

AE譯為自編碼,意思是將序列 編碼為 。Bert屬于AE語言模型。

AR的缺點在于序列要么從前往后,要么從后往前,無法將上文和下文信息完全結合起來(ELMO只是將兩個方向concat)。AE模型的缺點在于Pre-train階段可能需要引入 標記(Bert模型),而 會帶來一系列問題。

2. Bert的痛點

得益于同時使用上文和下文信息,Bert取得了比GPT更好的效果。但是Bert需為此在Pre-train階段引入 標記,通過上下文來預測這些被mask的token。

引入 標記帶來一下兩個問題:

2.1 獨立性假設:Bert假設不同[mask]相互獨立,忽略了[mask]之間的相關性

設被mask的token集合為 ,整個序列為 ,Bert的訓練目標是最大化聯合概率分布 。在計算此概率分布的過程中,Bert會假設所有被mask的token( 中的token)相互之間都是獨立的,這樣就丟失了不同masked token之間的關聯。

論文中舉了一例,現有序列 ,

Bert如果隨機選擇了 和 進行mask并預測,則mask后序列變為

此時應該優化的目標是:

實際上bert的優化目標是:

若要滿足 , 則有

即New和York相互獨立。但顯然它們不太獨立,如果前面出現了“New”,那么后面出現“York”的概率理應大很多。

2.2 Pre-train階段和Fine-tune階段數據分布不一致

Bert在Pre-train階段需要對語料使用 標記;但在Fine-tune階段,所用語料中并沒有 標記。這導致兩個階段的訓練數據分布不一致,影響Fine-tune效果。

3. XLNet如何解決bert的缺陷

如果有一種模型,既能結合上文和下文,又能避免bert由于 導致的獨立性和數據分布一致性問題,就兩全其美了。為此,XLNet使用一系列方法,構造出了一種能夠結合上文和下文的AR模型。

排列組合獲取上下文信息

為了在不改變AR模型基本結構的條件下引入下文信息,XLNet使用了對輸入序列“排列組合”的方法,把下文信息排到前面,賦予了單向模型感知下文的能力。例如,現有序列 ,只需改變其順序,變換出 、 、 等序列,即可讓3看到4,2看到3和4,1看到2、3、4。下圖為不同排列方式下,位置"3"所能關注的位置示意圖(只能關注序列中在它之前的部分):

相同序列不同排列順序, 預測X3

將上述過程形式化,設 為長度為 的序列 的所有可能的排列, 為其中一種排列方式,, 為第其中 個元素, 為前 個元素。優化目標為 :

仍以序列 為例:

這樣,任何一個元素都可因排列組合方式的變換而成為序列最后一個元素 ,從而能夠看到所有上下文信息。

注意,排列組合并不是真的使用原始序列生成新的排列組合序列,并抽樣產生新的增強數據集來完成的,因為這種做法仍然會造成Pre-train和Fine-tune的語料分布不一致。XLNet的做法是在計算attention時mask掉對應位置,不同的mask對應不同的序列。后文將詳述此法。

雙流注意力

上述模型中,設 為 的hidden表示,則使用softmax計算next-token的分布時有:

由上式可知計算目標概率分布時, 根本沒有出現,這就丟失了 代表的原始序列中位置的信息。也就是說 處于句子任何位置都一樣。

形式化表述,設 ,但是 ,

此時有 ,(原文此公式應該是有小筆誤,將一個2寫成1)顯然和ground-truth沖突。

舉個例子,有序列 [暴雨,造成,大面積,晚點] ,產生排列組合序列 [暴雨,造成,大面積] 和 [暴雨,造成,晚點] , 則 就是共同的前置序列 [暴雨,造成], 就是"大面積", 就是"晚點"。它們 相等,也就是"大面積"和"晚點"出現的概率等價,不合邏輯。

注意,即使像Bert那樣在輸入中加入位置向量,仍無法避免 處位置信息缺失,原因如下圖:

位置信息是如何丟失的

要解決這個問題,就必須引入位置信息 ,然后將 變為 ,調整后的概率分布的計算公式如下:

XLnet為 和 分別開辟一條attention流。因此稱為雙流attention。論文中給出的原理圖示如下:

(a): 內容流attention和標準的self-attention一樣。(b): Query流attention, 無法訪問目標位置的內容信息。 (c): 整個雙流attention。

和 的計算公式如下:

注意,一個是 ,一個是 。在 中,m代表編碼器層數, , 。 是隨機初始化的向量(位置向量?), 是隨機初始化的詞向量。

另外,你可能會發現在計算 時,由于 , 為空。如下圖:

難道這時候所有attention權重都為0, 計算出來也是0向量?當然不是。因為XLNet還有memory機制和殘差連接(與transformer編碼器相同),保證 不是0向量。

4. XLNet如何降低訓練開銷

用了“排列組合”技術后,理論上每個原始序列的每種排列組合序列里的每一個位置 都可以作為target來訓練。但是這樣搞訓練開銷太大,畢竟Bert只在更少的語料上挑了原始序列中15%的位置,普通玩家就已經玩不轉了。XLNet的解決辦法是只把一部分位置作為target進行訓練,那么如何選取這一部分位置呢?XLNet這里是把一個序列 劃分為兩段,只對后一段進行訓練。

例如 只訓練3和4,不訓練1和2。

具體地,就是取一個位置 , 滿足 , 不作為target, 作為target進行訓練。關于 值的選取,作者給出了一個超參 ,滿足 ,作者設置 。

優化目標變為:

5. Transformer-XL與memory

在實際應用中,遇到超長序列(篇章,對話等),通常需要拆成sentence級別的短序列,這樣割裂了短序列之間的聯系。對于這個問題,Transformer-XL的做法是把上一個短序列各層輸入的一部分作為memory緩存,和當前各層的輸入拼接,以獲取上文的信息。

具體地,設長序列為 ,分為前序列 ,后序列 。加入memory機制后, 的計算公式變為:

attention mask也變為如下模樣(自己理解的,可能有誤):

加入memory后的attention mask示意圖

事實上,XLNet并不將整個 放入memory,而是截取其中一部分。根據論文列出的超參,序列長度最大為512,memory最大長度為384。

6. 整體計算過程

XLNet和transformer一樣,每層都要加入前饋連接,層歸一化,以及前饋網絡。

下圖為 的整體注意力計算示意圖

h的計算示意圖,序列為3,2,4,1
g的計算示意圖,序列為3,2,4,1

7. 總結

XLNet這篇paper中,排列組合序列,雙流注意力,memory機制都是非常值得學習和借鑒的思路。但是在模型越來越大的趨勢下,自己動手pre-train已經不可能。只有坐等大廠放出基于中文語料pre-train的模型了。

目前依然有一些細節,在論文中沒有明確體現。例如:

排列組合模式如何采樣

對一個原始序列的排列組合有 種,不可能全都都用。如何對排列組合進行采樣,文中沒有具體說。

memory的實現細節

memory的實現細節(如何mask)還需推敲,需要研讀源碼以及transformer-XL論文

總結

以上是生活随笔為你收集整理的XLNET原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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