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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)...

發(fā)布時(shí)間:2025/3/12 pytorch 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近復(fù)旦放出了一篇各種Transformer的變體的綜述(重心放在對Transformer結(jié)構(gòu)(模塊級別和架構(gòu)級別)改良模型的介紹),打算在空閑時(shí)間把這篇文章梳理一下:

  • 知乎:https://zhuanlan.zhihu.com/p/379057424

  • arxiv:https://arxiv.org/abs/2106.04554

Part1背景

1Transformer的優(yōu)點(diǎn)

  • 可并行

  • 弱歸納偏置,通用性強(qiáng)

  • 特征抽取能力強(qiáng)

  • 自編碼上下文雙向建模

2Transformer的缺點(diǎn)

  • self-attention 計(jì)算復(fù)雜度高,序列長度上升,復(fù)雜度指數(shù)級上升

  • 弱歸納偏置增加了小數(shù)據(jù)集上過擬合的風(fēng)險(xiǎn)

3原生Transformer(Vanilla Transformer)

  • sequence-to-sequence 模型(encoder and a decoder)

  • 堆疊 ???? 個(gè)相同的 blocks

  • 每個(gè) encoder block 主要由多頭自注意力模塊(multi-head self-attention module)和位置相關(guān)全連接(position-wise feed-forward network (FFN))組成,構(gòu)建的時(shí)候還有殘差連接(residual connection)以及層歸一化(Layer Normalization)。

  • 與encoder相比,decoder在多頭自注意模塊和位置相關(guān)全連接之間額外插入了交叉注意模塊。

注意力模塊(Attention Modules)

多頭注意力層,核心點(diǎn)在于 Q/K/V 三個(gè)矩陣,其中 Q/K 矩陣生成權(quán)重矩陣(經(jīng)由softmax),隨后和V矩陣得到加權(quán)和。

這個(gè)過程重復(fù)了 n_heads 次,這個(gè) n_heads 代表的就是頭的數(shù)目,這里需要注意的是我們需要確保 hidden_size/n_heads 需要為一個(gè)整數(shù),不然會報(bào)錯(cuò)。

基于位置的全連接(Position-wise FFN)

注意:Transformer中的FFN全稱是Position-wise Feed-Forward Networks,重點(diǎn)就是這個(gè)position-wise,區(qū)別于普通的全連接網(wǎng)絡(luò),這里FFN的輸入是序列中每個(gè)位置上的元素,而不是整個(gè)序列,所以每個(gè)元素完全可以獨(dú)立計(jì)算,最極端節(jié)省內(nèi)存的做法是遍歷序列,每次只取一個(gè)元素得到FFN的結(jié)果,但是這樣做時(shí)間消耗太大,“分段”的含義就是做下折中,將序列分成 段,也就是 個(gè)子序列,每次讀取一個(gè)子序列進(jìn)行FFN計(jì)算,最后將 份的結(jié)果拼接。分段FFN只是一種計(jì)算上的技巧,計(jì)算結(jié)果和原始FFN完全一致,所以不會影響到模型效果,好處是不需要一次性將整個(gè)序列 讀入內(nèi)存,劣勢當(dāng)然是會增加額外的時(shí)間開銷了。

殘差與歸一化(Residual Connection and Normalization)

殘差連接一般出現(xiàn)在比較深的模型中,可以使得信息前后向傳播更加順暢,緩解了梯度破碎問題。為什么這里使用 Layer Normalization,而不是BN,這里直白的回答就是,BN的效果差,所以不用。

位置編碼(Position Encodings)

因?yàn)門ransformer不引入RNN或CNN,所以它忽略了位置信息(尤其是對于encoder)。因此Transformer使用Position Encodings來建模token之間的順序。

4使用方法(Usage)

  • Encoder-Decoder 因?yàn)榫哂衑ncoder和decoder,所以可以用作Seq2Seq任務(wù);

  • Encoder only 通常將Encoder作為文本的編碼器,通常用于文本分類任務(wù);

  • Decoder only 只使用decoder時(shí),需要將encoder和decoder的交叉編碼器刪除,通常用作文本生成任務(wù)。

5模型分析(Model Analysis)

