自注意力機制(Self-Attention)的基本知識

2020-12-14 deephub

Transformers是機器學習(ML)中一個令人興奮的(相對)新的部分,但是在理解它們之前,有很多概念需要分解。這裡我們關注的是基本的Self-Attention機制是如何工作的,這是Transformers模型的第一層。本質上,對於每個輸入向量,Self-Attention產生一個向量,該向量在其鄰近向量上加權求和,其中權重由單詞之間的關係或連通性決定。

內容列表

介紹自我關注-數學引用文章介紹

Transformers是一種ML架構,已經成功地應用於各種NLP任務,尤其是序列到序列(seq2seq)任務,如機器翻譯和文本生成。在seq2seq任務中,目標是獲取一組輸入(例如英語單詞)並產生一組理想的輸出(德語中的相同單詞)。自2017年發布以來,他們已經佔領了seq2seq的主流架構(LSTMs),幾乎無所不在地出現在任何關於NLP突破的新聞中(比如OpenAI的GPT-2甚至出現在主流媒體上!)。

圖1:機器翻譯 英->德

本篇將作為一個非常溫和、漸進的介紹Transformer架構背後的數學、代碼和概念。沒有比注意力機制更好的開始了,因為:

最基本的transformers 完全依賴於注意力機制

Self-Attention的數學表示

我們需要一個ML系統來學習單詞之間的重要關係,就像人類理解句子中的單詞一樣。在圖2.1中,你我都知道「The」指的是「animal」,因此應該與這個詞有很強的聯繫。如圖中的顏色編碼所示,該系統知道「animal」、「cross」、「street」和「the」之間存在某種聯繫,因為它們都與句子的主語「animal」有關。這是通過Self-Attention來實現的

圖2.1:「The」注意力集中在了哪些詞?

在最基本的層面上,Self-Attention是一個過程,其中一個向量序列x被編碼成另一個向量序列z(圖2.2)。每一個原始向量只是一個代表一個單詞的數字塊。它對應的z向量既表示原始單詞,也表示它與周圍其他單詞的關係。

圖2.2:把一系列的輸入向量變成另一個長向量序列

向量表示空間中的某種事物,如海洋中的水粒子流或地球周圍任何點的重力效應。你可以把單詞看作是整個單詞空間中的向量。每個詞向量的方向都有意義。向量之間的相似性和差異性對應於單詞本身的相似性和差異性。

讓我們先看前三個向量,特別是向量x2,我們的「cat」向量,是如何變成z2的。對於每個輸入向量,將重複所有這些步驟。

首先,我們將向量x2乘以一個序列中的所有向量,包括它本身。我們將對每個向量和x2的轉置(對角翻轉)做一個乘積(圖2.3)。這和做點積是一樣的,你可以把兩個向量的點積看作是衡量它們有多相似。

圖2.3 轉置乘法(上標「T」=「轉置」)

兩個向量的點積與它們之間夾角的餘弦成正比(圖2.4),因此它們在方向上越接近,點積就越大。如果它們指向同一個方向,那麼角A為0,餘弦為0等於1。如果它們指向相反的方向(因此A=180),那麼餘弦值為-1。

圖2.4 向量點積

如果你想要一個更直觀的觀點,Bloem的文章(地址參看引用段)討論了自我關注如何類似於推薦系統決定電影或用戶的相似性。

所以我們一次只關注一個詞,然後根據它周圍的詞來確定它的輸出。這裡我們只看前面和後面的單詞,但我們可以選擇在將來拓寬這個窗口。

圖2.5-每個j-th向量的原始權重

如果我們關注的單詞是「cat」,那麼我們要複習的單詞序列是「the」,「cat」,「sat」。我們要問的是「cat」這個詞應該分別關注「the」、「cat」和「sat」(與圖2.1所示類似)。

將關注的單詞向量的轉置和它周圍的單詞序列相乘將得到一組3個原始權重(圖2.5)。兩個詞的權重是如何成比例的。我們需要對它們進行規範化,以便它們更易於使用。我們將使用softmax公式(圖2.6)來實現這一點。這將數字序列轉換為0,1的範圍內,其中每個輸出與輸入數字的指數成比例。這使得我們的權重更容易使用和解釋。

圖2.6:通過softmax函數將原始權重標準化

現在我們取歸一化的權重(j序列中每個向量對應一個),分別將它們與x輸入向量相乘,將它們的乘積相加,結果就完成了!我們有一個輸出z向量,(圖2.5)!當然,這只是x2的輸出向量(「cat」)——這個操作將對x中的每個輸入向量重複,直到我們得到圖2.2中所說的輸出序列。

圖2.7:最終得到新的向量序列z的操作

這種解釋到目前為止可能引發了一些問題:

我們計算的權重不是很大程度上依賴於我們如何確定原始輸入向量嗎?

