Task05

一、Attention 機制剖析

1付呕、為什么要引入 Attention 機制?

根據(jù)通用近似定理跌捆,前饋網(wǎng)絡和循環(huán)網(wǎng)絡都有很強的能力徽职。但為什么還要引入注意力機制呢?

計算能力的限制:當要記住很多“信息“佩厚,模型就要變得更復雜姆钉,然而目前計算能力依然是限制神經(jīng)網(wǎng)絡發(fā)展的瓶頸。

優(yōu)化算法的限制:雖然局部連接抄瓦、權(quán)重共享以及 pooling 等優(yōu)化操作可以讓神經(jīng)網(wǎng)絡變得簡單一些潮瓶,有效緩解模型復雜度和表達能力之間的矛盾;但是闺鲸,如循環(huán)神經(jīng)網(wǎng)絡中的長距離以來問題筋讨,信息“記憶”能力并不高。

可以借助人腦處理信息過載的方式摸恍,例如 Attention 機制可以提高神經(jīng)網(wǎng)絡處理信息的能力。

2、Attention 機制有哪些立镶?(怎么分類壁袄?)

當用神經(jīng)網(wǎng)絡來處理大量的輸入信息時,也可以借鑒人腦的注意力機制媚媒,只 選擇一些關鍵的信息輸入進行處理嗜逻,來提高神經(jīng)網(wǎng)絡的效率。按照認知神經(jīng)學中的注意力缭召,可以總體上分為兩類:

聚焦式(focus)注意力:自上而下的有意識的注意力栈顷,主動注意——是指有預定目的、依賴任務的嵌巷、主動有意識地聚焦于某一對象的注意力萄凤;

顯著性(saliency-based)注意力:自下而上的有意識的注意力,被動注意——基于顯著性的注意力是由外界刺激驅(qū)動的注意搪哪,不需要主動干預靡努,也和任務無關;可以將 max-pooling 和門控(gating)機制來近似地看作是自下而上的基于顯著性的注意力機制晓折。

在人工神經(jīng)網(wǎng)絡中惑朦,注意力機制一般就特指聚焦式注意力。

3漓概、Attention 機制的計算流程是怎樣的漾月?

Attention 機制的實質(zhì):尋址(addressing)

Attention 機制的實質(zhì)其實就是一個尋址(addressing)的過程,如上圖所示:給定一個和任務相關的查詢 Query 向量 q胃珍,通過計算與 Key 的注意力分布并附加在 Value 上梁肿,從而計算 Attention Value,這個過程實際上是Attention 機制緩解神經(jīng)網(wǎng)絡模型復雜度的體現(xiàn):不需要將所有的 N 個輸入信息都輸入到神經(jīng)網(wǎng)絡進行計算堂鲜,只需要從 X 中選擇一些和任務相關的信息輸入給神經(jīng)網(wǎng)絡栈雳。

注意力機制可以分為三步:一是信息輸入;二是計算注意力分布α缔莲;三是根據(jù)注意力分布α 來計算輸入信息的加權(quán)平均哥纫。

step1- 信息輸入:用 X = [x1, · · · , xN ] 表示 N 個輸入信息;

step2- 注意力分布計算:令 Key=Value=X痴奏,則可以給出注意力分布

我們將 αi 稱之為注意力分布(概率分布)蛀骇, s(Xi,q) 為注意力打分機制读拆,有幾種打分機制:

step3- 信息加權(quán)平均:注意力分布 αi 可以解釋為在上下文查詢 q 時擅憔,第 i 個信息受關注的程度,采用一種“軟性”的信息選擇機制對輸入信息 X 進行編碼為:

這種編碼方式為軟性注意力機制(soft Attention)檐晕,軟性注意力機制有兩種:普通模式(Key=Value=X)和鍵值對模式(Key暑诸!=Value)蚌讼。

軟性注意力機制(soft Attention)

4、Attention 機制的變種有哪些个榕?

與普通的 Attention 機制(上圖左)相比篡石,Attention 機制有哪些變種呢?

變種 1- 硬性注意力:之前提到的注意力是軟性注意力西采,其選擇的信息是所有輸入信息在注意力 分布下的期望凰萨。還有一種注意力是只關注到某一個位置上的信息,叫做硬性注意力(hard attention)械馆。硬性注意力有兩種實現(xiàn)方式:

(1)一種是選取最高概率的輸入信息胖眷;

(2)另一種硬性注意力可以通過在注意力分布式上隨機采樣的方式實現(xiàn)。

硬性注意力模型的缺點:

硬性注意力的一個缺點是基于最大采樣或隨機采樣的方式來選擇信息霹崎。因此最終的損失函數(shù)與注意力分布之間的函數(shù)關系不可導珊搀,因此無法使用在反向傳播算法進行訓練。為了使用反向傳播算法仿畸,一般使用軟性注意力來代替硬性注意力食棕。硬性注意力需要通過強化學習來進行訓練〈砉粒——《神經(jīng)網(wǎng)絡與深度學習》

