tft每日頭條

 > 生活

 > attention模型使用教程

attention模型使用教程

生活 更新时间:2024-06-27 02:51:45

attention模型使用教程(一文看懂Attention本質原理)1

Attention 正在被越來越廣泛的得到應用。尤其是 BERT 火爆了之後。

Attention 到底有什麼特别之處?他的原理和本質是什麼?Attention都有哪些類型?本文将詳細講解Attention的方方面面。

Attention 的本質是什麼

Attention(注意力)機制如果淺層的理解,跟他的名字非常匹配。他的核心邏輯就是「從關注全部到關注重點」。

attention模型使用教程(一文看懂Attention本質原理)2

Attention 機制很像人類看圖片的邏輯,當我們看一張圖片的時候,我們并沒有看清圖片的全部内容,而是将注意力集中在了圖片的焦點上。大家看一下下面這張圖:

attention模型使用教程(一文看懂Attention本質原理)3

我們一定會看清「錦江飯店」4個字,如下圖:

attention模型使用教程(一文看懂Attention本質原理)4

但是我相信沒人會意識到「錦江飯店」上面還有一串「電話号碼」,也不會意識到「喜運來大酒家」,如下圖:

attention模型使用教程(一文看懂Attention本質原理)5

所以,當我們看一張圖片的時候,其實是這樣的:

attention模型使用教程(一文看懂Attention本質原理)6

上面所說的,我們的視覺系統就是一種 Attention機制,将有限的注意力集中在重點信息上,從而節省資源,快速獲得最有效的信息。

AI 領域的 Attention 機制

Attention 機制最早是在計算機視覺裡應用的,随後在 NLP 領域也開始應用了,真正發揚光大是在 NLP 領域,因為 2018 年 BERT 和 GPT 的效果出奇的好,進而走紅。而 Transformer 和 Attention 這些核心開始被大家重點關注。

如果用圖來表達 Attention 的位置大緻是下面的樣子:

attention模型使用教程(一文看懂Attention本質原理)7

這裡先讓大家對 Attention 有一個宏觀的概念,下文會對 Attention 機制做更詳細的講解。在這之前,我們先說說為什麼要用 Attention。

Attention 的3大優點

之所以要引入 Attention 機制,主要是3個原因:

  1. 參數少
  2. 速度快
  3. 效果好

attention模型使用教程(一文看懂Attention本質原理)8

參數少

模型複雜度跟 CNN、RNN 相比,複雜度更小,參數也更少。所以對算力的要求也就更小。

速度快

Attention 解決了 RNN 不能并行計算的問題。Attention機制每一步計算不依賴于上一步的計算結果,因此可以和CNN一樣并行處理。

效果好

在 Attention 機制引入之前,有一個問題大家一直很苦惱:長距離的信息會被弱化,就好像記憶能力弱的人,記不住過去的事情是一樣的。

Attention 是挑重點,就算文本比較長,也能從中間抓住重點,不丢失重要的信息。下圖紅色的預期就是被挑出來的重點。

attention模型使用教程(一文看懂Attention本質原理)9

Attention 的原理

Attention 經常會和 Encoder–Decoder 一起說,之前的文章《一文看懂 NLP 裡的模型框架 Encoder-Decoder 和 Seq2Seq》 也提到了 Attention。

下面的動圖演示了attention 引入 Encoder-Decoder 框架下,完成機器翻譯任務的大緻流程。

attention模型使用教程(一文看懂Attention本質原理)10

但是,Attention 并不一定要在 Encoder-Decoder 框架下使用的,他是可以脫離 Encoder-Decoder 框架的。

下面的圖片則是脫離 Encoder-Decoder 框架後的原理圖解。

attention模型使用教程(一文看懂Attention本質原理)11

小故事講解

上面的圖看起來比較抽象,下面用一個例子來解釋 attention 的原理:

attention模型使用教程(一文看懂Attention本質原理)12

圖書管(source)裡有很多書(value),為了方便查找,我們給書做了編号(key)。當我們想要了解漫威(query)的時候,我們就可以看看那些動漫、電影、甚至二戰(美國隊長)相關的書籍。

