最近復(fù)旦放出了一篇各種Transformer的變體的綜述(重心放在對Transformer結(jié)構(gòu)(模塊級別和架構(gòu)級別)改良模型的介紹),打算在空閑時間把這篇文章梳理一下:
Part1背景1Transformer的優(yōu)點
2Transformer的缺點
3原生Transformer(Vanilla Transformer)
注意力模塊(Attention Modules)多頭注意力層,核心點在于 Q/K/V 三個矩陣,其中 Q/K 矩陣生成權(quán)重矩陣(經(jīng)由softmax),隨后和V矩陣得到加權(quán)和。 這個過程重復(fù)了 n_heads 次,這個 n_heads 代表的就是頭的數(shù)目,這里需要注意的是我們需要確保 hidden_size/n_heads 需要為一個整數(shù),不然會報錯。 基于位置的全連接(Position-wise FFN)注意:Transformer中的FFN全稱是Position-wise Feed-Forward Networks,重點就是這個position-wise,區(qū)別于普通的全連接網(wǎng)絡(luò),這里FFN的輸入是序列中每個位置上的元素,而不是整個序列,所以每個元素完全可以獨立計算,最極端節(jié)省內(nèi)存的做法是遍歷序列,每次只取一個元素得到FFN的結(jié)果,但是這樣做時間消耗太大,“分段”的含義就是做下折中,將序列分成 段,也就是 個子序列,每次讀取一個子序列進(jìn)行FFN計算,最后將 份的結(jié)果拼接。分段FFN只是一種計算上的技巧,計算結(jié)果和原始FFN完全一致,所以不會影響到模型效果,好處是不需要一次性將整個序列 讀入內(nèi)存,劣勢當(dāng)然是會增加額外的時間開銷了。 殘差與歸一化(Residual Connection and Normalization)殘差連接一般出現(xiàn)在比較深的模型中,可以使得信息前后向傳播更加順暢,緩解了梯度破碎問題。為什么這里使用 Layer Normalization,而不是BN,這里直白的回答就是,BN的效果差,所以不用。 位置編碼(Position Encodings)因為Transformer不引入RNN或CNN,所以它忽略了位置信息(尤其是對于encoder)。因此Transformer使用Position Encodings來建模token之間的順序。 4使用方法(Usage)
5模型分析(Model Analysis)為了分析Tranformer的計算復(fù)雜度,本文分析了其主要的兩個組件:self-attention和position-wise FFN。具體的對比如下表所示,本文假設(shè)隱藏層的維度為??,輸入的序列長度為??。FFN的中間單元數(shù)量設(shè)置為4??,key和value的維度設(shè)置為??/?? 。 當(dāng)輸入數(shù)據(jù)的長度較短時, 隱藏層的維度??主導(dǎo)了self-attention和position-wise FFN的復(fù)雜度。此時Transformer的計算瓶頸在于FFN,但是隨著序列長度的增加,序列長度??逐漸主導(dǎo)復(fù)雜度,此時Transformer的計算瓶頸在于self-attention。此外,自注意力的計算需要存儲?? × ?? 的注意力分布矩陣,這使得Transformer的計算在長序列場景(例如,長文本文檔和高分辨率圖像的像素級建模)是不可行的。 6Transformer和其他網(wǎng)絡(luò)的對比(Comparing Transformer to Other Network Types)Self-Attention的分析(Analysis of Self-Attention)本文將self-attention和其余幾個神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了對比,總結(jié)出了以下幾點Transformer的優(yōu)點:
注意:最大路徑長度指的是從任何輸入位置通過前向和后向信號的到達(dá)任意輸出位置的最大長度。較短的句子長度意味著更好的學(xué)習(xí)長期依賴性的能力。 歸納偏置(In Terms of Inductive Bias)歸納偏置其實可以理解為:從現(xiàn)實生活中觀察到的現(xiàn)象中歸納出一定的規(guī)則(heuristics),然后對模型做一定的約束,從而可以起到“模型選擇”的作用,即從假設(shè)空間中選擇出更符合現(xiàn)實規(guī)則的模型。 在具體的深度學(xué)習(xí)模型中:CNN具有平移不變性和局部性的歸納偏置。類似地,RNN因為其馬爾可夫結(jié)構(gòu)具有時間不變性和局部性的歸納偏置。 而Transformer很少對數(shù)據(jù)的結(jié)構(gòu)信息進(jìn)行假設(shè)。這使得Transformer成為一個通用且靈活的體系結(jié)構(gòu)。但是這樣也有其對應(yīng)的缺點。缺少結(jié)構(gòu)歸納偏置使得Transformer容易對小規(guī)模數(shù)據(jù)過擬合。 另外一種和Transformer類似的模型則是Graph Neural Networks (GNNs),Transformer可以看作是一個定義在一個完全有向圖(帶環(huán))上的GNN,其中每個輸入都是GNN中的一個節(jié)點。Transformer和GNNs之間的關(guān)鍵區(qū)別在于Transformer沒有引入關(guān)于輸入數(shù)據(jù)結(jié)構(gòu)的先驗知識,Transformer中的消息傳遞過程完全依賴于文本的相似性度量。 Part2Transformer的分類(TAXONOMY OF TRANSFORMERS)到目前為止,研究人員已經(jīng)基于vanilla Transformer從三個角度提出了各種各樣的模型:體系結(jié)構(gòu)修改的類型;預(yù)訓(xùn)練方法;應(yīng)用。 7注意力機(jī)制(Attention)注意力模塊是Transformer中的核心模塊,實際應(yīng)用時通常會遇到以下問題:
針對上述問題的改進(jìn)主要可以分為以下幾種:
8稀疏注意力(Sparse Attention)在標(biāo)準(zhǔn)的Transformer中,每個token都需要和其他的所有token做運(yùn)算,但是有研究人員觀察到針對一個訓(xùn)練好的Transformer,其中的注意力矩陣通常非常稀疏。因此,通過結(jié)合結(jié)構(gòu)偏差來限制每個Q關(guān)注的Q-K對的數(shù)量,可以降低計算復(fù)雜度。在該限制下,只需要根據(jù)預(yù)定義的模式計算Q-K對的相似度即可。 上述公式得到的結(jié)果是一個非歸一化的矩陣,在具體的實現(xiàn)中,矩陣中的一般不會被存儲。 從另一個角度來看,標(biāo)準(zhǔn)的注意力可以看作是一個完整的二部圖,其中每個Q接收來自所有存儲節(jié)點的信息并更新其表示。稀疏注意可以看作是一個稀疏圖,其中刪除了節(jié)點之間的一些連接。我們將確定稀疏連接的度量分為兩類:基于位置的稀疏注意和基于內(nèi)容的稀疏注意。 基于位置的稀疏注意力在基于位置的稀疏注意力中,注意力矩陣根據(jù)一些預(yù)先定義的pattern進(jìn)行限制。雖然這些稀疏模式有不同的形式,但本文發(fā)現(xiàn)其中一些可以分解為原子類型的稀疏pattern。本文首先確定一些原子類型的稀疏pattern,然后描述這些pattern是如何在一些現(xiàn)有的工作應(yīng)用的。最后本文介紹了一些針對特定數(shù)據(jù)類型的擴(kuò)展稀疏pattern。 原子稀疏注意力(Atomic Sparse Attention) 主要有五種原子稀疏注意模式,如下圖所示。
復(fù)合稀疏注意力(Compound Sparse Attention) 現(xiàn)有的稀疏注意力通常由以上原子模式中的一種以上組成。圖5顯示出了一些代表性的復(fù)合稀疏注意模式。
擴(kuò)展的稀疏注意力(Extended Sparse Attention) 除了上述模式之外,一些現(xiàn)有的研究還探索了特定數(shù)據(jù)類型的擴(kuò)展稀疏模式。 對于文本數(shù)據(jù),BP Transformer構(gòu)造了一個二叉樹,其中所有標(biāo)記都是葉節(jié)點,內(nèi)部節(jié)點是包含許多標(biāo)記的span節(jié)點。圖中的邊是這樣構(gòu)造的:每個葉節(jié)點都連接到它的鄰居葉節(jié)點和更高級別的span節(jié)點,這些節(jié)點包含來自更長距離的token。這種方法可以看作是全局注意的一種擴(kuò)展,其中全局節(jié)點是分層組織的,任何一對token都與二叉樹中的路徑相連接。圖6(a)展示出了該方法的抽象視圖。 對于視覺數(shù)據(jù)也有一些擴(kuò)展。Image Transformer探索了兩種類型的注意力模式:
基于內(nèi)容的稀疏注意力另一個方向的工作是基于輸入內(nèi)容創(chuàng)建稀疏圖,即構(gòu)造輸入中的稀疏連接時是有條件的。 構(gòu)造基于內(nèi)容的稀疏圖的簡單方法是選擇那些可能與給定Q具有較大相似性分?jǐn)?shù)的K。為了有效地構(gòu)造稀疏圖,可以將其看做Maximum Inner Product Search (MIPS)問題,即在不計算所有點積項的情況下,通過一個查詢Q來尋找與其具有最大點積的K。Routing Transformer使用了k-means聚類——對查詢queries和keys在同一簇質(zhì)心向量集合上進(jìn)行聚類。每個查詢Q只關(guān)注與其屬于同一簇內(nèi)的keys。在訓(xùn)練的時候,會使用分配的向量指數(shù)移動平均數(shù)除以簇的數(shù)量來更新每個簇的質(zhì)心向量。 表示的是??這個簇中包含的向量的數(shù)量, 是一個可學(xué)習(xí)的超參數(shù)。 假設(shè)表示第個查詢涉及的Key的索引集合,在Routing Transformer中的表示為: Reformer使用了局部敏感哈希(LSH)算法來為每一個query選擇對應(yīng)的K-V對,LSH注意允許每個token只關(guān)注同一散列桶中的token。其基本思想是使用LSH函數(shù)將Query和Key散列到多個bucket中,相似的項有很高的概率落在同一個bucket中。 具體來看,他們使用隨機(jī)矩陣方法作為LSH的函數(shù)。假設(shè)表示bucket的數(shù)量,給定隨機(jī)矩陣大小為,則LSH函數(shù)的計算公式為: LSH允許Query只關(guān)注具有索引的K-V對:
好了,本次的分享就是這些,剩余部分之后會繼續(xù)解讀。希望能對大家有幫助。 |
|