變種 2- 鍵值對注意力:即上圖右邊的鍵值對模式簿晓,此時 Key!=Value千埃,注意力函數(shù)變?yōu)椋?/p>

變種 3- 多頭注意力:多頭注意力(multi-head attention)是利用多個查詢 Q = [q1, · · · , qM]憔儿,來平行地計算從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分放可,然后再進行拼接:

5谒臼、一種強大的 Attention 機制:為什么自注意力模型(self-Attention model)在長距離序列中如此強大?

(1)卷積或循環(huán)神經(jīng)網(wǎng)絡難道不能處理長距離序列嗎耀里?

當使用神經(jīng)網(wǎng)絡來處理一個變長的向量序列時蜈缤,我們通常可以使用卷積網(wǎng)絡或循環(huán)網(wǎng)絡進行編碼來得到一個相同長度的輸出向量序列冯挎,如圖所示:

基于卷積網(wǎng)絡和循環(huán)網(wǎng)絡的變長序列編碼

從上圖可以看出底哥,無論卷積還是循環(huán)神經(jīng)網(wǎng)絡其實都是對變長序列的一種“局部編碼”:卷積神經(jīng)網(wǎng)絡顯然是基于 N-gram 的局部編碼;而對于循環(huán)神經(jīng)網(wǎng)絡房官,由于梯度消失等問題也只能建立短距離依賴趾徽。

(2)要解決這種短距離依賴的“局部編碼”問題,從而對輸入序列建立長距離依賴關系翰守,有哪些辦法呢孵奶?

如果要建立輸入序列之間的長距離依賴關系,可以使用以下兩種方法:一 種方法是增加網(wǎng)絡的層數(shù)蜡峰,通過一個深層網(wǎng)絡來獲取遠距離的信息交互了袁,另一種方法是使用全連接網(wǎng)絡朗恳。 ——《神經(jīng)網(wǎng)絡與深度學習》

全連接模型和自注意力模型:實線表示為可學習的權(quán)重,虛線表示動態(tài)生成的權(quán)重早像。

由上圖可以看出僻肖,全連接網(wǎng)絡雖然是一種非常直接的建模遠距離依賴的模型肖爵, 但是無法處理變長的輸入序列卢鹦。不同的輸入長度,其連接權(quán)重的大小也是不同的劝堪。

這時我們就可以利用注意力機制來“動態(tài)”地生成不同連接的權(quán)重冀自,這就是自注意力模型(self-attention model)。由于自注意力模型的權(quán)重是動態(tài)生成的秒啦,因此可以處理變長的信息序列熬粗。

總體來說,為什么自注意力模型(self-Attention model)如此強大:利用注意力機制來“動態(tài)”地生成不同連接的權(quán)重余境,從而處理變長的信息序列驻呐。

(3)自注意力模型(self-Attention model)具體的計算流程是怎樣的呢?

同樣,給出信息輸入:用 X = [x1, · · · , xN ] 表示 N 個輸入信息芳来;通過線性變換得到為查詢向量序列含末,鍵向量序列和值向量序列:

上面的公式可以看出,self-Attention 中的 Q 是對自身(self)輸入的變換即舌,而在傳統(tǒng)的 Attention 中佣盒,Q 來自于外部

self-Attention 計算過程剖解(來自《細講 | Attention Is All You Need 》)

注意力計算公式為:

自注意力模型(self-Attention model)中顽聂,通常使用縮放點積來作為注意力打分函數(shù)肥惭,輸出向量序列可以寫為:

二、Transformer(Attention Is All You Need)詳解

從 Transformer 這篇論文的題目可以看出紊搪,Transformer 的核心就是 Attention蜜葱,這也就是為什么本文會在剖析玩 Attention 機制之后會引出 Transformer,如果對上面的 Attention 機制特別是自注意力模型(self-Attention model)理解后耀石,Transformer 就很容易理解了牵囤。

1、Transformer 的整體架構(gòu)是怎樣的娶牌?由哪些部分組成奔浅?

Transformer 模型架構(gòu)

Transformer 其實這就是一個 Seq2Seq 模型,左邊一個 encoder 把輸入讀進去诗良,右邊一個 decoder 得到輸出:

Seq2Seq 模型

Transformer=Transformer Encoder+Transformer Decoder

(1)Transformer Encoder(N=6 層汹桦,每層包括 2 個 sub-layers):

Transformer Encoder

sub-layer-1:multi-head self-attention mechanism,用來進行 self-attention鉴裹。

sub-layer-2:Position-wise Feed-forward Networks舞骆,簡單的全連接網(wǎng)絡钥弯,對每個 position 的向量分別進行相同的操作,包括兩個線性變換和一個 ReLU 激活輸出(輸入輸出層的維度都為 512督禽,中間層為 2048):

每個 sub-layer 都使用了殘差網(wǎng)絡:

(2)Transformer Decoder(N=6 層脆霎,每層包括 3 個 sub-layers):

Transformer Decoder

