Transformer Family
最近Transformer的文章看的有點(diǎn)多,正好昨天發(fā)現(xiàn)一篇整理的比較好的文章,在這里翻譯一下分享給大家。
鑒于內(nèi)容有點(diǎn)多,之后將對(duì)本文章持續(xù)更新...
(一)Attention 以及 Self-Attention
1.Attention
- 是神經(jīng)網(wǎng)絡(luò)中的一種機(jī)制:模型可以通過選擇性地關(guān)注給定的數(shù)據(jù)集來學(xué)習(xí)做出預(yù)測(cè)。Attention的個(gè)數(shù)是通過學(xué)習(xí)權(quán)重來量化的,輸出則通常是一個(gè)加權(quán)平均值。
2.Self-Attention:
- 是一種注意機(jī)制,模型利用對(duì)同一樣本觀測(cè)到的其他部分來對(duì)數(shù)據(jù)樣本的剩下部分進(jìn)行預(yù)測(cè)。從概念上講,它感覺非常類似于non-local的方式。還要注意的是,Self-attention是置換不變的;換句話說,它是對(duì)集合的一種操作。
而關(guān)于attention和self-attention存在非常多的形式,我們之前常見的Transformer是依賴于scaled-dot-product的形式,也就是:給定query矩陣Q, key矩陣K以及value矩陣V,那么我們的輸出就是值向量的加權(quán)和,其中,分配給每個(gè)值槽的權(quán)重由Quey與相應(yīng)Key的點(diǎn)積確定。
(二)Multi-Head Self-Attention
multi-head self-attention是Transformer的核心組成部分,和簡(jiǎn)單的attention不同之處在于,Multihead機(jī)制將輸入拆分為許多小的chunks,然后并行計(jì)算每個(gè)子空間的scaled dot product,最后我們將所有的attention輸出進(jìn)行拼接。
(三)Transformer
Transformer,很多時(shí)候我們也稱之為"vanilla Transformer", 它有一個(gè)encoder-decoder的結(jié)構(gòu),decoder的Transformer可以在語言建模的時(shí)候獲得非常好的效果。
Encoder-Decoder結(jié)構(gòu)
Encoder生成一個(gè)基于attention的表示,能夠從一個(gè)大的上下文中定位一個(gè)特定的信息片段。它由6個(gè)身份識(shí)別模塊組成,每個(gè)模塊包含兩個(gè)子模塊、一個(gè)multihead self-attention和一個(gè)point-wise全連接前饋網(wǎng)絡(luò)。
按point-wise來說,這意味著它對(duì)序列中的每個(gè)元素應(yīng)用相同的線性變換(具有相同的權(quán)重)。這也可以看作是濾波器大小為1的卷積層。每個(gè)子模塊都有一個(gè)剩余連接和layer normalization。所有子模塊輸出相同維度的數(shù)據(jù)。
Transformer的decoder功能是從encoder的表示中抽取信息。該結(jié)構(gòu)與encoder非常相似,只是decoder包含兩個(gè)多頭注意子模塊,而不是在每個(gè)相同的重復(fù)模塊中包含一個(gè)。第一個(gè)多頭注意子模塊被屏蔽,以防止位置穿越。
Positional Encoding
因?yàn)閟elf-attention操作是permutation不變的,所以使用正確的位置編碼是非常重要的,此處我們使用如下的位置編碼來提供order信息,位置編碼,我們可以直接將它們加入到我們到vanilla Transformer中,
- (2).Learned positional encoding,對(duì)每個(gè)學(xué)習(xí)得到對(duì)列向量,對(duì)每個(gè)絕對(duì)位置進(jìn)行編碼。
輔助Loss
為了取得更好的效果,我們一般會(huì)加入輔助loss,
- 除了在序列末尾只生成一個(gè)預(yù)測(cè)之外,還要求每個(gè)immediatge位置能做出正確的預(yù)測(cè),迫使模型預(yù)測(cè)給定的較小上下文(例如,上下文窗口開頭的前幾個(gè)tokens)。
- 每個(gè)中間Transformer也用于進(jìn)行預(yù)測(cè)。隨著訓(xùn)練的進(jìn)行,較低層的權(quán)重對(duì)總損失的貢獻(xiàn)越來越小。
- 序列中的每個(gè)位置可以預(yù)測(cè)多個(gè)目標(biāo),即,對(duì)未來token的兩個(gè)或多個(gè)預(yù)測(cè)。
(四)ACT(Adaptive Computation Time)
Adaptive Computation Time是一種動(dòng)態(tài)決定遞歸神經(jīng)網(wǎng)絡(luò)需要多少計(jì)算步驟的機(jī)制。
最終狀態(tài)和輸出的mean-field的update:
避免對(duì)每個(gè)輸入進(jìn)行不必要的思考,ACT增加了ponder cost
用此來鼓勵(lì)中間計(jì)算步驟的小的次數(shù)。
(五)Improved Attention Span
提高Attention Span的目的是使可用于self-attention的上下文更長(zhǎng)、更有效、更靈活。
1. Longer Attention Span(Transformer-XL)
vanilla Transformer有一個(gè)固定的和有限的注意廣度。在每個(gè)更新步驟中,該模型只能處理同一段中的其他元素,并且沒有任何信息可以在分離的固定長(zhǎng)度段之間流動(dòng)。也就是說層數(shù)固定不夠靈活,同時(shí)對(duì)于算力需求非常大,導(dǎo)致其并不適合處理超長(zhǎng)序列。
這種context segmentation會(huì)導(dǎo)致幾個(gè)問題:
- 模型不能捕獲非常長(zhǎng)期的依賴關(guān)系;
- 在沒有上下文或上下文很薄的情況下,很難預(yù)測(cè)每個(gè)片段中的前幾個(gè)tokens。
- 評(píng)估是昂貴的。每當(dāng)segment右移一位時(shí),新的segment就會(huì)從頭開始重新處理,盡管有很多重疊的tokens。
Transformer-XL解決來上下文的segmentation問題:
- 對(duì)于segments之間的隱藏狀態(tài)進(jìn)行重復(fù)使用;
- 使用位置編碼使其適用于重新使用的states;
Hidden state Reuse:
key和value依賴于擴(kuò)展的隱藏狀態(tài),同時(shí)query僅僅只依賴于當(dāng)前步的隱藏狀態(tài),是序列長(zhǎng)度的維度的concatenation操作。
2. Relative Positional Encoding
為了處理這種新的attention span的形式,Transformer-XL提出了一種新的位置編碼。如果使用相同的方法對(duì)絕對(duì)位置進(jìn)行編碼,則前一段和當(dāng)前段將分配相同的編碼,這是不需要的。
3. Adaptive Attention Span
Transformer的一個(gè)關(guān)鍵優(yōu)勢(shì)是能夠捕獲長(zhǎng)期依賴關(guān)系。根據(jù)上下文的不同,模型可能更愿意在某個(gè)時(shí)候比其他人更進(jìn)一步地注意;或者一個(gè)attention head可能有不同于另一個(gè)attention head的注意模式。如果attention span能夠靈活地調(diào)整其長(zhǎng)度,并且只在需要時(shí)再往回看,這將有助于減少計(jì)算和內(nèi)存開銷,從而在模型中支持更長(zhǎng)的最大上下文大小(這就是Adaptive Attention Span的動(dòng)機(jī))。
后來Sukhbaatar等人提出了一種self-attention機(jī)制以尋找最優(yōu)的attention span,他們假設(shè)不同的attention heads可以在相同的上下文窗口中賦予不同的分?jǐn)?shù),因此最優(yōu)的span可以被每個(gè)頭分開訓(xùn)練。
soft mask函數(shù)應(yīng)用于注意權(quán)重中的softmax元素:
在具有自適應(yīng)注意廣度的Transformer實(shí)驗(yàn)中,Sukhbatar等人發(fā)現(xiàn)了一個(gè)普遍趨勢(shì),即較低層不需要很長(zhǎng)的注意廣度,而較高層的一些attention heads可能會(huì)使用非常長(zhǎng)的注意廣度。適應(yīng)性attention span有助于大大減少失敗的次數(shù),特別是在一個(gè)有許多注意層和大上下文長(zhǎng)度的大模型中。
4. Localized Attention Span (Image Transformer)
Transformer最初用于語言建模。文本序列是一維的,具有明確的時(shí)間順序,因此attention span隨著上下文大小的增加而線性增長(zhǎng)。
然而,如果我們想在圖像上使用Transformer,我們還不清楚如何定義上下文的范圍或順序。Image Transformer采用了一種圖像生成公式,類似于Transformer框架內(nèi)的序列建模。此外,圖像Transformer將self-attention span限制在局部鄰域內(nèi),因此模型可以放大以并行處理更多的圖像,并保持可能性損失可控。
encoder-decoder架構(gòu)保留用于image-conditioned生成:
- encoder生成源圖像的上下文化的每像素信道表示;
- decoder自回歸地生成輸出圖像,每個(gè)時(shí)間步每像素一個(gè)通道。
- (1).1D Local Attention:輸入圖像按光柵掃描順序(即從左到右、從上到下)展平。然后將線性化后的圖像分割成不重疊的查詢塊。上下文窗口由與相同的查詢塊中的像素和在此查詢塊之前生成的固定數(shù)量的附加像素組成。
- (2).2D Local Attention:圖像被分割成多個(gè)不重疊的矩形查詢塊。查詢像素可以處理相同內(nèi)存塊中的所有其他像素。為了確保左上角的像素也可以有一個(gè)有效的上下文窗口,內(nèi)存塊將分別向上、左和右擴(kuò)展一個(gè)固定的量。
(六)Less Time and Memory Cost
如何減少計(jì)算和內(nèi)存的消耗。
1. Sparse Attention Matrix Factorization (Sparse Transformers)
- 一般Transformer的計(jì)算和存儲(chǔ)開銷隨序列長(zhǎng)度呈二次增長(zhǎng),因此很難應(yīng)用于很長(zhǎng)的序列。
Sparse Transformer
引入分解的self-attention,通過稀疏矩陣分解,我們可以將訓(xùn)練上百層的dense的attention網(wǎng)絡(luò),這樣序列長(zhǎng)度就可以到達(dá)16384.
Sparse Factorized Attention
Sparse Transformer提出了兩類分解的attention,
Use Factorized Self-Attention in Transformer
存在三種方式使用sparse factorized attention模式的方法:
稀疏Transformer還提出了一套改進(jìn)方案,將Transformer訓(xùn)練到上百層,包括梯度檢查點(diǎn)、在backward pass的時(shí)候重新計(jì)算attention和FF層、混合精度訓(xùn)練、高效的塊稀疏實(shí)現(xiàn)等。
2. Locality-Sensitive Hashing (Reformer)
Reformer模型旨在解決Transformer中的下面幾個(gè)痛點(diǎn):
- 具有N層的模型中的內(nèi)存比單層模型中的內(nèi)存大N倍,因?yàn)槲覀冃枰鎯?chǔ)反向傳播的activations。
- 中間FF層通常相當(dāng)大。
- 長(zhǎng)度為L(zhǎng)的序列上的注意矩陣通常在記憶和時(shí)間上都需要O(L*L)的內(nèi)存和時(shí)間;
Reformer進(jìn)行了兩種改變:
Locality-Sensitive Hashing Attention
Reversible Residual Network
Reversible Residual Network的動(dòng)機(jī)是設(shè)計(jì)一種結(jié)構(gòu),使任何給定層的激活都可以從下一層的激活中恢復(fù),只需使用模型參數(shù)。因此,我們可以通過在backprop期間重新計(jì)算激活來節(jié)省內(nèi)存,而不是存儲(chǔ)所有激活。
(七)Make it Recurrent (Universal Transformer)
Universal Transformer將Transformer中的自我注意與RNN中的循環(huán)機(jī)制結(jié)合起來,旨在受益于Transformer的長(zhǎng)期全局receptive field和RNN的學(xué)習(xí)inductive偏差。
Universal Transformer使用自適應(yīng)計(jì)算時(shí)間動(dòng)態(tài)調(diào)整步長(zhǎng)。如果我們固定步數(shù),一個(gè)通用變換器就相當(dāng)于一個(gè)多層變換器,具有跨層共享的參數(shù)。
在較高的層次上,Universal Transformer可以看作是學(xué)習(xí)每個(gè)token的隱藏狀態(tài)表示的遞歸函數(shù)。遞歸函數(shù)在標(biāo)記位置之間并行演化,位置之間的信息通過self-attention進(jìn)行共享。
Transition(·)可以是一個(gè) separable convolution或者fully-connected neural network。
在Universal Transformer的自適應(yīng)版本中,循環(huán)步數(shù)由ACT動(dòng)態(tài)確定。每個(gè)位置都配有一個(gè)動(dòng)態(tài)停止機(jī)制。一旦每令牌循環(huán)塊停止,它將停止進(jìn)行更多的循環(huán)更新,而只是將當(dāng)前值復(fù)制到下一步,直到所有塊停止或直到模型達(dá)到最大步長(zhǎng)限制。
(八)Stabilization for RL (GTrXL)
Self-attention避免了將整個(gè)過去壓縮成一個(gè)固定大小的隱藏狀態(tài),并且不像RNN那樣受到梯度消失或爆炸的影響。強(qiáng)化學(xué)習(xí)任務(wù)肯定能從這些特質(zhì)中受益。然而,即使在有監(jiān)督學(xué)習(xí)中,也很難訓(xùn)練Transformer,更不用說在RL環(huán)境中了。畢竟,穩(wěn)定和訓(xùn)練一個(gè)LSTM代理本身可能是相當(dāng)具有挑戰(zhàn)性的。
Gated Transformer-XL (GTrXL)是使用Transformer到RL中的一次嘗試,GTrXL可以在Transformer-XL上成功穩(wěn)定的訓(xùn)練。
- layer normalization應(yīng)用于residual模塊中的輸入流,而不應(yīng)用于shortcut流。這種重新排序的一個(gè)關(guān)鍵好處是允許原始輸入從第一層流到最后一層。
- Residual連接被GRU樣式選通機(jī)制取代。
參考文獻(xiàn)
總結(jié)
以上是生活随笔為你收集整理的Transformer Family的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模型提效的另一条路:数据增强
- 下一篇: 搜索推荐炼丹笔记:评论是怎么影响推荐的?