最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

68 Transformer【動(dòng)手學(xué)深度學(xué)習(xí)v2】

2023-08-28 20:12 作者:云在青天大水瓶  | 我要投稿

P1。

Transformer雖然也是基于Encoder-Decoder的架構(gòu)去處理一個(gè)序列對(比如一句英語和一句法語)。

但Transformer模型完全基于注意力機(jī)制,沒有任何RNN,這是與使用attention的seq2seq(用到了RNN)架構(gòu)不同的地方。

Transformer相當(dāng)于老瓶裝新酒,都是把Encoder最后一層的輸出作為Decoder 的輸入之一,進(jìn)行信息的傳遞。

(6) 第1個(gè)子層:深藍(lán)色的多頭(自)注意力機(jī)制,即Multi-head(-self-) Attention。

對于同一個(gè)k、v、q,有的注意力層能抽取長一點(diǎn)的信息,有的注意力層能抽取短一點(diǎn)的信息。所以為了抽取多個(gè)特征,需要多個(gè)注意力層,即多頭注意力(Multi-Head Attention)。

多頭注意力有點(diǎn)類似于CNN的多輸出通道(channel)。

05:33多頭注意力的具體做法:

①?KVQ這三大矩陣,分別經(jīng)過不同的Attention(可以是self-attention也可以不是):進(jìn)入每個(gè)Attention,都會(huì)分配好不同的權(quán)重矩陣作為FC(全連接層,一般會(huì)降維成更低的dimension),比如第i個(gè)Attention會(huì)分配Wi_q ,Wi_k,Wi_v,。

②?然后將所有的Attention的輸出,在特征維度(最后一個(gè)維度), concat起來,

③?最后經(jīng)過一個(gè)FC,使得輸出的維度能夠符合要求。

07:29 從數(shù)學(xué)角度解釋多頭注意力:

①?q,k,v向量的長度分別為d_q, d_k,d_v

②?第i個(gè)head的可學(xué)參數(shù)(權(quán)重矩陣為主):Wi_q ,Wi_k,Wi_v,shape分別為(p_q,d_q), (p_k,d_k), (p_v, d_v)。

③?第i個(gè)head的輸出h_i = f(Wi_q*q, Wi_k*k, Wi_v * v), 長度為p_v

④?輸出(concat之后,最后一個(gè)layer的FC)的科學(xué)參數(shù)W_o 的shape為(p_o, h*p_v),因?yàn)橛衕個(gè)head,所以h個(gè)head的輸出在特征維度concat之后長度為h*p_v

⑤?Muti-Head的輸出為W_o * [h_1,h_2,….h_h]^T,長度為p_o

⑥?注意:p_q,p_k,p_v一般<d_q,d_k,d_v,相當(dāng)于W對qkv做了降維。

說到多頭注意力,這里可以看到Decoder部分還額外多了一個(gè)Masked multi-head attention,即帶掩碼的多頭注意力機(jī)制。

2. Decoder

(1) Masked multi-head attention

在解碼器自注意力中,查詢、鍵和值都來自上一個(gè)解碼器層的輸出。但是,解碼器中的每個(gè)位置只能考慮該位置之前的所有位置,不能考慮該位置本身和之后的所有位置。這種掩蔽(masked)注意力保留了自回歸(auto-regressive)屬性,確保預(yù)測僅依賴于已生成的輸出詞元。

這種masked multi-head attention,與注意力評分函數(shù)文件attention-scoring-functions.ipynb中的 softmax operation是不同的——前者是不能數(shù)據(jù)透視用到未來函數(shù),后者是在softmax的計(jì)算中,對padding的0值不予考慮,只考慮valid_len以內(nèi)的元素進(jìn)行考慮。


回到Encoder。之前插入的Decoder有3個(gè)子層,Encoder有2個(gè)子層,相比Decoder,在2個(gè)子層之間少了1個(gè)Masked multi-head attention。

1.??Encoder

(7) 第2個(gè)子層:淺藍(lán)色的Positionwise FFN,即基于位置的前饋網(wǎng)絡(luò)。Positionwise FFN對序列中的所有位置的表示進(jìn)行變換時(shí),使用的是同一個(gè)多層感知機(jī)(MLP),相當(dāng)于一個(gè)FC(全連接層),這就是稱前饋網(wǎng)絡(luò)是基于位置的(positionwise)的原因。

