<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】 那些的你不知道的事 (下)

          共 6113字,需瀏覽 13分鐘

           ·

          2021-01-30 23:09

          ?作者:楊夕


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


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


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


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


          ##?引言


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


          ##?十六連彈


          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?長(zhǎng)怎么樣?

          8.?self-attention 如何解決長(zhǎng)距離依賴問(wèn)題?

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

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

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

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

          13.?Layer normalization。Normalization 是什么?

          14.?什么是 Mask?

          15.?Transformer 存在問(wèn)題?

          16.?Transformer?怎么?Coding?


          ##?問(wèn)題解答


          ###?十一、為什么要?加入 position embedding ?


          -?問(wèn)題:

          ??-?介紹:缺乏?一種?表示?輸入序列中?單詞順序?的方法

          ??-?說(shuō)明:因?yàn)槟P筒话≧ecurrence/Convolution,因此是無(wú)法捕捉到序列順序信息的,例如將K、V按行進(jìn)行打亂,那么Attention之后的結(jié)果是一樣的。但是序列信息非常重要,代表著全局的結(jié)構(gòu),因此必須將序列的分詞相對(duì)或者絕對(duì)position信息利用起來(lái)

          -?目的:加入詞序信息,使 Attention 能夠分辨出不同位置的詞

          -?思路:

          ??-?在?encoder?層和?decoder?層的輸入添加了一個(gè)額外的向量Positional?Encoding,維度和embedding的維度一樣,讓模型學(xué)習(xí)到這個(gè)值

          -?位置向量的作用:

          ??-?決定當(dāng)前詞的位置;

          ??-?計(jì)算在一個(gè)句子中不同的詞之間的距離

          -?步驟:

          ??-?將每個(gè)位置編號(hào),

          ??-?然后每個(gè)編號(hào)對(duì)應(yīng)一個(gè)向量,

          ??-?通過(guò)將位置向量和詞向量相加,就給每個(gè)詞都引入了一定的位置信息。

          -?論文的位置編碼是使用三角函數(shù)去計(jì)算的。好處:

          ??-?值域只有[-1,1]

          ??-?容易計(jì)算相對(duì)位置。




          ?注:

          ? ?$pos$?表示當(dāng)前詞在句子中的位置

          ? ?$i$?表示向量中每個(gè)值?的?index

          ? ?在偶數(shù)位置:使用?正弦編碼?$sin()$;

          ? ?在奇數(shù)位置:使用?余弦編碼?$cos()$;


          ###?十二、為什么要?加入?殘差模塊?


          -?動(dòng)機(jī):因?yàn)?transformer 堆疊了?很多層,容易?梯度消失或者梯度爆炸


          ###?十三、Layer normalization。Normalization 是什么?


          -?動(dòng)機(jī):因?yàn)?transformer 堆疊了?很多層,容易?梯度消失或者梯度爆炸;

          -?原因:

          ??-?數(shù)據(jù)經(jīng)過(guò)該網(wǎng)絡(luò)層的作用后,不再是歸一化,偏差會(huì)越來(lái)越大,所以需要將?數(shù)據(jù)?重新?做歸一化處理;

          -?目的:

          ??-?在數(shù)據(jù)送入激活函數(shù)之前進(jìn)行normalization(歸一化)之前,需要將輸入的信息利用?normalization?轉(zhuǎn)化成均值為0方差為1的數(shù)據(jù),避免因輸入數(shù)據(jù)落在激活函數(shù)的飽和區(qū)而出現(xiàn)?梯度消失或者梯度爆炸?問(wèn)題

          -?介紹:

          ??-?歸一化的一種方式

          ??-?對(duì)每一個(gè)樣本介紹均值和方差【這個(gè)與?BN?有所不同,因?yàn)樗窃?批方向上?計(jì)算均值和方差】

          -?公式

          ??

          >?BN?計(jì)算公式


          >?LN?計(jì)算公式



          ###?十四、什么是 Mask?


          -?介紹:掩蓋某些值的信息,讓模型信息不到該信息;

          -?類(lèi)別:padding mask and sequence mask

          ??-?padding?mask

          ????-?作用域:每一個(gè) scaled dot-product attention 中

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

          ??????-?輸入句子的長(zhǎng)度不一問(wèn)題

          ????-?方法:

          ??????-?短句子:后面?采用?0?填充

          ??????-?長(zhǎng)句子:只截取?左邊?部分內(nèi)容,其他的丟棄

          ????-?原因:

          ??????-?對(duì)于?填充?的位置,其所包含的信息量?對(duì)于?模型學(xué)習(xí)?作用不大,所以 self-attention 應(yīng)該?拋棄對(duì)這些位置?進(jìn)行學(xué)習(xí);

          ????-?做法:

          ??????-?在這些位置上加上?一個(gè)?非常大?的負(fù)數(shù)(負(fù)無(wú)窮),使?該位置的值經(jīng)過(guò) Softmax 后,值近似?0,利用 padding mask 標(biāo)記哪些值需要做處理;

          ??-?sequence?mask

          ????-?作用域:只作用于 decoder 的 self-attention 中

          ????-?動(dòng)機(jī):不可預(yù)測(cè)性;

          ????-?目標(biāo):sequence mask 是為了使得 decoder 不能看見(jiàn)未來(lái)的信息。也就是對(duì)于一個(gè)序列,在 time_step 為 t 的時(shí)刻,我們的解碼輸出應(yīng)該只能依賴于 t 時(shí)刻之前的輸出,而不能依賴 t 之后的輸出。因此我們需要想一個(gè)辦法,把 t 之后的信息給隱藏起來(lái)。

          ????-?做法:

          ??????-?產(chǎn)生一個(gè)下三角矩陣,上三角的值全為0,下三角全是 1。把這個(gè)矩陣作用在每一個(gè)序列上,就可以達(dá)到我們的目的


          >?sequence?mask?公式


          >?注意力矩陣,?每個(gè)元素?$a_{ij}$?代表??第?i?個(gè)詞和第?j?個(gè)詞的內(nèi)積相似度


          >?下三角矩陣,上三角的值全為0,下三角全是?1


          注:


          ?在?decoder?的?scaled?dot-product?attention?中,里面的?attn_mask?=?padding?mask?+?sequence?mask


          ?在?encoder?的?scaled?dot-product?attention?中,里面的?attn_mask?=?padding?mask



          ###?十五、Transformer 存在問(wèn)題?


          -?引言

          ??-?居然?Transformer?怎么厲害,那么?是否也存在不足呢?

          ??-?答案:?有的


          -?問(wèn)題一:不能很好的處理超長(zhǎng)輸入問(wèn)題?

          ??-?介紹:Transformer 固定了句子長(zhǎng)度;

          ??-?舉例:

          ????-?例如?在 Bert 里面,輸入句子的默認(rèn)長(zhǎng)度?為 512;

          ??-?對(duì)于長(zhǎng)度長(zhǎng)短問(wèn)題,做了以下處理:

          ????-?短于 512:填充句子方式;

          ????-?長(zhǎng)于 512:

          ??????-?處理方式一:截?cái)嗑渥臃绞剑═ransformer 處理方式);


          ??????-?處理方式二:將句子劃分為?多個(gè) seg ([Vanilla?Transformer](https://aaai.org/ojs/index.php/AAAI/article/view/4182)?處理方式);

          ????????-?思路:

          ??????????-?將文本劃分為多個(gè)segments;

          ??????????-?訓(xùn)練的時(shí)候,對(duì)每個(gè)segment單獨(dú)處理;

          ????????-?問(wèn)題:

          ??????????-?因?yàn)?segments 之間獨(dú)立訓(xùn)練,所以不同的token之間,最長(zhǎng)的依賴關(guān)系,就取決于segment的長(zhǎng)度?(如圖(a));

          ??????????-?出于效率的考慮,在劃分segments的時(shí)候,不考慮句子的自然邊界,而是根據(jù)固定的長(zhǎng)度來(lái)劃分序列,導(dǎo)致分割出來(lái)的segments在語(yǔ)義上是不完整的?(如圖(a));

          ??????????-?在預(yù)測(cè)的時(shí)候,會(huì)對(duì)固定長(zhǎng)度的 segment 做計(jì)算,一般取最后一個(gè)位置的隱向量作為輸出。為了充分利用上下文關(guān)系,在每做完一次預(yù)測(cè)之后,就對(duì)整個(gè)序列向右移動(dòng)一個(gè)位置,再做一次計(jì)算,這導(dǎo)致計(jì)算效率非常低?(如圖(b));



          ??????-?處理方式三:Segment-Level Recurrenc (?[Transformer-XL](https://aaai.org/ojs/index.php/AAAI/article/view/4182)?處理方式);

          ????????-?思路:

          ??????????-?在對(duì)當(dāng)前segment進(jìn)行處理的時(shí)候,**緩存**并利用上一個(gè)segment中所有l(wèi)ayer的隱向量序列;

          ??????????-?上一個(gè)segment的所有隱向量序列只參與前向計(jì)算,不再進(jìn)行反向傳播;

          ??



          -?問(wèn)題二:方向信息以及相對(duì)位置?的?缺失?問(wèn)題?

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

          ????-?方向信息和位置信息的缺失,導(dǎo)致 Transformer 在 NLP 中表現(xiàn)性能較差,例如在?命名實(shí)體識(shí)別任務(wù)中;

          ??????-?舉例:

          ????????-?如下圖,“Inc”單詞之前的詞很有可能就是機(jī)構(gòu)組織(ORG),“in”單詞之后的詞,很有可能是時(shí)間地點(diǎn)(TIME);并且一個(gè)實(shí)體應(yīng)該是連續(xù)的單詞組成,標(biāo)紅的“Louis Vuitton”不會(huì)和標(biāo)藍(lán)的“Inc”組成一個(gè)實(shí)體。但是原始的Transformer無(wú)法捕獲這些信息。



          ??-?解決方法:

          ????-?可以查看?[TENER:?Adapting?Transformer?Encoder?for?Name? Entity?Recognition](https://arxiv.org/pdf/1911.04474.pdf)?【論文后期會(huì)做總結(jié)】


          -?問(wèn)題三:缺少Recurrent Inductive Bias

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

          ????-?學(xué)習(xí)算法中Inductive?Bias可以用來(lái)預(yù)測(cè)從未遇到的輸入的輸出(參考[10])。對(duì)于很多序列建模任務(wù)(如需要對(duì)輸入的層次結(jié)構(gòu)進(jìn)行建模時(shí),或者在訓(xùn)練和推理期間輸入長(zhǎng)度的分布不同時(shí)),Recurrent Inductive Bias至關(guān)重要【可以看論文[The?Importance?of?Being?Recurrent?for? Modeling?Hierarchical? Structure](https://arxiv.org/abs/1803.03585)】


          -?問(wèn)題四:Transformer是非圖靈完備的:?非圖靈完備通俗的理解,就是無(wú)法解決所有的問(wèn)題

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

          ????-??在Transformer中,單層中sequential?operation?( context?two? symbols需要的操作數(shù)) 是$O(1)$?time,獨(dú)立于輸入序列的長(zhǎng)度。那么總的sequenctial operation僅由層數(shù)$T$決定。這意味著transformer不能在計(jì)算上通用,即無(wú)法處理某些輸入。如:輸入是一個(gè)需要**對(duì)每個(gè)輸入元素進(jìn)行順序處理**的函數(shù),在這種情況下,對(duì)于任意給定的深度$T$的transformer,都可以構(gòu)造一個(gè)長(zhǎng)度為?$N>T$;


          -?問(wèn)題五:transformer缺少conditional computation

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

          ????-? transformer在encoder的過(guò)程中,所有輸入元素都有相同的計(jì)算量,比如對(duì)于“I arrived at the bank after crossing the river", 和"river"相比,需要更多的背景知識(shí)來(lái)推斷單詞"bank"的含義,然而transformer在編碼這個(gè)句子的時(shí)候,無(wú)條件對(duì)于每個(gè)單詞應(yīng)用相同的計(jì)算量,這樣的過(guò)程顯然是低效的。


          -?問(wèn)題六:transformer 時(shí)間復(fù)雜度?和?空間復(fù)雜度?過(guò)大問(wèn)題

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

          ????-?Transformer?中用到的自注意力與長(zhǎng)度n呈現(xiàn)出$O(n^2)$的時(shí)間和空間復(fù)雜度

          ??-?解決方法:

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


          ###?十六、Transformer?怎么?Coding?


          -?最后的最后,送上?whalePaper?成員?逸神?的?【[Transformer?理論源碼細(xì)節(jié)詳解](https://zhuanlan.zhihu.com/p/106867810)】;


          -?理論+實(shí)踐,干活永不累!


          ##?參考資料


          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)




          瀏覽 170
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  五月丁香操逼网 | 麻豆人妻精品无码区 | 男女练啪在线观看视频 | 午夜福利资源 | 97婷婷五月天 |