Transformer的七十二變

2021-02-20 PaperWeekly

©PaperWeekly 原創 · 作者|李明曉

學校|魯汶大學博士生

研究方向|自然語言處理

自 2017 年 Google 提出 Transformer 後,其在各項 NLP 任務中都取得了 SOTA 的表現。然而其自身的結構缺陷導致了兩個問題:

1)由於自注意力機制每次都要計算所有詞之間的注意力,其所需計算複雜度為輸入長度的平方;2)Transformer 需要事先設定輸入長度,這導致了其對於長程關係的捕捉有了一定限制,並且由於需要對輸入文檔進行分割會導致語意上的碎片化。

近年來許多工作通過對 Transformer 結構的調整優化來緩解以上兩個問題。

本文分為兩部分,第一部分介紹和比較的三個模型(Star-Transformer 和 BP-Transformer)試圖在時間複雜度和空間複雜度上優化 Transformer。第二部分介紹和比較的兩個模型(Transformer-XL 和 Compressivetransformer)試圖解決上面提出的第二個問題。

對 Transformer 不了解的可先閱讀該博客:https://jalammar.github.io/illustrated-transformer/

更高效的Transformer

1. Star-Transformer

論文標題:Star-Transformer

論文來源:NAACL 2019

論文連結:https://arxiv.org/abs/1902.09113

代碼連結:https://github.com/fastnlp/fastNLP

原始的 Transformer 在計算注意力的時候,序列中每個元素要和所有元素進行計算,也是這樣的計算方式導致了其複雜度為序列長度的平方。同時 Transformer 這樣所有元素直接相互作用的計算方式沒能夠很好地使用我們所知道的一些語言序列上的特性,比如語言序列中相鄰的詞往往本身就會有較強的相關性。

對於這個問題,Star-Transformer 在注意力機制的計算上進行了優化,構建了一個星狀的結構,所有序列中直接相鄰的元素可以直接相互作用,而非直接相鄰的元素則通過中心元素實現間接得信息傳遞。

具體結構比較如下圖所示,左邊為正常的 Transformer,右邊為 Star-Transformer。

下圖為 Star-Transformer 的參數更新算法。在初始化階段,衛星節點

因為中心節點擔負著所有衛星節點之間的信息交互,因此中心節點在更新時須與自己上一時刻的信息和所有衛星節點進行信息交互。同時為了表示位置信息,在衛星節點中還必須拼接上表示位置信息的可學習的向量。

該模型在使用中,針對序列的下遊任務使用衛星節點的輸出,而針對語言推理文本分類這種需要整個句子的任務則可以使用中心節點的輸出。

作者的實驗中表明,該非直接的聯繫方式同樣能夠學習到長程聯繫,同時在一些任務上的也取得了比 Transformer 更好的表現。

2. BP-Transformer

論文標題:BP-Transformer: Modelling Long-Range Context via Binary Partitioning
論文連結:https://arxiv.org/abs/1911.04070代碼連結:https://github.com/yzh119/BPTBP-Transformer 採用一個層級(從細粒度到粗粒度)的注意力計算機制來改進原始的 Transformer。其能夠將 Transformer 在計算注意力時的時間複雜度從

整個結構可以看為圖神經網絡,序列元素和序列片段為圖中的節點,而節點間的聯繫為圖的邊。邊分為兩種:第一種為 Affiliated Edges 連接片段與組成該片段的葉子節點,另一種為 Contextual Edges 連接葉子節點和與其相關的葉子節點或片段節點。

整個結構如下圖所示,

構建完整個圖後,該模型可通過以下算法更新參數:

其中 GSA (Graph Self-Attention) 為:

A(u) 為所有與 u 節點想連的節點,由上面公式可見 GSA 其實就是多頭注意力機制,只是相比原始 Transformer 計算一個節點與所有節點的注意力,這裡只計算節點與其相鄰節點的注意力,而因為在二叉樹中有跨層次的節點連接即有自節點元素和中間節點元素(片段)的連接,就實現在計算不同粒度下的注意力。該模型在初始化時,葉子節點初始化為相應的詞向量,而片段節點則初始化為零。在針對像語言模型這種序列型的下遊任務中,可使用葉子節點的輸出,而針對像文本分類等需要用的整個句子的則使用二叉樹根節點的輸出。作者在多個任務中測試,結果表明相比原始的注意力計算方式,該模型在長文本任務中取得了更好的表現。

學習更長語義聯繫的Transformer

1. Transformer-XL

論文標題:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context論文連結:https://arxiv.org/abs/1901.02860

代碼連結:https://github.com/kimiyoung/transformer-xl

相比原始 Transformer,Transformer-XL 有以下兩個變化:1)引入循環機制,使得新模型能夠學習到更長的語義聯繫;2)拋棄絕對位置表示,採用相對位置表示。

