<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>

          圖解Transformer:Attention Is All You Need

          共 3859字,需瀏覽 8分鐘

           ·

          2021-01-18 22:05

          ↑ 點擊藍字?關(guān)注極市平臺

          編譯丨deephub
          來源丨DeepHub IMBA
          編輯丨極市平臺

          極市導(dǎo)讀

          ?

          本文詳細介紹了Transformers的理論知識,幫助大家了解Transformers的實際工作原理。?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

          2017年谷歌大腦在《注意力是你所需要的一切》一文中解釋了Transformer 。本文是隨著自然語言處理領(lǐng)域的發(fā)展而來的。許多最先進的NLP模型都是以Transformer 為基礎(chǔ)建立的。

          Transformers是人們認為最復(fù)雜和無法理解的話題之一。在這篇文章中,我將給出關(guān)于Transformer理論知識,我希望在這篇文章的結(jié)尾,你將能夠了解關(guān)于Transformer實際工作原理。

          Attention Is All You Need

          Transformer基本上是一種機器學(xué)習(xí)模型,它是一種神經(jīng)網(wǎng)絡(luò)的體系結(jié)構(gòu),Transformer模型體系結(jié)構(gòu)的變體,如BERT, GPT-2, GPT3等,用于建立在Transformer模型之上的幾個任務(wù)。

          在論文Attention Is All You Need中,使用一個編碼器-解碼器的機器翻譯結(jié)構(gòu)對Transformer進行了介紹和解釋與。

          首先,讓我們從高級角度看一下我們的機器翻譯模型,該模型將輸入作為法語句子并將其轉(zhuǎn)換為英語。?然后一步一步,我們會更深入。

          翻譯模型由一個編碼器-解碼器轉(zhuǎn)換器塊組成,其中編碼器塊接受輸入,并且解碼器塊生成輸出翻譯語句。

          在論文中,研究人員在編碼塊中使用了6個編碼器,并且在解碼器塊中使用了相同數(shù)量的解碼器,其中所有編碼器和解碼器塊都相同。

          我們的輸入是一個文本句子,但是計算機只理解數(shù)字。?因此,首先,我們對輸入句子進行標(biāo)記化,然后將其轉(zhuǎn)換為標(biāo)記序列。?然后將序列中的每個標(biāo)記嵌入到大小為512(根據(jù)原始論文)的向量中,并將預(yù)訓(xùn)練的Word2Vec嵌入用于詞匯表。

          嵌入向量的序列將作為第一個編碼器的輸入。

          位置編碼:與RNN的其單詞令牌一次輸入一個到模型中不同,在注意力模型中,所有單詞都同時輸入,即所有單詞被并行輸入到編碼器模型中

          單詞的位置和順序是任何語言的基本組成部分。?它們根據(jù)定義的語法,從而定義句子的實際語義。?因此,我們需要做一些事情來維持序列的順序,因此,為了維持序列中單詞的順序,我們需要在嵌入矩陣中添加位置編碼。

          對于序列中的每個單詞,一個包含512個值的向量——每個值的值都在1到-1之間——被添加到單詞嵌入向量中,以保持序列的順序

          編碼器塊

          到目前為止,我們已經(jīng)討論了注意力機器翻譯模型的基本體系結(jié)構(gòu)。?現(xiàn)在,我們將更深入地研究每個編碼器和解碼器模塊,并了解這些模塊內(nèi)部發(fā)生了什么,從而使該模型如此精確。

          一個簡單的編碼器由兩部分組成:

          1. 自我注意力:這種自我注意來自原論文,而這實際上在Transformer中起著非常重要的作用。
          2. 前饋神經(jīng)網(wǎng)絡(luò):就像一個簡單的人工神經(jīng)網(wǎng)絡(luò)。?自我注意的輸出作為輸入傳遞到前饋網(wǎng)絡(luò)。

          現(xiàn)在,我們將詳細了解Transformer的最重要組件。

          Self-Attention(自注意力)

          自注意力用于將句子中的每個單詞與句子中的每個其他單詞相關(guān)聯(lián),以便每個單詞可以與其他每個單詞相關(guān)聯(lián),并且將為句子中的每個單詞產(chǎn)生512個維度的輸出,該輸出將關(guān)聯(lián)一句話中的每個單詞 。

          要計算自我注意力,首先,我們需要根據(jù)其嵌入向量為輸入句子中的每個單詞創(chuàng)建3個向量,分別稱為查詢,鍵和值。?這些向量通常較小。?在變換器模型中,這三個向量是64維向量。

          每個單詞的查詢、鍵和值向量計算如下:

          我們初始化3個權(quán)重矩陣(隨機),將其命名為大?。?12,64)的Wq,Wk和Wv,其值將在訓(xùn)練時更新。

          通過在各個權(quán)重矩陣和嵌入矢量之間進行矩陣乘法來計算查詢,鍵和值矢量。

          請注意,這些新向量的維數(shù)小于嵌入向量的維數(shù)。?它們的維數(shù)為64,而嵌入和編碼器輸入/輸出矢量的維數(shù)為512。

          您可能會想到與查詢,鍵和值有關(guān)的問題,以及這些向量實際上是什么,以及為什么要初始化它們。?到本文章結(jié)尾,您將獲得所有答案。

          我們獲得了序列中每個單詞的查詢,鍵和值,現(xiàn)在我們將使用查詢,鍵和值來計算每個單詞與句子中的每個其他單詞有多少關(guān)聯(lián)的分數(shù)。

          我們將通過在一個單詞中進行所有操作來進一步理解這一點,并且對句子中的所有單詞都將執(zhí)行相同的操作。

          計算自注意力的第一步是計算句子中所有單詞的分數(shù)。?我們通過單詞查詢(q1)與句子中每個單詞的關(guān)鍵字(k)之間的點積來計算得分(一個單詞與每個單詞在順序上有多少關(guān)系)。

          第二步是將分數(shù)除以8(關(guān)鍵向量維數(shù)的平方根)。?這導(dǎo)致具有更穩(wěn)定的梯度。

          第三步,計算得分的softmax,并根據(jù)softmax的定義將所有值加起來為1。

          這個softmax分數(shù)決定了每個單詞在這個位置的表達量。

          第四步和第五步是將softmax的值與每個單詞的值向量(v)相乘,相加得到一個64維的向量。

          z1 = 0.86*v1 + 012*v2 + 0.06*v3

          對單個單詞的這種自我關(guān)注已從句子中所有單詞中獲取了所有相關(guān)信息。

          我之前解釋的所有步驟都是為了單個單詞的自注意,將重復(fù)相同的步驟來計算句子中所有單詞的自注意。

          為了使計算更快,計算效率更高,所有計算都在矩陣中執(zhí)行。

          Z矩陣形狀=(句子長度,V的維數(shù))

          多頭注意力

          上面,我們討論了單頭注意,即,僅對一個權(quán)重矩陣(Wq,Wk和Wv)進行隨機初始化,以生成用于查詢,鍵和值的單個矩陣,而在轉(zhuǎn)換器模型中,則使用多頭注意 即,隨機初始化多個權(quán)重矩陣以生成多個查詢,鍵和值矩陣來代替一個權(quán)重矩陣(Wq,Wk和Wv)。?現(xiàn)在,對于多個查詢,鍵和值矩陣,上面相同的操作將重復(fù)多次以產(chǎn)生多個最終Z矩陣。

          Transformer模型中,使用8多頭注意。

          對于每個查詢,鍵和值矩陣,將獲得一個Z矩陣(注意力頭),最后總共將獲得8個注意頭。

          然后將所有的注意力矩陣連接起來,并與另一個權(quán)重矩陣相乘,得到最終的Z矩陣。

          現(xiàn)在將自我注意的輸出即Z矩陣反饋給前饋神經(jīng)網(wǎng)絡(luò)。

          前饋神經(jīng)網(wǎng)絡(luò)輸出形狀=(句子長度,512)

          前饋神經(jīng)網(wǎng)絡(luò)的輸出作為輸入傳遞給另一個編碼器。

          因此,所有的編碼器和解碼器都是相同的,它們的工作原理也是相同的。

          殘差連接

          我們需要提到的編碼器架構(gòu)中的一個細節(jié)是,每個編碼器中的每個子層(自我注意、前饋神經(jīng)網(wǎng)絡(luò))周圍都有一個殘差連接(這個殘差連接與Resnet殘差連接相同),然后是標(biāo)準化步驟。

          到目前為止,我們已經(jīng)了解了Transformer的注意機制是如何工作的。我希望你們能理解這些關(guān)注背后的含義。

          許多SOTA模型如BERT和BERT的變體都是建立在編碼器Transformer的基礎(chǔ)上,用于預(yù)測各種各樣的任務(wù)。

          解碼器

          最后,在將句子傳遞到編碼器轉(zhuǎn)換器時,我們將得到每個單詞的向量(形狀矩陣(句子長度512)),現(xiàn)在這個矩陣將作為解碼器端編碼器-解碼器塊的輸入。

          解碼器的輸入將向右移一個位置,并將單詞令牌的開頭用作第一個字符令牌,并將以嵌入方式編碼的單詞的目標(biāo)序列與位置編碼一起傳遞。

          解碼器的自注意力模塊會生成目標(biāo)序列的關(guān)注向量,以找出目標(biāo)序列中每個單詞與序列中其他單詞的相關(guān)程度。在解碼器中,自注意層只允許關(guān)注輸出序列中較早的位置。這是通過在自注意力計算中的softmax步驟之前屏蔽將來的位置(將它們設(shè)置為-inf)來完成的。這確保了在生成目標(biāo)序列的注意力向量時,我們可以使用輸入序列中的所有單詞,但只能使用目標(biāo)序列中的前一個單詞。

          解碼器具有一個如下所示的附加多頭注意塊,該塊從輸入序列和目標(biāo)序列中獲取嵌入信息,以確定輸入序列中的每個單詞與目標(biāo)序列中的每個單詞如何相關(guān)。

          第二個注意層的輸出被發(fā)送到FFN層,F(xiàn)FN層與編碼器塊的FFN層類似,功能類似。

          最后,我們有一個線性層,也就是另一個FFN和一個softmax函數(shù),來得到所有下一個單詞的概率分布,也就是下一個預(yù)測的單詞概率得分最高。

          此過程將執(zhí)行多次,直到為序列生成句子標(biāo)記的結(jié)尾。

          我希望你能對Transformer的工作原理有個直觀的了解。如果你有不明白的地方,那就再讀一遍以下的文章,我建議你試著把矩陣的形狀形象化。

          http://jalammar.github.io/illustrated-transformer/


          推薦閱讀




          添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳),即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群:每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~
          △長按添加極市小助手

          △長按關(guān)注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  成人毛片AV无码 | 国产标清视频 | 天天综合天天 | 成人黄色毛片网站 | 18禁www |