-
當前位置:首頁 > 創(chuàng)意學院 > 營銷推廣 > 專題列表 > 正文
- 為何說Transformer是目前人工智能領(lǐng)域工程落地實踐Bayesian理論的典型?
- 為什么說Transformer的注意力機制是相對廉價的?注意力機制相對更對于RNN系列及CNN系列算法有何優(yōu)勢?
transformer詳解(transformer詳解代碼)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于transformer詳解的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器
問友Ai官網(wǎng):https://ai.de1919.com。
本文目錄:
為何說Transformer是目前人工智能領(lǐng)域工程落地實踐Bayesian理論的典型?
貝葉斯神經(jīng)網(wǎng)絡(luò)(Bayesian Neural Network)通過提供不確定來回答“Why Should I Trust You?”這個問題。實現(xiàn)上講,貝葉斯通過集成深度學習參數(shù)矩陣中參數(shù)的Uncertainty來駕馭數(shù)據(jù)的不確定性,提供給具體Task具有置信空間Confidence的推理結(jié)構(gòu)。一般的神經(jīng)網(wǎng)絡(luò)我們稱為Point estimation neural networks,通過MLE最大似然估計的方式建立訓練的目標函數(shù),為神經(jīng)網(wǎng)絡(luò)中的每個參數(shù)尋找一個optimal最優(yōu)值;而貝葉斯深度學習一種把概率分布作為權(quán)重的神經(jīng)網(wǎng)絡(luò),通過真實數(shù)據(jù)來優(yōu)化參數(shù)的概率分布,在訓練的過程中會使用MAP最大后驗概率集成眾多的模型參數(shù)的概率分布來擬合各種不確定的情況,提供處理數(shù)據(jù)不確定性的信息表達框架。
Transformer是一個符合Bayesian深度學習網(wǎng)絡(luò)的AI架構(gòu),尤其是其經(jīng)典的multi-head self-attention機制,該機制其實采用模型集成的思想來從工程角度落地貝葉斯深度學習網(wǎng)絡(luò);基于Prior先驗信息的正則化效果,multi-head機制所表達的信息多元化及不確定性能夠提供具有高置信度區(qū)間的回答 “Why Should I Trust You?”
貝葉斯Bayesian Transformer課程片段1:線性回歸及神經(jīng)網(wǎng)絡(luò)AI技術(shù)底層通用的貝葉斯數(shù)學原理及其有效性證明
貝葉斯Bayesian Transformer課程片段2:人工智能算法底層真相之MLE和MAP完整的數(shù)學推導過程概率、對數(shù)、求導等以及MLE和MAP關(guān)系詳解
貝葉斯Bayesian Transformer課程片段3:語言模型Language Model原理機制、數(shù)學推導及神經(jīng)網(wǎng)絡(luò)實現(xiàn)
貝葉斯Bayesian Transformer課程片段4:圖解Transformer精髓之架構(gòu)設(shè)計、數(shù)據(jù)在訓練、推理過程中的全生命周期、矩陣運算、多頭注意力機制可視化等
貝葉斯Bayesian Transformer課程片段5:什么叫Bayesian Transformer,Bayesian Transformer和傳統(tǒng)的Transformer的核心區(qū)別是什么?
貝葉斯Bayesian Transformer課程片段6:Bayesian Transformer這種新型思考模型在學術(shù)和工業(yè)界的意義是什么,為什么說Transformer中到處都是Bayesian的實現(xiàn)?
貝葉斯Bayesian Transformer課程片段7:貝葉斯Bayesian Transformer數(shù)學推導論證過程全生命周期詳解及底層神經(jīng)網(wǎng)絡(luò)物理機制剖析
為什么說Transformer的注意力機制是相對廉價的?注意力機制相對更對于RNN系列及CNN系列算法有何優(yōu)勢?
QA形式對自然語言處理中注意力機制(Attention)進行總結(jié),并對Transformer進行深入解析。
二、Transformer(Attention Is All You Need)詳解
1、Transformer的整體架構(gòu)是怎樣的?由哪些部分組成?
2、Transformer Encoder 與 Transformer Decoder 有哪些不同?
3、Encoder-Decoder attention 與self-attention mechanism有哪些不同?
4、multi-head self-attention mechanism具體的計算過程是怎樣的?
5、Transformer在GPT和Bert等詞向量預(yù)訓練模型中具體是怎么應(yīng)用的?有什么變化?
一、Attention機制剖析
1、為什么要引入Attention機制?
根據(jù)通用近似定理,前饋網(wǎng)絡(luò)和循環(huán)網(wǎng)絡(luò)都有很強的能力。但為什么還要引入注意力機制呢?
計算能力的限制:當要記住很多“信息“,模型就要變得更復雜,然而目前計算能力依然是限制神經(jīng)網(wǎng)絡(luò)發(fā)展的瓶頸。
優(yōu)化算法的限制:雖然局部連接、權(quán)重共享以及pooling等優(yōu)化操作可以讓神經(jīng)網(wǎng)絡(luò)變得簡單一些,有效緩解模型復雜度和表達能力之間的矛盾;但是,如循環(huán)神經(jīng)網(wǎng)絡(luò)中的長距離以來問題,信息“記憶”能力并不高。
可以借助人腦處理信息過載的方式,例如Attention機制可以提高神經(jīng)網(wǎng)絡(luò)處理信息的能力。
2、Attention機制有哪些?(怎么分類?)
當用神經(jīng)網(wǎng)絡(luò)來處理大量的輸入信息時,也可以借鑒人腦的注意力機制,只 選擇一些關(guān)鍵的信息輸入進行處理,來提高神經(jīng)網(wǎng)絡(luò)的效率。按照認知神經(jīng)學中的注意力,可以總體上分為兩類:
聚焦式(focus)注意力:自上而下的有意識的注意力,主動注意——是指有預(yù)定目的、依賴任務(wù)的、主動有意識地聚焦于某一對象的注意力;
顯著性(saliency-based)注意力:自下而上的有意識的注意力,被動注意——基于顯著性的注意力是由外界刺激驅(qū)動的注意,不需要主動干預(yù),也和任務(wù)無關(guān);可以將max-pooling和門控(gating)機制來近似地看作是自下而上的基于顯著性的注意力機制。
在人工神經(jīng)網(wǎng)絡(luò)中,注意力機制一般就特指聚焦式注意力。
3、Attention機制的計算流程是怎樣的?
Attention機制的實質(zhì):尋址(addressing)
Attention機制的實質(zhì)其實就是一個尋址(addressing)的過程,如上圖所示:給定一個和任務(wù)相關(guān)的查詢Query向量 q,通過計算與Key的注意力分布并附加在Value上,從而計算Attention Value,這個過程實際上是Attention機制緩解神經(jīng)網(wǎng)絡(luò)模型復雜度的體現(xiàn):不需要將所有的N個輸入信息都輸入到神經(jīng)網(wǎng)絡(luò)進行計算,只需要從X中選擇一些和任務(wù)相關(guān)的信息輸入給神經(jīng)網(wǎng)絡(luò)。
注意力機制可以分為三步:一是信息輸入;二是計算注意力分布α;三是根據(jù)注意力分布α 來計算輸入信息的加權(quán)平均。step1-信息輸入:用X = [x1, · · · , xN ]表示N 個輸入信息;
step2-注意力分布計算:令Key=Value=X,則可以給出注意力分布
我們將 稱之為注意力分布(概率分布), 為注意力打分機制,有幾種打分機制:
step3-信息加權(quán)平均:注意力分布 可以解釋為在上下文查詢q時,第i個信息受關(guān)注的程度,采用一種“軟性”的信息選擇機制對輸入信息X進行編碼為:
這種編碼方式為軟性注意力機制(soft Attention),軟性注意力機制有兩種:普通模式(Key=Value=X)和鍵值對模式(Key!=Value)。
軟性注意力機制(soft Attention)
4、Attention機制的變種有哪些?
與普通的Attention機制(上圖左)相比,Attention機制有哪些變種呢?
變種1-硬性注意力:之前提到的注意力是軟性注意力,其選擇的信息是所有輸入信息在注意力 分布下的期望。還有一種注意力是只關(guān)注到某一個位置上的信息,叫做硬性注意力(hard attention)。硬性注意力有兩種實現(xiàn)方式:(1)一種是選取最高概率的輸入信息;(2)另一種硬性注意力可以通過在注意力分布式上隨機采樣的方式實現(xiàn)。硬性注意力模型的缺點:
硬性注意力的一個缺點是基于最大采樣或隨機采樣的方式來選擇信息。因此最終的損失函數(shù)與注意力分布之間的函數(shù)關(guān)系不可導,因此無法使用在反向傳播算法進行訓練。為了使用反向傳播算法,一般使用軟性注意力來代替硬性注意力。硬性注意力需要通過強化學習來進行訓練?!渡窠?jīng)網(wǎng)絡(luò)與深度學習》變種2-鍵值對注意力:即上圖右邊的鍵值對模式,此時Key!=Value,注意力函數(shù)變?yōu)椋?span style="display:none">Cw8創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司
變種3-多頭注意力:多頭注意力(multi-head attention)是利用多個查詢Q = [q1, · · · , qM],來平行地計算從輸入信息中選取多個信息。每個注意力關(guān)注輸入信息的不同部分,然后再進行拼接:
5、一種強大的Attention機制:為什么自注意力模型(self-Attention model)在長距離序列中如此強大?
(1)卷積或循環(huán)神經(jīng)網(wǎng)絡(luò)難道不能處理長距離序列嗎?
當使用神經(jīng)網(wǎng)絡(luò)來處理一個變長的向量序列時,我們通??梢允褂镁矸e網(wǎng)絡(luò)或循環(huán)網(wǎng)絡(luò)進行編碼來得到一個相同長度的輸出向量序列,如圖所示:
基于卷積網(wǎng)絡(luò)和循環(huán)網(wǎng)絡(luò)的變長序列編碼
從上圖可以看出,無論卷積還是循環(huán)神經(jīng)網(wǎng)絡(luò)其實都是對變長序列的一種“局部編碼”:卷積神經(jīng)網(wǎng)絡(luò)顯然是基于N-gram的局部編碼;而對于循環(huán)神經(jīng)網(wǎng)絡(luò),由于梯度消失等問題也只能建立短距離依賴。
(2)要解決這種短距離依賴的“局部編碼”問題,從而對輸入序列建立長距離依賴關(guān)系,有哪些辦法呢?
如果要建立輸入序列之間的長距離依賴關(guān)系,可以使用以下兩種方法:一 種方法是增加網(wǎng)絡(luò)的層數(shù),通過一個深層網(wǎng)絡(luò)來獲取遠距離的信息交互,另一種方法是使用全連接網(wǎng)絡(luò)。 ——《神經(jīng)網(wǎng)絡(luò)與深度學習》全連接模型和自注意力模型:實線表示為可學習的權(quán)重,虛線表示動態(tài)生成的權(quán)重。由上圖可以看出,全連接網(wǎng)絡(luò)雖然是一種非常直接的建模遠距離依賴的模型, 但是無法處理變長的輸入序列。不同的輸入長度,其連接權(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)絡(luò),對每個position的向量分別進行相同的操作,包括兩個線性變換和一個ReLU激活輸出(輸入輸出層的維度都為512,中間層為2048):
每個sub-layer都使用了殘差網(wǎng)絡(luò):
(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)?4;
Self Attention:對每個head進行Self Attention,具體過程和第一部分介紹的一致;
Concat heads:對進行完Self Attention每個head進行拼接;
上述過程公式為:
5、Transformer在GPT和Bert等詞向量預(yù)訓練模型中具體是怎么應(yīng)用的?有什么變化?
GPT中訓練的是單向語言模型,其實就是直接應(yīng)用Transformer Decoder;
Bert中訓練的是雙向語言模型,應(yīng)用了Transformer Encoder部分,不過在Encoder基礎(chǔ)上還做了Masked操作;
BERT Transformer 使用雙向self-attention,而GPT Transformer 使用受限制的self-attention,其中每個token只能處理其左側(cè)的上下文。雙向 Transformer 通常被稱為“Transformer encoder”,而左側(cè)上下文被稱為“Transformer decoder”,decoder是不能獲要預(yù)測的信息的。
以上就是關(guān)于transformer詳解相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
設(shè)計博物館vi(設(shè)計博物館Vitra Design Museum)
SQL Error: select * from ***_ecms_news order by rand() desc limit 2