為了分析Tranformer的計(jì)算復(fù)雜度,本文分析了其主要的兩個(gè)組件:self-attention和position-wise FFN。具體的對比如下表所示,本文假設(shè)隱藏層的維度為????,輸入的序列長度為????。FFN的中間單元數(shù)量設(shè)置為4????,key和value的維度設(shè)置為????/???? 。

當(dāng)輸入數(shù)據(jù)的長度較短時(shí), 隱藏層的維度????主導(dǎo)了self-attention和position-wise FFN的復(fù)雜度。此時(shí)Transformer的計(jì)算瓶頸在于FFN,但是隨著序列長度的增加,序列長度????逐漸主導(dǎo)復(fù)雜度,此時(shí)Transformer的計(jì)算瓶頸在于self-attention。此外,自注意力的計(jì)算需要存儲???? × ???? 的注意力分布矩陣,這使得Transformer的計(jì)算在長序列場景(例如,長文本文檔和高分辨率圖像的像素級建模)是不可行的。

6Transformer和其他網(wǎng)絡(luò)的對比(Comparing Transformer to Other Network Types)

Self-Attention的分析(Analysis of Self-Attention)

本文將self-attention和其余幾個(gè)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了對比,總結(jié)出了以下幾點(diǎn)Transformer的優(yōu)點(diǎn):

  • self-attention具有和FFN相同的最大路徑長度,因此Transformer更適合長距離依賴的建模。但是相對于FNN,Transformer的參數(shù)的有效性更高且對于變長序列的處理更好。

  • 由于卷積層的感受野有限,人們通常需要堆疊一個(gè)深的網(wǎng)絡(luò)來擁有一個(gè)全局感受野。另一方面,恒定的最大路徑長度允許self-attention建模恒定層數(shù)之間的長期依賴性。

  • 恒定的順序操作和最大路徑長度使得self-attention比RNN更具并行性,在遠(yuǎn)程建模中表現(xiàn)更好。

注意:最大路徑長度指的是從任何輸入位置通過前向和后向信號的到達(dá)任意輸出位置的最大長度。較短的句子長度意味著更好的學(xué)習(xí)長期依賴性的能力。

歸納偏置(In Terms of Inductive Bias)

歸納偏置其實(shí)可以理解為:從現(xiàn)實(shí)生活中觀察到的現(xiàn)象中歸納出一定的規(guī)則(heuristics),然后對模型做一定的約束,從而可以起到“模型選擇”的作用,即從假設(shè)空間中選擇出更符合現(xiàn)實(shí)規(guī)則的模型。

在具體的深度學(xué)習(xí)模型中:CNN具有平移不變性和局部性的歸納偏置。類似地,RNN因?yàn)槠漶R爾可夫結(jié)構(gòu)具有時(shí)間不變性和局部性的歸納偏置。

而Transformer很少對數(shù)據(jù)的結(jié)構(gòu)信息進(jìn)行假設(shè)。這使得Transformer成為一個(gè)通用且靈活的體系結(jié)構(gòu)。但是這樣也有其對應(yīng)的缺點(diǎn)。缺少結(jié)構(gòu)歸納偏置使得Transformer容易對小規(guī)模數(shù)據(jù)過擬合。

另外一種和Transformer類似的模型則是Graph Neural Networks (GNNs),Transformer可以看作是一個(gè)定義在一個(gè)完全有向圖(帶環(huán))上的GNN,其中每個(gè)輸入都是GNN中的一個(gè)節(jié)點(diǎn)。Transformer和GNNs之間的關(guān)鍵區(qū)別在于Transformer沒有引入關(guān)于輸入數(shù)據(jù)結(jié)構(gòu)的先驗(yàn)知識,Transformer中的消息傳遞過程完全依賴于文本的相似性度量。

Part2Transformer的分類(TAXONOMY OF TRANSFORMERS)

到目前為止,研究人員已經(jīng)基于vanilla Transformer從三個(gè)角度提出了各種各樣的模型:體系結(jié)構(gòu)修改的類型;預(yù)訓(xùn)練方法;應(yīng)用。

7注意力機(jī)制(Attention)

