<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【關(guān)于Transformer】 那些的你不知道的事(中)

          共 6107字,需瀏覽 13分鐘

           ·

          2021-01-30 23:09

          ?作者:楊夕


          ?項(xiàng)目地址:https://github.com/km1994/nlp_paper_study


          論文鏈接:https://arxiv.org/pdf/1706.03762.pdf


          【注:手機(jī)閱讀可能圖片打不開?。?!】


          個(gè)人介紹:大佬們好,我叫楊夕,該項(xiàng)目主要是本人在研讀頂會(huì)論文和復(fù)現(xiàn)經(jīng)典論文過程中,所見、所思、所想、所聞,可能存在一些理解錯(cuò)誤,希望大佬們多多指正。


          ##?引言


          本博客?主要?是本人在學(xué)習(xí)?Transformer?時(shí)的**所遇、所思、所解**,通過以?**十六連彈**?的方式幫助大家更好的理解?該問題。


          ##?十六連彈


          1.?為什么要有?Transformer?

          2.?Transformer 作用是什么?

          3.?Transformer 整體結(jié)構(gòu)怎么樣?

          4.?Transformer-encoder 結(jié)構(gòu)怎么樣?

          5.?Transformer-decoder?結(jié)構(gòu)怎么樣?

          6.?傳統(tǒng)?attention?是什么?

          7.?self-attention?長怎么樣?

          8.?self-attention 如何解決長距離依賴問題?

          9.?self-attention 如何并行化?

          10.?multi-head?attention?怎么解?

          11.?為什么要?加入 position embedding ?

          12.?為什么要?加入?殘差模塊?

          13.?Layer normalization。Normalization 是什么?

          14.?什么是 Mask?

          15.?Transformer 存在問題?

          16.?Transformer?怎么?Coding?


          ##?問題解答


          ###?六、傳統(tǒng)?attention?是什么?


          -?注意力機(jī)制是什么呢?

          ??-?就是將精力集中于某一個(gè)點(diǎn)上

          ??-?舉個(gè)例子:

          ????-?你在超市買東西,突然一個(gè)美女從你身邊走過,這個(gè)時(shí)候你會(huì)做什么呢?

          ????-?沒錯(cuò),就是將視線【也就是注意力】集中于這個(gè)美女身上,而周圍環(huán)境怎么樣,你都不關(guān)注。

          -?思路

          ??-?輸入?給定 Target 中某個(gè) query;

          ??-?計(jì)算權(quán)值 Score:

          ????-?計(jì)算 query 和?各個(gè) Key 的相似度或相關(guān)性,得到每個(gè) Key 對應(yīng) value 的權(quán)值系數(shù);

          ??-?對?權(quán)值?Score?和?value?進(jìn)行加權(quán)求和

          -?核心:

          ??-?Attention?機(jī)制?是對?source?中各個(gè)元素?的?value?進(jìn)行加權(quán)求和,而?query?和?key?用于計(jì)算?對應(yīng)?value?的權(quán)值系數(shù)


          >?$L_x=||Source||$代表Source的長度


          -?概念:

          ??-?attention 的核心?就是從?大量信息中?篩選出少量的?重要信息;

          ??-?具體操作:每個(gè) value 的?權(quán)值系數(shù),代表?其?重要度;?

          ??

          -?具體流程介紹

          ??-?step 1:計(jì)算權(quán)值系數(shù)

          ????-?采用?不同的函數(shù)或計(jì)算方式,對?query?和?key?進(jìn)行計(jì)算,求出相似度或相關(guān)性

          ????-?采用的計(jì)算方法:

          ??????-?向量點(diǎn)積:


          ??????-?Cosine 相似度計(jì)算:

          ??????-?MLP 網(wǎng)絡(luò):

          ??-?step?2:?softmax?歸一化

          ????-?原因:

          ??????1.?score 值分布過散,將原始計(jì)算分值整理成所有元素權(quán)重之和為1 的概率分布;

          ??????2.?可以通過SoftMax的內(nèi)在機(jī)制更加突出重要元素的權(quán)重;

          ????-?公式介紹


          ??-?step?3:?加權(quán)求和

          ????-?公式介紹:

          ??????-?計(jì)算結(jié)果?$a_i$?即為?$value_i$?對應(yīng)的權(quán)重系數(shù),然后進(jìn)行加權(quán)求和即可得到Attention數(shù)值


          -?存在問題

          ??-?忽略了?源端或目標(biāo)端?詞與詞間?的依賴關(guān)系【以上面栗子為例,就是把注意力集中于美女身上,而沒看自己周圍環(huán)境,結(jié)果可能就撲街了!】


          ###?七、self-attention?長怎么樣?


          -?動(dòng)機(jī)

          ??-? CNN 所存在的長距離依賴問題;

          ??-? RNN 所存在的無法并行化問題【雖然能夠在一定長度上緩解?長距離依賴問題】;

          -?傳統(tǒng)?Attention

          ??-?方法:基于源端和目標(biāo)端的隱向量計(jì)算Attention,

          ??-?結(jié)果:源端每個(gè)詞與目標(biāo)端每個(gè)詞間的依賴關(guān)系?【源端->目標(biāo)端】

          ??-?問題:忽略了?遠(yuǎn)端或目標(biāo)端?詞與詞間?的依賴關(guān)系

          -?核心思想:self-attention的結(jié)構(gòu)在計(jì)算每個(gè)token時(shí),總是會(huì)考慮整個(gè)序列其他token的表達(dá);

          ??-?舉例:“我愛中國”這個(gè)序列,在計(jì)算"我"這個(gè)詞的時(shí)候,不但會(huì)考慮詞本身的embedding,也同時(shí)會(huì)考慮其他詞對這個(gè)詞的影響

          -?目的:學(xué)習(xí)句子內(nèi)部的詞依賴關(guān)系,捕獲句子的內(nèi)部結(jié)構(gòu)。


          -?步驟

          ??-?embedding層:

          ????-?目的:將詞轉(zhuǎn)化成embedding向量;

          ??-?Q,K,V 向量計(jì)算:

          ????-?根據(jù) embedding 和權(quán)重矩陣,得到Q,K,V;

          ??????-?Q:查詢向量,目標(biāo)字作為 Query;

          ??????-?K:鍵向量,其上下文的各個(gè)字作為 Key;

          ??????-?V:值向量,上下文各個(gè)字的 Value;

          ??-?權(quán)重 score 計(jì)算:

          ????-?查詢向量?query?點(diǎn)乘?key;

          ????-?目的:計(jì)算其他詞對這個(gè)詞的重要性,也就是權(quán)值;

          ??-?scale 操作:

          ????-?乘以?;

          ????-?目的:起到調(diào)節(jié)作用,使得內(nèi)積不至于太大。實(shí)際上是Q,K,V的最后一個(gè)維度,當(dāng)?$d_k$?越大,?就越大,可能會(huì)將 Softmax 函數(shù)推入梯度極小的區(qū)域;

          ??-?Softmax 歸一化:

          ????-?經(jīng)過 Softmax 歸一化;

          ??-?Attention 的輸出計(jì)算:

          ????-?權(quán)值?score?和各個(gè)上下文字的?V?向量?的加權(quán)求和

          ????-?目的:把上下文各個(gè)字的 V 融入目標(biāo)字的原始 V 中

          -?舉例

          ??-?答案就是文章中的Q,K,V,這三個(gè)向量都可以表示"我"這個(gè)詞,但每個(gè)向量的作用并不一樣,Q?代表?query,當(dāng)計(jì)算"我"這個(gè)詞時(shí),它就能代表"我"去和其他詞的?K?進(jìn)行點(diǎn)乘計(jì)算其他詞對這個(gè)詞的重要性,所以此時(shí)其他詞(包括自己)使用?K?也就是?key?代表自己,當(dāng)計(jì)算完點(diǎn)乘后,我們只是得到了每個(gè)詞對“我”這個(gè)詞的權(quán)重,需要再乘以一個(gè)其他詞(包括自己)的向量,也就是V(value),才完成"我"這個(gè)詞的計(jì)算,同時(shí)也是完成了用其他詞來表征"我"的一個(gè)過程


          -?優(yōu)點(diǎn)

          ??-?捕獲源端和目標(biāo)端詞與詞間的依賴關(guān)系

          ??-?捕獲源端或目標(biāo)端自身詞與詞間的依賴關(guān)系


          ###?八、self-attention 如何解決長距離依賴問題?


          -?引言:

          ??-?在上一個(gè)問題中,我們提到 CNN 和 RNN 在處理長序列時(shí),都存在?長距離依賴問題,那么你是否會(huì)有這樣?幾個(gè)問題:

          ????-?長距離依賴問題?是什么呢?

          ????-?為什么 CNN 和 RNN 無法解決長距離依賴問題?

          ????-?之前提出過哪些解決方法?

          ????-?self-attention?是如何?解決?長距離依賴問題的呢?


          下面,我們將會(huì)圍繞著幾個(gè)問題,進(jìn)行一一解答。


          -?長距離依賴問題?是什么呢?

          ??-?介紹:對于序列問題,第 t 時(shí)刻?的?輸出?$y_t$?依賴于?t 之前的輸入,也就是?說?依賴于?,當(dāng)間隔?k?逐漸增大時(shí),$x_{t-k}$?的信息將難以被?$y_t$?所學(xué)習(xí)到,也就是說,很難建立?這種?長距離依賴關(guān)系,這個(gè)也就是?長距離依賴問題(Long-Term Dependencies Problem)。


          -?為什么 CNN 和 RNN 無法解決長距離依賴問題?

          ??-?CNN:

          ????-?捕獲信息的方式:

          ??????-?CNN?主要采用?卷積核?的?方式捕獲?句子內(nèi)的局部信息,你可以把他理解為?**基于?n-gram?的局部編碼方式**捕獲局部信息

          ????-?問題:

          ??????-?因?yàn)槭?n-gram?的局部編碼方式,那么當(dāng)?$k$?距離?大于?$n$?時(shí),那么?$y_t$?將難以學(xué)習(xí)?$x_{t-k}$?信息;

          ????-?舉例:

          ??????-?其實(shí) n-gram 類似于?人的?視覺范圍,人的視覺范圍?在每一時(shí)刻?只能?捕獲?一定?范圍內(nèi)?的信息,比如,你在看前面的時(shí)候,你是不可能注意到背后發(fā)生了什么,除非你轉(zhuǎn)過身往后看。

          ??-?RNN:

          ????-?捕獲信息的方式:

          ??????-?RNN?主要?通過?循環(huán)?的方式學(xué)習(xí)(記憶)?之前的信息$x_{t}$;

          ????-?問題:

          ??????-?但是隨著時(shí)間?$t$?的推移,你會(huì)出現(xiàn)**梯度消失或梯度爆炸**問題,這種問題使你只能建立短距離依賴信息。

          ????-?舉例:

          ??????-?RNN 的學(xué)習(xí)模式好比于?人類?的記憶力,人類可能會(huì)對?短距離內(nèi)發(fā)生的?事情特別清楚,但是隨著時(shí)間的推移,人類開始?會(huì)對?好久之前所發(fā)生的事情變得印象模糊,比如,你對小時(shí)候發(fā)生的事情,印象模糊一樣。

          ????-?解決方法:

          ??????-?針對該問題,后期也提出了很多 RNN 變體,比如 LSTM、 GRU,這些變體?通過引入?門控的機(jī)制?來?有選擇性?的記憶?一些?重要的信息,但是這種方法?也只能在?一定程度上緩解?長距離依賴問題,但是并不能?從根本上解決問題。


          -?之前提出過哪些解決方法?

          ??-?引言:

          ????-?那么?之前?主要采用?什么方法?解決問題呢?

          ??-?解決方法:

          ????-?增加網(wǎng)絡(luò)的層數(shù)

          ??????-?通過一個(gè)深層網(wǎng)絡(luò)來獲取遠(yuǎn)距離的信息交互

          ????-?使用全連接網(wǎng)絡(luò)

          ??????-?通過全連接的方法對?長距離?建模;

          ??????-?問題:

          ????????-?無法處理變長的輸入序列;

          ????????-?不同的輸入長度,其連接權(quán)重的大小也是不同的;


          -?self-attention?是如何?解決?長距離依賴問題的呢?

          ??-?解決方式:

          ????-?利用注意力機(jī)制來“動(dòng)態(tài)”地生成不同連接的權(quán)重,從而處理變長的信息序列

          ??-?具體介紹:

          ????-?對于?當(dāng)前query,你需要?與?句子中?所有?key?進(jìn)行點(diǎn)乘后再?Softmax?,以獲得?句子中?所有?key?對于?當(dāng)前query?的?score(可以理解為?貢獻(xiàn)度),然后與?所有詞?的?value?向量進(jìn)行加權(quán)融合之后,就能使?當(dāng)前?$y_t$?學(xué)習(xí)到句子中?其他詞$x_{t-k}$的信息;


          ###?九、self-attention 如何并行化?


          -?引言:

          ??-?在上一個(gè)問題中,我們主要討論了 CNN 和 RNN 在處理長序列時(shí),都存在?長距離依賴問題,以及 Transformer 是?如何解決?長距離依賴問題,但是對于 RNN ,還存在另外一個(gè)問題:

          ????-?無法并行化問題

          ??-?那么,Transformer 是如何進(jìn)行并行化的呢?

          -?Transformer 如何進(jìn)行并行化?

          ??-?核心:self-attention

          ??-?為什么 RNN 不能并行化:

          ????-?原因:RNN 在?計(jì)算?$x_i$?的時(shí)候,需要考慮到?$x_1?~?x_{i-1}$?的?信息,使得?RNN?只能?從?$x_1$?計(jì)算到?$x_i$;

          ??-?思路:

          ????-?在 self-attention 能夠?并行的?計(jì)算?句子中不同?的 query,因?yàn)槊總€(gè) query 之間并不存在?先后依賴關(guān)系,也使得 transformer 能夠并行化;


          ###?十、multi-head?attention?怎么解?


          -?思路:

          ??-?相當(dāng)于?$h$?個(gè)?不同的?self-attention?的集成

          ??-?就是把self-attention做 n 次,取決于 head 的個(gè)數(shù);論文里面是做了8次。

          -?步驟:

          ??-?step?1?:?初始化?N?組?$Q,K,V$矩陣(論文為 8組);

          ??

          ??-?step?2?:?每組?分別?進(jìn)行?self-attention;

          ??-?step 3:

          ????-?問題:多個(gè) self-attention 會(huì)得到?多個(gè)?矩陣,但是前饋神經(jīng)網(wǎng)絡(luò)沒法輸入8個(gè)矩陣;

          ????-?目標(biāo):把8個(gè)矩陣降為1個(gè)

          ????-?步驟:

          ??????-?每次self-attention都會(huì)得到一個(gè)?Z?矩陣,把每個(gè)?Z?矩陣拼接起來,

          ??????-?再乘以一個(gè)Wo矩陣,

          ??????-?得到一個(gè)最終的矩陣,即 multi-head Attention 的結(jié)果;



          最后,讓我們來看一下完整的流程:

          換一種表現(xiàn)方式:




          ##?參考資料


          1.?[Transformer理論源碼細(xì)節(jié)詳解](https://zhuanlan.zhihu.com/p/106867810)

          2.?[論文筆記:Attention is all you need(Transformer)](https://zhuanlan.zhihu.com/p/51089880)

          3.?[深度學(xué)習(xí)-論文閱讀-Transformer-20191117](https://zhuanlan.zhihu.com/p/92234185)

          4.?[Transform詳解(超詳細(xì))?Attention?is?all?you?need論文](https://zhuanlan.zhihu.com/p/63191028)

          5.?[目前主流的attention方法都有哪些?](https://www.zhihu.com/question/68482809/answer/597944559)

          6.?[transformer三部曲](https://zhuanlan.zhihu.com/p/85612521)

          7.?[Character-Level?Language?Modeling?with?Deeper?Self-Attention](https://aaai.org/ojs/index.php/AAAI/article/view/4182)

          8.?[Transformer-XL:?Unleashing?the?Potential?of?Attention?Models](https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html)

          9.?[The?Importance?of?Being?Recurrent?for?Modeling?Hierarchical?Structure](https://arxiv.org/abs/1803.03585)

          10.?[Linformer](https://arxiv.org/abs/2006.04768)






          瀏覽 111
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  摸胸上床做爱污污视频网站 | 亚洲A片一区二区三区电影网 | 国产精品18久久久 | AV大香蕉伊人 | 回本Aa一级黄色视屏 |