「NLP」TransformerXL:因為XL剥纷,所以更牛

前面介紹過Transformer作為一種特征抽取器的強大之處痹籍。那么,它有沒有弱點呢晦鞋?能不能改進呢蹲缠?

本文介紹Transformer的改進版,TransformerXL悠垛∠叨ǎ看看它用了什么方法,改進了Transformer的哪些弱點确买。

作者 | 小Dream哥

編輯 | 言有三

1 原始Transformer哪里不好渔肩?

在上一篇“理解NLP中網(wǎng)紅特征抽取器Transformer”中,筆者介紹了Transformer的強大之處拇惋。那么周偎,Transformer就已經(jīng)強大到無懈可擊了嗎?其實不然撑帖,Transformer還有它的弱點蓉坎。

細想一下,BERT在應用Transformer時胡嘿,有一個參數(shù)sequence length蛉艾,也就是BERT在訓練和預測時,每次接受的輸入是固定長度的衷敌。那么勿侯,怎么輸入語料進行訓練時最理想的呢?當然是將一個完整的段落一次性輸入缴罗,進行特征提取了助琐。但是現(xiàn)實是殘酷的,這么大的Transformer面氓,內存是消耗不起的兵钮。所以現(xiàn)有的做法是蛆橡,對段落按照segment進行分隔。在訓練時掘譬,當輸入segment序列比sequence length短時泰演,就做padding;當輸入segment序列比sequence length長時就做切割葱轩。

這種做法顯然是一種權宜之計睦焕,它有這么兩個缺點:

1)長句子切割必然會造成語義的殘破,不利于模型的訓練靴拱。

2)segment的切割沒有考慮語義垃喊,也就是模型在訓練當前segment時拿不到前面時刻segment的信息,造成了語義的分隔缭嫡。

那么缔御,該如何解決上述問題呢抬闷?看看TransformerXL吧妇蛀。

2 TransformerXL的引入

我們先想一下,如果要我們自己來解決Transformer上面的問題笤成,會怎么處理呢评架?

熟悉NLP的同學,可能會想到RNN炕泳。在RNN中纵诞,為了獲取序列中的歷史記憶,采用了Recurrence機制培遵,在計算該時刻的狀態(tài)時浙芙,引入前一時刻的狀態(tài)作為輸入。那對Transformer來說籽腕,在計算當前序列的隱藏狀態(tài)時嗡呼,引入前一個序列的隱藏狀態(tài)信息不就可以解決上面的問題了嗎?

事情真的有這么簡單嗎皇耗?其實南窗,基本上也就是這么簡單,不過TransformerXL在引入時做了一些巧妙的設計郎楼。下面我們看看万伤,TransformerXL是如何引入這種Recurrence機制來解決上述問題的。

如圖所示呜袁,是傳統(tǒng)的Transformer在訓練和評估階段采用的語料輸入策略敌买。在訓練時,將整個語料庫分割成可管理的大小的更短的片段阶界,在每個片段中訓練模型放妈,忽略來自前一段的所有上下文信息北救;在評估階段,傳統(tǒng)的Transformer模型在每個步驟都消耗與訓練期間相同長度的一個segment芜抒。然后珍策,在下一步中,這個segment向右移動一個位置宅倒,并從頭開始處理攘宙,只在最后一個位置進行一次預測。

如上圖所示拐迁,在TransformerXL采用了不同的策略蹭劈,在訓練過程中,對上一個segment計算的隱藏狀態(tài)序列進行固定和緩存线召,并在模型處理下一個新的segment時對其進行利用铺韧。在評估階段,可以重用前面部分的表示缓淹,而不是像傳統(tǒng)模型那樣從頭開始計算哈打,這樣可以提高速度。

3 TransformerXL Recurrence機制

那么讯壶,上述的機制細節(jié)如何實現(xiàn)的呢料仗?下面我們來做一個詳細的介紹。

事實上伏蚊,問題的關鍵在于立轧,在計算當前序列當前層的隱藏狀態(tài)時,如何引入前一個序列上一層的隱藏狀態(tài)躏吊。TransformerXL的做法很簡單氛改,就是按照序列長度的維度將他們concate起來。如下的公式所示:

h_n_t是一個L*d的矩陣比伏,表示的是第t個輸入序列的第n層的隱藏層的狀態(tài)胜卤。L表示序列長度,d表示嵌入維度凳怨。

SG表示的Stop Gradient瑰艘,這非常重要,避免了RNN會出現(xiàn)的一系列問題肤舞。

從上述公式可以看出紫新,TransformerXL與傳統(tǒng)的Transformer的差異主要在于隱藏層輸入KV的差異。TransformerXL中引入了上一個序列前一個隱藏層的值李剖,將他們concatenate起來芒率,計算新的KV