為什麼我們要依賴向量的相似性?如果我們想在兩個「不相似」的單詞之間找到聯繫,比如「the cat sit on the matt」的賓語和主語,該怎麼辦?

在後面的文章中,我們將討論這些問題。我們將根據每個向量的不同用法對其進行轉換,從而更精確地定義單詞之間的關係,這樣我們就可以得到如圖2.8所示的輸出。

圖2.8 -橙色欄中的「cross」和粉色欄中的「cross」關注的是哪個單詞?

引用

Alammar J. The Illustrated Transformer. (2018) jalammar.github.io illustrated-transformer/ [accessed 27th June 2020]Bloem P. Transformers from Scratch. (2019) peterbloem.nl /blog/transformers .[accessed 27th June 2020]Vaswani A. et al. Dec 2017. Attention is all you need. 31st Conference on Neural Information Processing Systems (NIPS 2017), Long Beach, CA, USA. [accessed 27th June 2020]. arXiv:1706.03762Vaswani A. et al. Mar 2018 arXiv:1803.07416 .作者:Ioana

deephub翻譯組

相關焦點

  • 注意力機制Attention
    注意力機制(attention mechanism)Attention實質上是一種分配機制,其核心思想是突出對象的某些重要特徵。根據Attention對象的重要程度,重新分配資源,即權重,實現核心思想是基於原有的數據找到其之間的關聯性,然後突出其某些重要特徵。注意力可以被描述為將一個查詢和一組鍵值對映射到一個輸出,其中查詢、鍵、值和輸出都是向量。
  • Attention注意力機制的前世今身
    直觀地說,注意力機制是衡量重要性權重的向量,或元素之間相關性的表示。論文還通過對齊分數矩陣可視化所提模型的翻譯對齊效果,通過顏色的深淺反應兩者之間的聯繫緊密,這也成為後面應用注意力機制解決其他問題的常用實驗結果分析方法。
  • 一文讀懂自注意力機制:8大步驟圖解+代碼
    機制及其背後的數學原理,並擴展到Transformer。基於Transformer的架構主要用於建模語言理解任務,它避免了在神經網絡中使用遞歸,而是完全依賴於self-attention機制來繪製輸入和輸出之間的全局依賴關係。但這背後的數學原理是什麼呢? 這就是本文要講的內容。這篇文章將帶你通過一個self-attention模塊了解其中涉及的數學運算。
  • 理解卷積神經網絡中的自注意力機制
    這篇文章討論了語義分割和編碼器-解碼器架構作為例子,闡明了其局限性,以及為什麼自注意機制可以幫助緩解問題。這種機制叫做自注意力。方程 1: 兩個隨機變量X和Y的協方差CNN中的自注意力機製圖3: CNN中的自注意力機制為了實現對每個像素級預測的全局參考,Wang等人在CNN中提出了自我注意機制
  • 使用注意力機制來做醫學圖像分割的解釋和Pytorch實現
    從自然語言處理開始,到最近的計算機視覺任務,注意力機制一直是深度學習研究中最熱門的領域之一。在這篇文章中,我們將集中討論注意力是如何影響醫學圖像分割的最新架構的。為此,我們將描述最近兩篇論文中介紹的架構,並嘗試給出一些關於這兩篇文章中提到的方法的直覺,希望它能給你一些想法,讓你能夠將注意力機制應用到自己的問題上。我們還將看到簡單的PyTorch實現。
  • 自然語言處理中注意力機制綜述
    NLP中的注意力機制隨著注意力機制的廣泛應用,在某種程度上緩解了源序列和目標序列由於距離限制而難以建模依賴關係的問題。現在已經湧現出了一大批基於基本形式的注意力的不同變體來處理更複雜的任務。讓我們一起來看看其在不同NLP問題中的注意力機制。
  • 資源|帶自注意力機制的生成對抗網絡,實現效果怎樣?
    在前一段時間,Han Zhang 和 Goodfellow 等研究者提出添加了自注意力機制的生成對抗網絡,這種網絡可使用全局特徵線索來生成高解析度細節。本文介紹了自注意力生成對抗網絡的 PyTorch 實現,讀者也可以嘗試這一新型生成對抗網絡。
  • 注意力機制及其理解
    注意力機制逐漸在NLP中得地位變得越來越重要,上有Google的"Attention is All You Need"論文,下有 Tranformer、BERT等強大的NLP表徵模型,attention 在 NLP 的地位就像卷積層在圖像識別一樣變得不可缺少的一部分。在這裡,總結下注意力機制,並回顧下最近的一些的研究進展。
  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。lstm,已經有了兩種不同的,看似性能和效率差異不大的attention機制:rnnattention,lstmattention。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • 自注意力可以替代CNN,能表達任何卷積濾波層
    魚羊 十三 發自 凹非寺量子位 報導 | 公眾號 QbitAI像素層面上,CNN能做的,自注意力(self-attention)也都能做。統御NLP界的注意力機制,不僅被遷移到了計算機視覺中,最新的研究還證明了:CNN卷積層可抽取的特徵,自注意力層同樣可以。
  • 今日Paper | 自注意力對齊;自動化評估;關係抽取任務;LSTM模型等
    自注意力對齊:使用自注意力網絡和跳塊的一種延時控制的端到端語音識別模型為什麼我們需要為NLG設計新的自動化評估指標利用多輪問答模型處理實體-關係抽取任務傾聽「聲音」的聲音:一種用於聲音事件檢測的「時間-頻率」注意力模型用於端到端流式語音識別的單向LSTM模型結構分析
  • 今日Paper|自注意力對齊;自動化評估;關係抽取任務;LSTM模型等
    目錄自注意力對齊:使用自注意力網絡和跳塊的一種延時控制的端到端語音識別模型為什麼我們需要為NLG設計新的自動化評估指標利用多輪問答模型處理實體-關係抽取任務傾聽「聲音」的聲音:一種用於聲音事件檢測的「時間
  • Day152:Transformer和Attention
    self-attention的內部結構會在後面的部分詳細介紹。self-attention的輸出流向一個前向網絡,每個輸入位置對應的feed-forward網絡是獨立互不幹擾的。解碼器同樣也有這些子層,但是在兩個子層間增加了attention層,該層有助於解碼器能夠關注到輸入句子的相關部分,與 seq2seq model的Attention作用相似。
  • 深度學習中的注意力機制(三)
    包括但不限於:「基於強化學習的注意力機制」:選擇性的Attend輸入的某個部分「全局&局部注意力機制」:其中,局部注意力機制可以選擇性的Attend輸入的某些部分「多維度注意力機制」:捕獲不同特徵空間中的Attention特徵。
  • 直觀理解並使用Tensorflow實現Seq2Seq模型的注意機制
    )注意:在本節中,我們將了解解碼器的情況下,不涉及注意力機制。注意力機制就是為了解決這個問題。添加注意力機制注意力不僅為瓶頸問題提供了解決方案,還為句子中的每個單詞賦予了權重(相當字面意義)。源序列在編碼器輸出中有它自己的的信息,在解碼器中被預測的字在相應的解碼器隱藏狀態中有它自己的的信息。
  • 包學包會,這些動圖和代碼讓你一次讀懂「自注意力」
    BERT 及其多種變體已經在多種語言理解任務上取得了非常出色的表現,這些架構全都基於 Transformer,而 Transformer 又使用了一種名為「自注意力」的方法。 本文將通過圖示和代碼對自注意力機制進行透徹的解讀。 當然,在閱讀本文之前,你可能也想了解什麼是注意力機制。
  • 將注意力機制引入RNN,解決5大應用領域的序列預測問題
    在這篇博客中,我們將發現可以在循環神經網絡中採用注意力機制(attention mechanism)來克服這種局限性。讀完這篇博客,你會知道:編碼器-解碼器結構和固定長度內部表徵的局限性讓網絡學會針對輸出序列的每一項去注意輸入序列中對應位置的注意力機制帶有注意力機制的循環神經網絡在文本翻譯、語音識別等 5 個領域中的應用。
  • 學界| 雙重注意力網絡:中科院自動化所提出新的自然場景圖像分割...
    本文提出了一個新的自然場景圖像分割框架,稱為雙重注意力網絡(DANet),引入了一種自注意力機制來分別捕捉空間維度和通道維度上的視覺特徵關聯。在處理複雜多樣的場景時,本文提出的方法比以往的方法更為靈活、有效,在三個具有挑戰性的場景分割數據集(Cityscapes、PASCAL Context 和 COCO Stuff)上取得了當前最佳分割性能。
  • 無需標註數據集,自監督注意力機制就能搞定目標跟蹤
    但是,大量的標註數據往往需要付出巨大的人力成本,越來越多的研究開始關注如何在不獲取數據標籤的條件下提升模型的性能,這其中就包括自監督注意機制。想要了解什麼是自監督注意力機制,我們可能需要先去了解什麼是光流估計(optical flow estimation),以及它為何被人類和計算機視覺系統作為一種目標跟蹤方法。
  • 圖解神經機器翻譯中的注意力機制
    深紫色表示注意力得分更高。(圖源:https://distill.pub/2016/augmented-rnns/#attentional-interfaces)[2] 中有兩種類型的注意力機制。使用所有編碼器隱藏狀態的注意力類型也稱為全局注意力。而局部注意力僅使用編碼器隱藏狀態的子集。本文主要介紹全局注意力,因此本文中對「注意力」的任何引用都是指「全局注意力」。