注意力模塊是Transformer中的核心模塊,實(shí)際應(yīng)用時(shí)通常會遇到以下問題:

  • 復(fù)雜度過高:上一節(jié)中提到了Transformer隨著序列長度增加,復(fù)雜度指數(shù)上升的問題。序列長度變長的話,self-attention成為Transformer計(jì)算效率的瓶頸。

  • 缺少結(jié)構(gòu)先驗(yàn):自注意力機(jī)制并沒有引入任何的結(jié)構(gòu)假設(shè),甚至順序信息都還要從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)得到,因?yàn)槲搭A(yù)訓(xùn)練過的Transformer可能會在小數(shù)據(jù)集上過擬合。

針對上述問題的改進(jìn)主要可以分為以下幾種:

  • 稀疏注意力(Sparse Attention):采用稀疏注意力機(jī)制,將O(n)依賴降至線性,解決了BERT模型中的全注意力機(jī)制帶來的序列長度二次依賴限制,同時(shí)兼顧更長的上下文。

  • 線性化的注意力(Linearized Attention)?:為了給計(jì)算復(fù)雜度降低到線性,使用核函數(shù)來簡化Attention的計(jì)算過程,并且替換掉SoftMax。

  • Prototype and Memory Compression:這類方法減少了Q和KV內(nèi)存對的數(shù)量,以減小注意力矩陣的大小。

  • Low-rank Self-Attention:這類工作抓住了自我注意力的low rank屬性。

  • 注意力先驗(yàn)(Attention with Prior):這一系列的研究旨在補(bǔ)充或取代具有先驗(yàn)的注意分布標(biāo)準(zhǔn)注意力機(jī)制。

  • 改善多頭自注意力機(jī)制:這一系列研究探索了不同可替代多頭機(jī)制的結(jié)構(gòu)。

8稀疏注意力(Sparse Attention)

在標(biāo)準(zhǔn)的Transformer中,每個(gè)token都需要和其他的所有token做運(yùn)算,但是有研究人員觀察到針對一個(gè)訓(xùn)練好的Transformer,其中的注意力矩陣通常非常稀疏。因此,通過結(jié)合結(jié)構(gòu)偏差來限制每個(gè)Q關(guān)注的Q-K對的數(shù)量,可以降低計(jì)算復(fù)雜度。在該限制下,只需要根據(jù)預(yù)定義的模式計(jì)算Q-K對的相似度即可。

上述公式得到的結(jié)果是一個(gè)非歸一化的矩陣,在具體的實(shí)現(xiàn)中,矩陣中的一般不會被存儲。

從另一個(gè)角度來看,標(biāo)準(zhǔn)的注意力可以看作是一個(gè)完整的二部圖,其中每個(gè)Q接收來自所有存儲節(jié)點(diǎn)的信息并更新其表示。稀疏注意可以看作是一個(gè)稀疏圖,其中刪除了節(jié)點(diǎn)之間的一些連接。我們將確定稀疏連接的度量分為兩類:基于位置的稀疏注意和基于內(nèi)容的稀疏注意。

基于位置的稀疏注意力

在基于位置的稀疏注意力中,注意力矩陣根據(jù)一些預(yù)先定義的pattern進(jìn)行限制。雖然這些稀疏模式有不同的形式,但本文發(fā)現(xiàn)其中一些可以分解為原子類型的稀疏pattern。本文首先確定一些原子類型的稀疏pattern,然后描述這些pattern是如何在一些現(xiàn)有的工作應(yīng)用的。最后本文介紹了一些針對特定數(shù)據(jù)類型的擴(kuò)展稀疏pattern。

原子稀疏注意力(Atomic Sparse Attention)