4 Relative Positional Encodings

我們再想一想篙顺,引入上述機制偶芍,還有什么問題沒有充择。我們回想一下,在傳統(tǒng)的Transformer中匪蟀,輸入序列中的位置信息是怎么表示的椎麦?通過POS函數(shù)生成,它是位置i和維度d的函數(shù)材彪,也就是不同輸入segment在相同絕對位置中的位置表示是相同的观挎。在傳統(tǒng)的Transformer中,每個segment之間的表示是沒有關聯(lián)的段化,這當然就沒有問題嘁捷。但是在TransformerXL中,因為引入了前一時刻segment的信息显熏,就需要對不同時刻雄嚣,同樣是第i個的詞進行區(qū)分。

TransformerXL引入了一種Relative Positional Encodings機制喘蟆,會根據(jù)詞之間的相對距離而非像傳統(tǒng)的Transformer中的絕對位置進行編碼缓升。

在傳統(tǒng)的Transformer中,計算q_i和鍵k_j之間的attention分數(shù)的方式為

展開就是:

Exi是詞i的embedding履肃,Exj是詞j的embedding仔沿,Ui 和Uj 是位置向量坐桩。

在Transformer-XL中尺棋,對上述的attention計算方式進行了變換,轉為相對位置的計算绵跷,而且不僅僅在第一層這么計算膘螟,在每一層都是這樣計算。

對比來看碾局,主要有三點變化:

1)在b和d這兩項中荆残,將所有絕對位置向量UiUj都轉為相對位置向量Ri?j净当,與Transformer一樣内斯,這是一個固定的編碼向量,不需要學習像啼。

2)在c這一項中俘闯,將查詢的U_i^T*W_q^T向量轉為一個需要學習的參數(shù)向量u,因為在考慮相對位置的時候忽冻,不需要查詢絕對位置i真朗,因此對于任意的i,都可以采用同樣的向量僧诚。同理遮婶,在d這一項中蝗碎,也將查詢的U_i^T*W_q^T向量轉為另一個需要學習的參數(shù)向量v

3)將K的權重變換矩陣Wk轉為Wk_E?和Wk_R旗扑,分別作為content-based key vectors和location-based key vectors蹦骑。

總的來說,Relative Positional Encodings就是在計算attention分數(shù)時臀防,用相對位置R_i_j編碼來代替原來的絕對位置編碼Ui和Uj脊串。并且學習了相對位置v和u用來調整不同距離和不同嵌入的得分。

5 總結

總的來說TransformerXL對Transformer進行了一些調整清钥,試圖解決一些問題琼锋。按照論文的描述,TransformerXL學習的依賴關系比RNN長80%祟昭,比傳統(tǒng)Transformer長450%缕坎,在短序列和長序列上都獲得了更好的性能,并且在評估階段比傳統(tǒng)Transformer快1800+倍篡悟。

在XLnet中引入了Transformer-XL谜叹,獲得了不錯的效果。

TransformerXL是Transformer一種非常重要的改進搬葬,思想值得我們好好學習和研究荷腊,希望對你有所幫助。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末急凰,一起剝皮案震驚了整個濱河市女仰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抡锈,老刑警劉巖疾忍,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異床三,居然都是意外死亡一罩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門撇簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聂渊,“玉大人,你說我怎么就攤上這事四瘫『核裕” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵莲组,是天一觀的道長诊胞。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么撵孤? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任迈着,我火速辦了婚禮,結果婚禮上邪码,老公的妹妹穿的比我還像新娘裕菠。我一直安慰自己,他們只是感情好闭专,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布奴潘。 她就那樣靜靜地躺著,像睡著了一般影钉。 火紅的嫁衣襯著肌膚如雪画髓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天平委,我揣著相機與錄音奈虾,去河邊找鬼。 笑死廉赔,一個胖子當著我的面吹牛肉微,可吹牛的內容都是我干的。 我是一名探鬼主播蜡塌,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼碉纳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馏艾?” 一聲冷哼從身側響起劳曹,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攒至,沒想到半個月后厚者,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躁劣,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡迫吐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了账忘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片志膀。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鳖擒,靈堂內的尸體忽然破棺而出溉浙,到底是詐尸還是另有隱情,我是刑警寧澤蒋荚,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布戳稽,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏惊奇。R本人自食惡果不足惜互躬,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颂郎。 院中可真熱鬧吼渡,春花似錦、人聲如沸乓序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽替劈。三九已至寄雀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陨献,已是汗流浹背咙俩。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留湿故,地道東北人阿趁。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像坛猪,于是被迫代替她去往敵國和親脖阵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內容