日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Transformer、BERT学习笔记

發(fā)布時(shí)間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Transformer、BERT学习笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • Transformer
    • 引言
    • 解析
      • 整體結(jié)構(gòu)
      • 注意力機(jī)制
      • 自注意力
      • 多頭注意力
      • Positional Encoding
    • 參考
  • BERT
    • 引言
    • 解析
    • 參考

關(guān)于Transformer和BERT,網(wǎng)上已經(jīng)有了很多的講解。本博客是筆者閱讀論文后,并參考了一些其他博主的思路,結(jié)合筆者本人的理解而寫(xiě)。文章的最后會(huì)列出一些參考博客(知乎),如有遺漏,煩請(qǐng)?zhí)嵝选?br />

Transformer

引言

Attention Is All You Need
文章鏈接
本文出自NIPS2017,一作是Ashish Vaswani,來(lái)自Google Brain。Transformer最開(kāi)始是基于機(jī)器翻譯任務(wù)提出的,打破了傳統(tǒng)的RNN框架,完全依賴(lài)于注意力機(jī)制。能夠很容易的并行訓(xùn)練,僅在8個(gè)P100上訓(xùn)練了12個(gè)小時(shí),就實(shí)現(xiàn)了當(dāng)時(shí)的新SOTA。

解析

整體結(jié)構(gòu)

Transformer的結(jié)構(gòu)如下圖所示。還是機(jī)器翻譯領(lǐng)域傳統(tǒng)的Encoder-Decoder架構(gòu)。

Encoder部分使用N=6N=6N=6個(gè)Layer組成,每個(gè)Layer又包含兩個(gè)sub-layer,分別是:多頭注意力層(Multi-Head Attention)、前向傳播層(Feed Forward)。每個(gè)sub-layer后面都添加了一個(gè)layer normalization層(出自文章),且使用了類(lèi)似ResNet的跳躍連接。綜上,對(duì)于輸入為xxx的sub-layer,它的輸出是:LayerNorm(x+Sublayer(x))\text{LayerNorm}(x+\text{Sublayer}(x))LayerNorm(x+Sublayer(x))。

Decoder部分也是使用N=6N=6N=6個(gè)Layer組成,每個(gè)Layer包含三個(gè)sub-layer,分別是:帶有掩碼的多頭注意力層(Masked Multi-Head Attention)、多頭注意力層(Multi-Head Attention)、前向傳播層(Feed Forward)。


注意力機(jī)制

首先介紹基于點(diǎn)積的注意力(Scaled Dot-Product Attention),再引申出本文中用到的自注意力(Self Attention)和多頭注意力(Multi-Head Attention)。

基于點(diǎn)積的注意力的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,具有三個(gè)輸入:QQQ、KKKVVV,分別代表QueryQueryQueryKeyKeyKeyValueValueValue,這三個(gè)變量的含義下面會(huì)詳細(xì)介紹。