主要有五種原子稀疏注意模式,如下圖所示。

  • Global Attention.?為了緩解在稀疏注意中對長距離依賴性建模能力的退化,可以添加一些全局節(jié)點(diǎn)作為節(jié)點(diǎn)間信息傳播的中心。這些全局節(jié)點(diǎn)可以attend到序列中的所有節(jié)點(diǎn),并且整個(gè)序列也可以attend到這些全局節(jié)點(diǎn),其中注意矩陣如圖4(a)所示。

  • Band Attention.?又稱之為滑動(dòng)窗口注意力或局部注意力。由于大多數(shù)數(shù)據(jù)都具有很強(qiáng)的局部性,因此很自然地會限制每個(gè)Q去關(guān)注其鄰居節(jié)點(diǎn)。這種稀疏模式被廣泛采用的一類是Band Attention,其中注意矩陣如圖4(b)所示。

  • Dilated Attention.?與擴(kuò)張的CNN類似,通過使用具有間隙的擴(kuò)張窗口,可以潛在地增加Band Attention的感受野,而不增加計(jì)算復(fù)雜度。其中注意矩陣如圖4(c)所示。這可以很容易地?cái)U(kuò)展到跨越式的注意力機(jī)制,窗口大小不受限制,但???????? 需要設(shè)置為更大的值。

  • Random Attention.?為了增加非局部交互的能力,對每個(gè)Q隨機(jī)抽取一些邊,如圖4(d)所示。這是基于隨機(jī)圖(Erd?s–Rényi隨機(jī)圖)可以具有與完全圖相似的譜性質(zhì),從而通過在隨機(jī)圖上的游走可以得到更加快速的mixing時(shí)間。

  • Block Local Attention.?這類注意力機(jī)制將輸入序列分割成若干個(gè)互不重疊的查詢塊,每個(gè)查詢塊與一個(gè)本地存儲塊相關(guān)聯(lián)。查詢塊中的所有Q只涉及相應(yīng)內(nèi)存塊中的K。圖4(e)展示了存儲器塊與其對應(yīng)的查詢塊。

復(fù)合稀疏注意力(Compound Sparse Attention)

現(xiàn)有的稀疏注意力通常由以上原子模式中的一種以上組成。圖5顯示出了一些代表性的復(fù)合稀疏注意模式。

  • Star Transformer結(jié)合了Band Attention和Global Attention.。具體來看Star Transformer僅包括一個(gè)全局節(jié)點(diǎn)和一個(gè)寬度為3的Band Attention,其中任何一對非相鄰節(jié)點(diǎn)通過一個(gè)共享的全局節(jié)點(diǎn)連接,相鄰節(jié)點(diǎn)之間直接連接。這種稀疏模式可以在節(jié)點(diǎn)間形成星形圖。

  • Longformer結(jié)合了Band Attention和internal global-node attention,選擇做分類的[CLS]token以及問答任務(wù)中的所有的問題tokens作為全局節(jié)點(diǎn)。此外還用擴(kuò)大的Dilated Attention代替上層的一些Band Attention頭,以增加感受野而不增加計(jì)算量。

  • ETC(Extended Transformer Construction)作為和Longformer同時(shí)出現(xiàn)的工作,ETC結(jié)合了band attention和external global-node attention。ETC還使用了一種[MASK]機(jī)制,用于處理結(jié)構(gòu)化輸入和調(diào)整對比預(yù)測編碼(CPC)以用于預(yù)訓(xùn)練。

  • 除了band attention和external global-node attention之外,Big bird還使用額外的隨機(jī)注意力來接近完全注意力。相應(yīng)的理論分析表明,使用稀疏編碼器和稀疏解碼器可以模擬任何類型的圖靈機(jī),這同時(shí)解釋了這些稀疏注意模型的有效性。

  • Sparse Transformer使用了一種因式分解的注意力機(jī)制,其中針對不同類型的數(shù)據(jù)設(shè)計(jì)了不同的稀疏模式。對于具有周期性結(jié)構(gòu)的數(shù)據(jù)(例如圖像),它使用了band attention和strided attention的組合。而對于沒有周期結(jié)構(gòu)的數(shù)據(jù)(如文本),則采用block local attention與global attention相結(jié)合的組合,全局節(jié)點(diǎn)來自輸入序列中的固定位置。

擴(kuò)展的稀疏注意力(Extended Sparse Attention)

除了上述模式之外,一些現(xiàn)有的研究還探索了特定數(shù)據(jù)類型的擴(kuò)展稀疏模式。

對于文本數(shù)據(jù),BP Transformer構(gòu)造了一個(gè)二叉樹,其中所有標(biāo)記都是葉節(jié)點(diǎn),內(nèi)部節(jié)點(diǎn)是包含許多標(biāo)記的span節(jié)點(diǎn)。圖中的邊是這樣構(gòu)造的:每個(gè)葉節(jié)點(diǎn)都連接到它的鄰居葉節(jié)點(diǎn)和更高級別的span節(jié)點(diǎn),這些節(jié)點(diǎn)包含來自更長距離的token。這種方法可以看作是全局注意的一種擴(kuò)展,其中全局節(jié)點(diǎn)是分層組織的,任何一對token都與二叉樹中的路徑相連接。圖6(a)展示出了該方法的抽象視圖。