① 將FFN的input的shape 從(b,n,d)變成(bn,d),即從3維改成2維。

b:多少個(gè)句子(樣本),n:句子有多少個(gè)字(time_step),d:就是這個(gè)字是多少維(embedding_size)。

大概因?yàn)椋現(xiàn)FN的輸入,linear函數(shù)只能寫 input_embed, 和output_embed這兩個(gè)參數(shù), 所以得切換成二維的形式輸入。

因?yàn)閚是可變的,那n跟batch合并,可以保證ffn的dimension d的一致性??梢岳斫鉃閒fn處理了 n x batch 這樣多個(gè)token。

②使用2個(gè)FC,將d的長度改成ffn_num_outputs

④?輸出的時(shí)候再把(bn,d)變回(b,n,d)

(8) 12:09。 Add&Norm 殘差塊&層歸一化。

①殘差塊Add:借鑒的是ResNet的思想,這樣Transformer塊的層數(shù)n就可以很深了

②層歸一化LayerNorm:與批規(guī)范化BatchNorm不同。LayerNorm在每個(gè)batch(句子,樣本)內(nèi)部,對n*d的元素做標(biāo)準(zhǔn)化;BatchNorm是在每個(gè)d(特征)內(nèi)部,對batch*n的元素做標(biāo)準(zhǔn)化。因?yàn)閚(序列長度,time_step)是變化的,所以在樣本內(nèi)部的LayerNorm比BatchNorm更加穩(wěn)定。

相當(dāng)于:有b句話,每句話有l(wèi)en(n)個(gè)詞,每個(gè)詞由d個(gè)特征表示,BN是對所有句子所有詞的某一特征做歸一化,LN是對某一句話的所有詞所有特征做歸一化。


2. Decoder

與1.Encoder相比,一開始多了一個(gè)子層——Masked multi-head attention。


3.??16:37。Encoder到Decoder的那條線——信息傳輸。

(1)Encoder最終的輸出為y_1,y_2,…,y_n這n個(gè)向量,作為context,即Decoder中帝i個(gè)Transformer塊中的Multi-head的key和value。

(2)這意味著,圖中左下角Encoder的Multi-head attention和右下角Decoder的Masked multi-head attention都是self-attention,即QKV都是X矩陣;但是右上角Decoder的Multi-head attention則不是self-attention,此時(shí)K和V來自Encoder的輸出context(源語言,source),而Q來自目標(biāo)序列(targets)。

(3) 這意味著Encoder和Decoder的Transformer塊的個(gè)數(shù)n(此n非彼n,彼n為len,即time_step)和輸出維度d都是一樣的。所以如果有n個(gè)Transformer塊,就有n條從Encoder到Decoder的信息傳輸線。


4.??預(yù)測。

與訓(xùn)練(model.train())可以并行不同,預(yù)測(model.eval())的時(shí)候,不能并行。因?yàn)樗陬A(yù)測第t+1個(gè)輸出時(shí),Decoder中輸入前t個(gè)預(yù)測值,如果是在self-attention中,那么前t個(gè)預(yù)測值作為key和value,第t個(gè)預(yù)測值還作為query。所以要按順序預(yù)測,類似RNN了,并行度不再是訓(xùn)練時(shí)的O(n),而是O(1)。

68 Transformer【動(dòng)手學(xué)深度學(xué)習(xí)v2】的評論 (共 條)

分享到微博請遵守國家法律
平谷区| 九台市| 镇江市| 庆阳市| 正定县| 罗平县| 玉田县| 康定县| 隆尧县| 汪清县| 德庆县| 陆丰市| 盐池县| 翁源县| 奇台县| 盈江县| 元阳县| 崇礼县| 江陵县| 会泽县| 内黄县| 渭源县| 固始县| 海林市| 太白县| 青田县| 澜沧| 永福县| 台北县| 郧西县| 特克斯县| 汝城县| 富宁县| 万宁市| 凤台县| 仪征市| 综艺| 南雄市| 邓州市| 盐津县| 清丰县|