下面,以機(jī)器翻譯為例子,詳細(xì)介紹注意力機(jī)制的計(jì)算過(guò)程。假設(shè),此時(shí)模型的輸入I="word1word2word3"I="word_1 \space word_2 \space word_3"I="word1??word2??word3?",使用NNN表示單詞個(gè)數(shù),例子中N=3N=3N=3。

  • Embedding
    對(duì)輸入的句子III進(jìn)行word embedding后,可以得到句子的特征EEE,是一個(gè)N×DimEN \times Dim^EN×DimE的矩陣。按照下標(biāo)進(jìn)行索引即可得到每個(gè)單詞的特征,這里使用Ei(1≤i≤N)E_i(1 \le i \le N)Ei?(1iN)表示單詞wordiword_iwordi?的特征,每個(gè)EiE_iEi?的大小均為1×DimE1 \times Dim^E1×DimE。
  • 獲取Q,K,VQ, K, VQ,K,V
    使用三個(gè)不同的權(quán)重矩陣WQ,WK,WVW^Q, W^K, W^VWQ,WK,WV,分別乘以EEE即可得到Q,K,VQ, K, VQ,K,V,大小分別為NQ×DimQ,NK×DimK,NV×DimVN^Q \times Dim^Q, \space N^K \times Dim^K, \space N^V \times Dim^VNQ×DimQ,?NK×DimK,?NV×DimV。
    Q=EWQ,K=EWK,V=EWVQ = E W^Q, \space K = E W^K, \space V = E W^VQ=EWQ,?K=EWK,?V=EWV
    直觀(guān)上來(lái)看,NQ=NK=NV=NN^Q=N^K=N^V=NNQ=NK=NV=N(實(shí)際上不一定,后文會(huì)說(shuō)),下面以這種假設(shè)為前提,看一下如何計(jì)算Attention。
  • 計(jì)算Attention
    對(duì)于單詞wordiword_iwordi?來(lái)說(shuō),首先,通過(guò)索引得到其對(duì)應(yīng)的查詢(xún)向量QiQ_iQi?。通過(guò)矩陣乘法操作Si=QiKTS_i=Q_i K^TSi?=Qi?KT可以得到一個(gè)大小為1×N1 \times N1×N的向量SiS_iSi?,而Si[j]S_i[j]Si?[j]即為wordiword_iwordi?wordjword_jwordj?的Score。然后,使用softmax\text{softmax}softmax將Score進(jìn)行歸一化,得到Attention Weight WiW_iWi?,大小仍是1×N1 \times N1×N,含義仍是Wi[j]W_i[j]Wi?[j]表示wordiword_iwordi?wordjword_jwordj?的相關(guān)性。,整個(gè)過(guò)程可以概括為(初始時(shí)QiQ_iQi? 的大小為1×DimQ1 \times Dim^Q1×DimQ):
    1×DimQ×KT→1×Nsoftmax→1×N×V→1×DimV1 \times Dim^Q \space \space \space \underrightarrow{\times K^T} \space \space \space 1 \times N \space \space \space \underrightarrow{\text{softmax}} \space \space \space 1 \times N \space \space \space \underrightarrow{\times V} \space \space \space 1 \times Dim^V1×DimQ???×KT????1×N???softmax????1×N???×V????1×DimV
    不難發(fā)現(xiàn),對(duì)于每一個(gè)QiQ_iQi?,分別計(jì)算再將結(jié)果Concatenate和直接使用QQQ進(jìn)行計(jì)算得到的結(jié)果是一致的:
    N×DimQ×KT→N×Nsoftmax→N×N×V→N×DimVN \times Dim^Q \space \space \space \underrightarrow{\times K^T} \space \space \space N \times N \space \space \space \underrightarrow{\text{softmax}} \space \space \space N \times N \space \space \space \underrightarrow{\times V} \space \space \space N \times Dim^VN×DimQ???×KT????N×N???softmax????N×N???×V????N×DimV
    上述介紹中,筆者實(shí)際上省略了論文中的一個(gè)重要操作——除以DimK\sqrt{Dim^K}DimK?,文中給出的此操作的作用是:作者同時(shí)測(cè)試了點(diǎn)積注意力和additive attention(出自文章)的表現(xiàn),在DimKDim^KDimK很小時(shí),兩種注意力的性能接近,在DimKDim^KDimK很大時(shí),前者的表現(xiàn)要更出色。而隨著DimKDim^KDimK的增加,點(diǎn)積操作QKTQK^TQKT得到的結(jié)果會(huì)變大,經(jīng)過(guò)softmax\text{softmax}softmax后,反向傳播回來(lái)的梯度會(huì)很小,會(huì)對(duì)訓(xùn)練過(guò)程帶來(lái)阻礙,故除以DimK\sqrt{Dim^K}DimK?進(jìn)行縮放,再進(jìn)行softmax\text{softmax}softmax。綜上,完整的計(jì)算Attention的過(guò)程為:
    Attention(Q,K,V)=softmax(QKTDimK)V\text{Attention}(Q, K, V)=\text{softmax}(\frac{QK^T}{\sqrt{Dim^K}})VAttention(Q,K,V)=softmax(DimK?QKT?)V
  • 現(xiàn)在,總結(jié)一下注意力到底做了什么。我覺(jué)得用一句話(huà)概括,就是:使用K,VK, VK,V來(lái)獲得QQQ的更優(yōu)表示。(以下部分參考了[2])

    QQQ代表我們想要表達(dá)的內(nèi)容(或序列,暫記為XXX)在高維空間AAA中的表達(dá),KKK代表某內(nèi)容(或序列,暫記為YYY)在高維空間AAA中的表達(dá),VVV代表某內(nèi)容(或序列,暫記為YYY)在高維空間BBB中的表達(dá)。即:
    Q=A(X),K=A(Y),V=B(Y)Q=A(X), \space K=A(Y), \space V=B(Y)Q=A(X),?K=A(Y),?V=B(Y)
    也就是說(shuō),通過(guò)計(jì)算兩個(gè)不同序列X,YX, YX,Y在同一高維空間AAA的相似度,作為權(quán)重作用在序列YYY在另一高維空間BBB上,從而獲得序列XXX在高維空間BBB中的表達(dá)B(X)B(X)B(X)

    由上面這些分析可知,在注意力模塊中,必滿(mǎn)足以下兩個(gè)約束:

  • DimQ=DimKDim^Q = Dim^KDimQ=DimK(即:QQQKKK在同一高維空間中,這樣才可以計(jì)算相似度)
  • NK=NVN^K = N^VNK=NV(即:KKKVVV中的“單詞”(不一定限定于單詞)個(gè)數(shù)相同,因?yàn)樗麄兪峭恍蛄性诓煌呔S空間的表達(dá))

  • 自注意力

    其實(shí)只有一句話(huà),Q=K=VQ=K=VQ=K=V


    多頭注意力

    這部分也很好理解,就是通過(guò)多組不同的Q,K,VQ, K, VQ,K,V分別計(jì)算注意力,再Concat一下。這樣可以學(xué)到不同空間的表示。


    Positional Encoding

    TO DO.


    參考

    [1] https://blog.csdn.net/longxinchen_ml/article/details/86533005
    [2] https://zhuanlan.zhihu.com/p/104393915


    BERT

    引言

    Pre-training of Deep Bidirectional Transformers for Language Understanding
    文章鏈接

    解析

    TO DO.

    參考

    總結(jié)

    以上是生活随笔為你收集整理的Transformer、BERT学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。