1.1 循環機制

在原始 Transformer 中,每個序列的計算相互獨立,因此也導致了其只能夠學習到同個序列內的語義聯繫。而在 Transformer-XL 中,每個序列計算後的隱狀態會參與到下一個序列的計算當中,使得模型能夠學習到跨序列的語義聯繫。

如下圖所示,左邊為原始 Transformer,右邊為 Transformer-XL。

相比原始 Transformer,Transformer-XL 模型的計算當中加入綠色連線,使得當層的輸入取決於本序列和上一個序列前一層的輸出。具體計算公式如下:

其中 h 為隱藏層,n 為層數, τ 表示序列數,W 為模型參數,° 表示矩陣拼接。SG 意為 stop-gradient,即停止梯度計算,這樣雖然在計算中運用了前一個序列的計算結果,但是在反向傳播中並不對其進行梯度的更新。

式子一:將上一序列上一層隱狀態與本序列上一層隱狀態進行矩陣拼接,這也是 Transformer-XL 實現循環機制的關鍵。

式子二:計算注意力機制所需的 q,k,v。與原始 Transformer 不同的是 k,v 的計算是取決於由式一得到的隱狀態,而 q 則是只含有本序列的信息。在注意力的計算中,q 與 k,v 的相互作用讓模型實現了跨序列的語義學習。

式子三:常規的 Transformer 層計算。

Transformer-XL 通過引入跨層的循環機制,使得模型能夠學習到跨序列的語義信息。這樣跨層的方式也使得其能夠學習到的語義長度受限於網絡深度,具體依賴關係為 N*(L-1) 用大 O 表示可近似為 O(N*L),N 為網絡深度,L 為序列長度。如下圖所示,序列長度為 4,網絡深度為 3。

1.2 相對位置編碼

由於注意力機制忽視了位置信息,因此在 Transformer 中需要加入位置編碼。原始 Transformer 採用了正弦/餘弦函數來編碼絕對位置信息。然而在 Transformer-XL 中,若採用和 Transformer 一樣的絕對位置編碼,那麼不同序列間同個位置會得到同樣的編碼。

因此這種方法在 Transformer-XL 中行不通,為了解決這個問題 Transformer-XL 採用了相對位置編碼。

以下公式和分別為原始 Transformer 和 Transformer-XL 中注意力的計算公式。在其中 E 表示詞的 Embedding,而 U 表示絕對位置編碼。在中 R 為相對位置表示,該相對位置表示也是一個正弦函數表示。

相比,除了用相對位置表示 R 替代了絕對位置表示 U 後,還用兩個可學習參數 u 和 v 替代了中的 query 位置的映射,同時將原本對 key 的映射矩陣分成兩組矩陣和,分別生成基於內容的 key 向量和基於位置的 key 向量。

替換後中四項分別代表:(a) 基於內容的尋址;(b) 基於內容的位置偏差;(c) 全部內容偏差;(d) 全局位置偏差。採用相對位置編碼後,Transformer-XL 具體的計算公式如下:

2. Compressive Transformer

論文標題:Compressive Transformers for Long-Range Sequence Modelling論文連結:https://arxiv.org/abs/1911.05507

為了增加 Transformer 可以學習到的語義長度,Compressiv Transformer 在原 Transformer 的結構上增加了一個記憶模塊和一個壓縮記憶模塊。

每一個序列計算後其隱狀態會被放入記憶模塊中,然後記憶模塊中的部分原有記憶會被壓縮然後放入壓縮記憶模塊中,這時壓縮記憶模塊中的部分記憶則會被拋棄掉。

如下圖所示,壓縮記憶模塊和記憶模塊維度皆為 6,而序列長度為 3。箭頭和f表示對記憶模塊中的記憶進行壓縮並放入壓縮記憶模塊中。

Compressive Transformer 具體的算法細節如下,其中m表示記憶模塊,cm 表示壓縮記憶模塊,h 為隱狀態,d 為 Embedding 維度,為壓縮記憶模塊長度,為記憶模塊長度,c 為壓縮常數,l 為層數。

下圖為一個簡易示意圖,紅色表示計算注意力,藍色表示將計算過的序列存入記憶模塊和壓縮記憶模塊過程。

在論文中作者嘗試了如下幾個不同的壓縮函數:1)max/mean pooling;2)1Dconvolution;3)dialated convolutions;4)most-used。實驗表明在 WIKITEXT-103 數據集中 1D convolution 表現最好。同時為了更好的學習壓縮函數的參數,模型訓練時使用了一個輔助的損失函數(因為若是依賴模型的損失函數,則梯度需要經過很長的時序才能傳到存貯的老的記憶,類似於 RNN 裡梯隊消失問題)。該損失函數為注意力重建損失函數,旨在測量通過更新後的記憶計算的注意力和使用原本記憶計算的注意力之間的差距。通過最小化該差距來確保有效的壓縮信息。