為了提高效率,并不是所有的書都會仔細看,針對漫威來說,動漫,電影相關的會看的仔細一些(權重高),但是二戰的就隻需要簡單掃一下即可(權重低)。

當我們全部看完後就對漫威有一個全面的了解了。

Attention 原理的3步分解:

attention模型使用教程(一文看懂Attention本質原理)13

第一步: query 和 key 進行相似度計算,得到權值

第二步:将權值進行歸一化,得到直接可用的權重

第三步:将權重和 value 進行加權求和

從上面的建模,我們可以大緻感受到 Attention 的思路簡單,四個字“帶權求和”就可以高度概括,大道至簡。做個不太恰當的類比,人類學習一門新語言基本經曆四個階段:死記硬背(通過閱讀背誦學習語法練習語感)->提綱挈領(簡單對話靠聽懂句子中的關鍵詞彙準确理解核心意思)->融會貫通(複雜對話懂得上下文指代、語言背後的聯系,具備了舉一反三的學習能力)->登峰造極(沉浸地大量練習)。

這也如同attention的發展脈絡,RNN 時代是死記硬背的時期,attention 的模型學會了提綱挈領,進化到 transformer,融彙貫通,具備優秀的表達學習能力,再到 GPT、BERT,通過多任務大規模學習積累實戰經驗,戰鬥力爆棚。

要回答為什麼 attention 這麼優秀?是因為它讓模型開竅了,懂得了提綱挈領,學會了融會貫通。

——阿裡技術

想要了解更多技術細節,可以看看下面的文章或者視頻:

「文章」深度學習中的注意力機制

「文章」遍地開花的 Attention,你真的懂嗎?

「文章」探索 NLP 中的 Attention 注意力機制及 Transformer 詳解

「視頻」李宏毅 – transformer

「視頻」李宏毅 – ELMO、BERT、GPT 講解

Attention 的 N 種類型

Attention 有很多種不同的類型:Soft Attention、Hard Attention、靜态Attention、動态Attention、Self Attention 等等。下面就跟大家解釋一下這些不同的 Attention 都有哪些差别。

attention模型使用教程(一文看懂Attention本質原理)14

由于這篇文章《Attention用于NLP的一些小結》已經總結的很好的,下面就直接引用了:

本節從計算區域、所用信息、結構層次和模型等方面對Attention的形式進行歸類。

1. 計算區域

根據Attention的計算區域,可以分成以下幾種:

1)Soft Attention,這是比較常見的Attention方式,對所有key求權重概率,每個key都有一個對應的權重,是一種全局的計算方式(也可以叫Global Attention)。這種方式比較理性,參考了所有key的内容,再進行加權。但是計算量可能會比較大一些。

2)Hard Attention,這種方式是直接精準定位到某個key,其餘key就都不管了,相當于這個key的概率是1,其餘key的概率全部是0。因此這種對齊方式要求很高,要求一步到位,如果沒有正确對齊,會帶來很大的影響。另一方面,因為不可導,一般需要用強化學習的方法進行訓練。(或者使用gumbel softmax之類的)

3)Local Attention,這種方式其實是以上兩種方式的一個折中,對一個窗口區域進行計算。先用Hard方式定位到某個地方,以這個點為中心可以得到一個窗口區域,在這個小區域内用Soft方式來算Attention。

2. 所用信息

假設我們要對一段原文計算Attention,這裡原文指的是我們要做attention的文本,那麼所用信息包括内部信息和外部信息,内部信息指的是原文本身的信息,而外部信息指的是除原文以外的額外信息。

1)General Attention,這種方式利用到了外部信息,常用于需要構建兩段文本關系的任務,query一般包含了額外信息,根據外部query對原文進行對齊。

比如在閱讀理解任務中,需要構建問題和文章的關聯,假設現在baseline是,對問題計算出一個問題向量q,把這個q和所有的文章詞向量拼接起來,輸入到LSTM中進行建模。那麼在這個模型中,文章所有詞向量共享同一個問題向量,現在我們想讓文章每一步的詞向量都有一個不同的問題向量,也就是,在每一步使用文章在該步下的詞向量對問題來算attention,這裡問題屬于原文,文章詞向量就屬于外部信息。

