注意力机制~Attention Mechanism
目錄
背景
1. Attention Function
2. Scaled Dot-Product Attention
3. Multi-attention --> Q, K=V
4. self-attention --> Q=K=V
5. Transformer?
6. softmax function
參考
背景
Attention機制的本質來自于人類視覺注意力機制。人們視覺在感知東西的時候一般不會是一個場景從到頭看到尾每次全部都看,而往往是根據需求觀察注意特定的一部分。而且當人們發現一個場景經常在某部分出現自己想觀察的東西時,人們會進行學習在將來再出現類似場景時把注意力放到該部分上?
Attention機制最早是在視覺圖像領域提出來的,應該是在九幾年思想就提出來了,但是真正火起來應該算是2014年google mind團隊的這篇論文《Recurrent Models of Visual Attention》,他們在RNN模型上使用了attention機制來進行圖像分類。隨后,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》中,使用類似attention的機制在機器翻譯任務上將翻譯和對齊同時進行,他們的工作算是第一個將attention機制應用到NLP領域中。接著attention機制被廣泛應用在基于RNN/CNN等神經網絡模型的各種NLP任務中。2017年,google機器翻譯團隊發表的《Attention is all you need》中大量使用了自注意力(self-attention)機制來學習文本表示。自注意力機制也成為了大家近期的研究熱點,并在各種NLP任務上進行探索。下圖為attention研究進展的大概趨勢。?
1. Attention Function
Attention function can be described as mapping a query and a set of key-value pairs to an output.
在計算attention時主要分為三步,第一步是將query和每個key進行相似度計算得到權重,常用的相似度函數有點積,拼接,感知機等;然后第二步一般是使用一個softmax函數對這些權重進行歸一化;最后將權重和相應的鍵值value進行加權求和得到最后的attention。目前在NLP研究中,key和value常常都是同一個,即key=value?
2. Scaled Dot-Product Attention
scaled dot-Product attention就是我們常用的使用點積進行相似度計算的attention,只是多除了一個(為K的維度)起到調節作用,使得內積不至于太大
3. Multi-attention --> Q, K=V
head:Query,Key,Value首先進過一個線性變換,然后輸入到放縮點積attention,注意這里要做h次,其實也就是所謂的多頭,每一次算一個頭。而且,每次線性變換的w是不一樣的。然后將h次的放縮點積attention結果進行拼接,再進行一次線性變換得到的值作為多頭attention的結果。
可以允許模型在不同的表示子空間里學習到相關的信息。
4. self-attention --> Q=K=V
single sequence:每個序列中的單元和該序列中所有單元進行attention計算。
目的是學習句子內部的詞依賴關系,捕獲句子的內部結構
5. Transformer?
《Attention is all you need》
該論文模型的整體結構如下圖,還是由編碼器和解碼器組成,在編碼器的一個網絡塊中,由一個多頭attention子層和一個前饋神經網絡子層組成,整個編碼器棧式搭建了N個塊。類似于編碼器,只是解碼器的一個網絡塊中多了一個多頭attention層。為了更好的優化深度網絡,整個網絡使用了殘差連接和對層進行了規范化(Add&Norm)。
這篇論文主要亮點在于1)不同于以往主流機器翻譯使用基于RNN的seq2seq模型框架,該論文用attention機制代替了RNN搭建了整個模型框架。2)提出了多頭注意力(Multi-headed attention)機制方法,在編碼器和解碼器中大量的使用了多頭自注意力機制(Multi-headed self-attention)。3)在WMT2014語料中的英德和英法任務上取得了先進結果,并且訓練速度比主流模型更快。
--> Why self-attention?
論文中提到主要從三個方面考慮(每一層的復雜度,是否可以并行,長距離依賴學習),并給出了和RNN,CNN計算復雜度的比較。可以看到,如果輸入序列n小于表示維度d的話,每一層的時間復雜度self-attention是比較有優勢的。當n比較大時,作者也給出了一種解決方案self-attention(restricted)即每個詞不是和所有詞計算attention,而是只與限制的r個詞去計算attention。在并行方面,多頭attention和CNN一樣不依賴于前一時刻的計算,可以很好的并行,優于RNN。在長距離依賴上,由于self-attention是每個詞和所有詞都要計算attention,所以不管他們中間有多長距離,最大的路徑長度也都只是1。可以捕獲長距離依賴關系。
6. softmax function
假設我們有一個數組,V,Vi表示V中的第i個元素,那么這個元素的Softmax值就是
softmax層只是對神經網絡的output layer的輸出結果進行了一次換算,將輸出結果用概率的形式表現出來。
參考
自然語言處理中的自注意力機制(Self-attention Mechanism)
為什么是SoftMax?
總結
以上是生活随笔為你收集整理的注意力机制~Attention Mechanism的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BERT论文阅读(一): Pre-tra
- 下一篇: 深度学习基础知识(一): 概述-神经网络