對于視覺數(shù)據(jù)也有一些擴(kuò)展。Image Transformer探索了兩種類型的注意力模式:

  • 按光柵掃描順序展平圖像像素,然后應(yīng)用block local稀疏注意力;

  • 2D block local注意力,其中查詢塊和存儲塊直接排列在2D板中,如圖6(b)所示。作為視覺數(shù)據(jù)稀疏模式的另一個(gè)例子,Axial Transformer在圖像的每個(gè)軸上應(yīng)用獨(dú)立的注意力模塊。如圖6(c)所示,每個(gè)注意模力塊沿一個(gè)軸混合信息,同時(shí)保持沿另一個(gè)軸的信息獨(dú)立。這可以理解為以光柵掃描水平和垂直展平的圖像像素,然后分別使用圖像寬度和高度的間隙來應(yīng)用跨越式注意力。

基于內(nèi)容的稀疏注意力

另一個(gè)方向的工作是基于輸入內(nèi)容創(chuàng)建稀疏圖,即構(gòu)造輸入中的稀疏連接時(shí)是有條件的。

構(gòu)造基于內(nèi)容的稀疏圖的簡單方法是選擇那些可能與給定Q具有較大相似性分?jǐn)?shù)的K。為了有效地構(gòu)造稀疏圖,可以將其看做Maximum Inner Product Search (MIPS)問題,即在不計(jì)算所有點(diǎn)積項(xiàng)的情況下,通過一個(gè)查詢Q來尋找與其具有最大點(diǎn)積的K。Routing Transformer使用了k-means聚類——對查詢queries和keys在同一簇質(zhì)心向量集合上進(jìn)行聚類。每個(gè)查詢Q只關(guān)注與其屬于同一簇內(nèi)的keys。在訓(xùn)練的時(shí)候,會使用分配的向量指數(shù)移動(dòng)平均數(shù)除以簇的數(shù)量來更新每個(gè)簇的質(zhì)心向量。

表示的是????這個(gè)簇中包含的向量的數(shù)量,?是一個(gè)可學(xué)習(xí)的超參數(shù)。

假設(shè)表示第個(gè)查詢涉及的Key的索引集合,在Routing Transformer中的表示為:

Reformer使用了局部敏感哈希(LSH)算法來為每一個(gè)query選擇對應(yīng)的K-V對,LSH注意允許每個(gè)token只關(guān)注同一散列桶中的token。其基本思想是使用LSH函數(shù)將Query和Key散列到多個(gè)bucket中,相似的項(xiàng)有很高的概率落在同一個(gè)bucket中。

具體來看,他們使用隨機(jī)矩陣方法作為LSH的函數(shù)。假設(shè)表示bucket的數(shù)量,給定隨機(jī)矩陣大小為,則LSH函數(shù)的計(jì)算公式為:

LSH允許Query只關(guān)注具有索引的K-V對:

  • 稀疏自適應(yīng)連接(Sparse Adaptive Connection,SAC)將輸入序列視為一個(gè)圖,并學(xué)習(xí)構(gòu)造注意力邊,以使用自適應(yīng)稀疏連接提高特定任務(wù)的性能。SAC使用LSTM邊緣預(yù)測器來構(gòu)造token之間的邊。在沒有遍的情況下,采用強(qiáng)化學(xué)習(xí)的方法訓(xùn)練邊緣預(yù)測器。

  • Sparse Sinkhorn Attention(SSA)首先將查詢Q和鍵K分成幾個(gè)塊,并為每個(gè)查詢塊分配一個(gè)鍵塊。每個(gè)查詢Q只允許關(guān)注分配給其相應(yīng)鍵塊中的鍵。鍵塊的分配由排序網(wǎng)絡(luò)控制,該網(wǎng)絡(luò)是一個(gè)使用Sinkhorn歸一化產(chǎn)生的雙隨機(jī)矩陣,該矩陣用作分配時(shí)的排列矩陣。SSA使用這種基于內(nèi)容的block sparse attention以及上面中介紹的block local attention以增強(qiáng)模型的局部建模能力。

好了,本次的分享就是這些,剩余部分之后會繼續(xù)解讀。希望能對大家有幫助。

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機(jī)器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。