通過引入記憶模塊後,Compressive Transformer 能夠捕捉的語義長度為 O(L*(+c) 其中為壓縮記憶模塊長度,為記憶模塊長度,c 為壓縮常數。

相比較 Transformer-XL 的 O(LN),Compressive Transformer 通過將計算後的序列保存在記憶模塊中有效的提高了模型捕捉長程語義的能力。

Reference


BP-Transformer: Modelling Long-Range Context via Binary Partitioning.Zihao Ye, Qipeng Guo, Quan Gan, Xipeng Qiu, Zheng Zhang

Star-Transformer.Qipeng Guo, Xipeng Qiu, Pengfei Liu, Yunfan Shao, Xiangyang Xue, Zheng Zhang

COMPRESSIVE TRANSFORMERS FOR LONG-RANGE SEQUENCE MODELLING, Jack W. Rae Anna Potapenko Siddhant M. Jayakumar Chloe Hillier Timothy P. Lillicrap

Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context, Zihang Dai∗12, Zhilin Yang∗12, Yiming Yang1, Jaime Carbonell1, Quoc V. Le2, Ruslan Salakhutdinov1

點擊以下標題查看更多往期內容: 

🔍

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。

相關焦點

  • 【transformer】 你應該知道的 transformer
    transformer為什麼需要用transformerencoderdecoderoutput layersummarytransformer的缺點transformer的應用refTransformer什麼是transformer首先我們先說結論:Attention Is
  • transformer什麼意思
    transformer什麼意思transform,我們前面背過,意思是變形、變樣,尤其是好的改變。transformer(配色不錯,很工業)transformer (像一隻鳥)transformer學單詞,只記住意思可不行,會用才行,小夥伴們可以在評論區造句,我們一起學習哦!
  • 視覺Transformer最新綜述
    上圖基本上就是本文的主要內容了,作者首先對 attention,transformer 做一個簡單介紹,然後介紹 transformer 在 NLP 中的應用,最後將其在 CV 中的應用分為四類加以介紹。
  • 《七十二變》分身術 諸天神魔擋不住
    在上海遊族研發的西遊題材網頁遊戲《七十二變》中,分身術就是一大創新玩法,如果學會了分身術,那絕對是諸天神魔擋不住。《七十二變》分身術在《西遊記》中,孫悟空從菩提老祖那裡學得了許多仙術,筋鬥雲一翻十萬八千裡,地罡數變化有七十二般,身上毫毛更是能變化成無數分身。有了這些本領,所以大鬧天宮的時候,天兵天將都無法將他降服。
  • A Survey on Visual Transformer及引文理解
    上圖基本上就是本文的主要內容了,作者首先對attention,transformer做一個簡單介紹,然後介紹transformer在NLP中的應用,最後將其在CV中的應用分為四類加以介紹。與只關注局部特徵的CNN相比,transformer能夠捕捉到長距離特徵,這意味著transformer可以很容易地獲得全局信息。與RNN的隱態計算順序相比較,Transformer的自注意層和全連接層的輸出可並行計算,且速度快。因此,進一步研究Transformer在自然語言處理和計算機視覺領域的應用具有重要意義。3.
  • 孫悟空七十二變是變啥?揭秘七十二變真正含義
    孫悟空七十二變是變啥?揭秘七十二變真正含義時間:2015-06-27 14:24   來源:華東在線   責任編輯:毛青青 川北在線核心提示:原題:孫悟空的七十二變究竟是指什麼?來源:網易-趣歷史 導讀:【孫悟空七十二變是變啥?
  • Transformer在CV領域有可能替代CNN嗎?
    目前來看,transformer在處理這些要素之間的關係上更自然也更有效。  從這兩方面的角度來看,將CNN在處理底層視覺上的優勢和transformer在處理視覺要素和物體之間關係上的優勢相結合,應該是一個非常有希望的方向。
  • 精通七十二變的三大神魔,誰才是真正的鬥戰神?
    在西遊記裡,明確提出來能夠熟練施展「七十二變」神通的,有四個神魔,分別是孫悟空、二郎神、牛魔王和六耳獼猴。因為六耳獼猴被設置成了孫悟空的「二心」所化,所以,他不能算是一個獨立的個體,故而真正會使七十二變的只有孫悟空、二郎神和牛魔王三人(師父輩的不計算在內)。
  • ...利用基於遷移學習策略的transformer 模型進行Heck反應預測
    2方法2.1 實驗流程作者通過構建一系列的對比實驗來評估transformer模型在Heck反應預測這一目標任務的表現。在該文章中,加入遷移學習的模型命名transformer-transfer learning模型,未含有遷移學習的參照模型則稱為transformer-baseline模型。圖 2.
  • |利用基於遷移學習策略的transformer 模型進行Heck...
    但是與之相比, transformer-baseline模型對於這兩類反應的預測表現並不使人滿意,分別只有66.7%和58.7%的準確率。表2為具體的結果分析,從這些結果中可以體現transformer + 遷移學習這一實驗策略方案的強大之處。同時,研究者也指出遷移學習的確能夠非常有效地增進transformer模型對於數據信息的提取。
  • 贈書| 新手指南——如何通過HuggingFace Transformer整合表格數據
    Etc.不過,這種方法有一個缺點,那就是它受到transformer所能處理的最大令牌長度的限制。 Kiela等人在2019年發表的論文《Supervised Multimodal Bitransformers for Classifying Images and Text》中,將預訓練的ResNet和預訓練的BERT分別應用在非模態圖像和文本上,並將其輸入雙向transformer。其關鍵性創新是將圖像特徵作為附加令牌應用到transformer模型中。
  • EXO正規二輯EXODUS新曲TRANSFORMER變形女中文版歌詞
    )中文版歌詞【韓文版歌詞】  韓文作詞:Kenzie  中文作詞:T-Crash  曲/編:Kenzie / Jonathan Yip / Jeremy Reeves / Ray Romulus / Ray McCullough  She's such a transformer
  • 解析二郎神楊戩的八九玄功和孫悟空的七十二變是同一種功法嗎
    首先說說孫悟空在菩提老祖那學得的「七十二變」直到現在對於菩提老祖的身份都是謎,此人似道、似佛、似儒。這「七十二變」全名是「地煞七十二變」剛開始菩提老祖讓孫悟空自己選,是要學「天罡三十六變」還是「地煞七十二變」孫悟空說要學多的,於是菩提老祖就教其「七十二變」。大家覺得孫悟空選對了嗎?要曉得這是長生之術,不能長生孫悟空也不學不是。
  • Facebook AI的DETR:一種基於Transformer的目標檢測方法
    utm_source=blog&utm_medium=facebook-detection-transformer-detr-a-transformer-based-object-detection-approach使用流行的YOLO框架進行目標檢測的實用指南https://www.analyticsvidhya.com/blog/2018/12/practical-guide-object-detection-yolo-framewor-python
  • NVIDIA BERT 推理解決方案 Faster Transformer 開源了
    # import optransformer_op_module = tf.load_op_library(os.path.join('../../build/lib/libtf_transformer.so'))...def fast_transformer_model_trans(...) ...
  • 圖解OpenAI的秘密武器GPT-2:可視化Transformer語言模型
    用於語言建模的Transformers模型正如我們在「圖解Transformer模型」中看到的那樣,原始的 transformer模型由encoder和decoder組成,每個都是我們稱之為 transformer 架構的堆棧。
  • 神話人物暗含氣象特徵,一年之中氣象信息的三十六變和七十二變
    其中,孫悟空有七十二變,豬八戒有三十六變,會七十二變的還有須菩提祖師、牛魔王、二郎神楊戩。其實道家中有天罡三十六變,地煞七十二術。說起來頭頭是道。今天要講的是一年的天氣中的三十六變和七十二變。先說七十二變,大家知道一年有二十四個節氣,分別是:立春、雨水、驚蟄、春分、清明、穀雨、立夏、小滿、芒種、夏至、小暑、大暑、立秋、處暑、白露、秋分、寒露、霜降、立冬、小雪、大雪、冬至、小寒、大寒。
  • 模型壓縮95%,MIT韓松等人提出新型Lite Transformer
    這樣的專門化配置使得模型在三個語言任務上都比原版 transformer 有所提升,這三個任務分別是機器翻譯、文本摘要和語言建模。在資源有限的情況下(500M/100M MACs),Lite Transformer 在 WMT』14 英法數據集上的 BLEU 值比分別比 transformer 高 1.2/1.7。
  • 視覺+Transformer最新論文出爐,華為聯合北大、雪梨大學發表
    iGPT 、 ViT 、BiT-L的詳細結果如下表:Transformer 用於目標檢測突破性算法DETR(出自Facebook 論文 End-to-end object detection with transformers)流程圖:DETR 的整體架構為使得Visual transformer 模型參數量和計算量更小,使其更具實用性,業界提出了不少算法
  • 帶你一文了解GPT-2模型(transformer語言模型可視化)
    GPT-2並不是專門寫小說的語言架構——結構與僅含解碼器的transformer相似,但它實則是基於transformer的語言模型,規模巨大,在海量的數據集上進行訓練。本文將介紹能讓模型生成結果的架構,深入到自注意力(self-attention)層,接著會講一些僅含解碼器的transformer在語言建模之外的應用。