sub-layer-1:Masked multi-head self-attention mechanism,用來進行 self-attention狈惫,與 Encoder 不同:由于是序列生成過程睛蛛,所以在時刻 i 的時候,大于 i 的時刻都沒有結(jié)果胧谈,只有小于 i 的時刻有結(jié)果忆肾,因此需要做 Mask。

sub-layer-2:Position-wise Feed-forward Networks菱肖,同 Encoder客冈。

sub-layer-3:Encoder-Decoder attention 計算。

2稳强、Transformer Encoder 與 Transformer Decoder 有哪些不同场仲?

(1)multi-head self-attention mechanism 不同,Encoder 中不需要使用 Masked退疫,而 Decoder 中需要使用 Masked渠缕;

(2)Decoder 中多了一層 Encoder-Decoder attention,這與 self-attention mechanism 不同蹄咖。

3褐健、Encoder-Decoder attention 與 self-attention mechanism 有哪些不同?

它們都是用了 multi-head 計算澜汤,不過 Encoder-Decoder attention 采用傳統(tǒng)的 attention 機制蚜迅,其中的 Query 是 self-attention mechanism 已經(jīng)計算出的上一時間 i 處的編碼值,Key 和 Value 都是 Encoder 的輸出俊抵,這與 self-attention mechanism 不同谁不。代碼中具體體現(xiàn):

復制代碼

## Multihead Attention ( self-attention)

self.dec = multihead_attention(queries=self.dec,

keys=self.dec,

num_units=hp.hidden_units,

num_heads=hp.num_heads,

dropout_rate=hp.dropout_rate,

is_training=is_training,

causality=True,

scope="self_attention")

## Multihead Attention ( Encoder-Decoder attention)

self.dec = multihead_attention(queries=self.dec,

keys=self.enc,

num_units=hp.hidden_units,

num_heads=hp.num_heads,

dropout_rate=hp.dropout_rate,

is_training=is_training,

causality=False,

scope="vanilla_attention")

4、multi-head self-attention mechanism 具體的計算過程是怎樣的徽诲?

multi-head self-attention mechanism 計算過程

Transformer 中的 Attention 機制由 Scaled Dot-Product Attention 和 Multi-Head Attention 組成刹帕,上圖給出了整體流程。下面具體介紹各個環(huán)節(jié):

Expand:實際上是經(jīng)過線性變換谎替,生成 Q偷溺、K、V 三個向量钱贯;

Split heads: 進行分頭操作挫掏,在原文中將原來每個位置 512 維度分成 8 個 head,每個 head 維度變?yōu)?64秩命;

Self Attention:對每個 head 進行 Self Attention尉共,具體過程和第一部分介紹的一致褒傅;

Concat heads:對進行完 Self Attention 每個 head 進行拼接;

上述過程公式為:

5袄友、Transformer 在 GPT 和 Bert 等詞向量預訓練模型中具體是怎么應用的殿托?有什么變化?

GPT 中訓練的是單向語言模型剧蚣,其實就是直接應用 Transformer Decoder支竹;

Bert 中訓練的是雙向語言模型,應用了 Transformer Encoder 部分券敌,不過在 Encoder 基礎上還做了 Masked 操作唾戚;

BERT Transformer 使用雙向 self-attention,而 GPT Transformer 使用受限制的 self-attention待诅,其中每個 token 只能處理其左側(cè)的上下文。雙向 Transformer 通常被稱為“Transformer encoder”熊镣,而左側(cè)上下文被稱為“Transformer decoder”卑雁,decoder 是不能獲要預測的信息的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绪囱,一起剝皮案震驚了整個濱河市测蹲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鬼吵,老刑警劉巖扣甲,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異齿椅,居然都是意外死亡琉挖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門涣脚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來示辈,“玉大人,你說我怎么就攤上這事。” “怎么了餐抢?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵冬筒,是天一觀的道長。 經(jīng)常有香客問我觉痛,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任甩牺,我火速辦了婚禮,結(jié)果婚禮上芒涡,老公的妹妹穿的比我還像新娘柴灯。我一直安慰自己卖漫,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布赠群。 她就那樣靜靜地躺著羊始,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查描。 梳的紋絲不亂的頭發(fā)上突委,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音冬三,去河邊找鬼匀油。 笑死,一個胖子當著我的面吹牛勾笆,可吹牛的內(nèi)容都是我干的敌蚜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼窝爪,長吁一口氣:“原來是場噩夢啊……” “哼弛车!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒲每,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纷跛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后邀杏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贫奠,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年望蜡,在試婚紗的時候發(fā)現(xiàn)自己被綠了唤崭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡泣特,死狀恐怖浩姥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情状您,我是刑警寧澤勒叠,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站膏孟,受9級特大地震影響眯分,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柒桑,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一弊决、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦飘诗、人聲如沸与倡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纺座。三九已至,卻和暖如春溉潭,著一層夾襖步出監(jiān)牢的瞬間净响,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工喳瓣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馋贤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓畏陕,卻偏偏與公主長得像配乓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蹭秋,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容