2)Local Attention,這種方式隻使用内部信息,key和value以及query隻和輸入原文有關,在self attention中,key=value=query。既然沒有外部信息,那麼在原文中的每個詞可以跟該句子中的所有詞進行Attention計算,相當于尋找原文内部的關系。

還是舉閱讀理解任務的例子,上面的baseline中提到,對問題計算出一個向量q,那麼這裡也可以用上attention,隻用問題自身的信息去做attention,而不引入文章信息。

3. 結構層次

結構方面根據是否劃分層次關系,分為單層attention,多層attention和多頭attention:

1)單層Attention,這是比較普遍的做法,用一個query對一段原文進行一次attention。

2)多層Attention,一般用于文本具有層次關系的模型,假設我們把一個document劃分成多個句子,在第一層,我們分别對每個句子使用attention計算出一個句向量(也就是單層attention);在第二層,我們對所有句向量再做attention計算出一個文檔向量(也是一個單層attention),最後再用這個文檔向量去做任務。

3)多頭Attention,這是Attention is All You Need中提到的multi-head attention,用到了多個query對一段原文進行了多次attention,每個query都關注到原文的不同部分,相當于重複做多次單層attention:

attention模型使用教程(一文看懂Attention本質原理)15

最後再把這些結果拼接起來:

attention模型使用教程(一文看懂Attention本質原理)16

4. 模型方面

從模型上看,Attention一般用在CNN和LSTM上,也可以直接進行純Attention計算。

1)CNN Attention

CNN的卷積操作可以提取重要特征,我覺得這也算是Attention的思想,但是CNN的卷積感受視野是局部的,需要通過疊加多層卷積區去擴大視野。另外,Max Pooling直接提取數值最大的特征,也像是hard attention的思想,直接選中某個特征。

CNN上加Attention可以加在這幾方面:

a. 在卷積操作前做attention,比如Attention-Based BCNN-1,這個任務是文本蘊含任務需要處理兩段文本,同時對兩段輸入的序列向量進行attention,計算出特征向量,再拼接到原始向量中,作為卷積層的輸入。

b. 在卷積操作後做attention,比如Attention-Based BCNN-2,對兩段文本的卷積層的輸出做attention,作為pooling層的輸入。

c. 在pooling層做attention,代替max pooling。比如Attention pooling,首先我們用LSTM學到一個比較好的句向量,作為query,然後用CNN先學習到一個特征矩陣作為key,再用query對key産生權重,進行attention,得到最後的句向量。

2)LSTM Attention

LSTM内部有Gate機制,其中input gate選擇哪些當前信息進行輸入,forget gate選擇遺忘哪些過去信息,我覺得這算是一定程度的Attention了,而且号稱可以解決長期依賴問題,實際上LSTM需要一步一步去捕捉序列信息,在長文本上的表現是會随着step增加而慢慢衰減,難以保留全部的有用信息。

LSTM通常需要得到一個向量,再去做任務,常用方式有:

a. 直接使用最後的hidden state(可能會損失一定的前文信息,難以表達全文)

b. 對所有step下的hidden state進行等權平均(對所有step一視同仁)。

c. Attention機制,對所有step的hidden state進行加權,把注意力集中到整段文本中比較重要的hidden state信息。性能比前面兩種要好一點,而方便可視化觀察哪些step是重要的,但是要小心過拟合,而且也增加了計算量。

3)純Attention

Attention is all you need,沒有用到CNN/RNN,乍一聽也是一股清流了,但是仔細一看,本質上還是一堆向量去計算attention。

5. 相似度計算方式

在做attention的時候,我們需要計算query和某個key的分數(相似度),常用方法有:

1)點乘:最簡單的方法,

attention模型使用教程(一文看懂Attention本質原理)17

2)矩陣相乘:

attention模型使用教程(一文看懂Attention本質原理)17

3)cos相似度:

attention模型使用教程(一文看懂Attention本質原理)19

4)串聯方式:把q和k拼接起來,

attention模型使用教程(一文看懂Attention本質原理)20

5)用多層感知機也可以:

attention模型使用教程(一文看懂Attention本質原理)21

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved