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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【机器翻译】transformer

發(fā)布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器翻译】transformer 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【機器翻譯】transformer

?2018-05-01?|??ML?,?app?,?nlp?,?translation?,?2. 主流model-研究現(xiàn)狀?,?2. NMT?,?transformer?|??3129

?本文字?jǐn)?shù):?|??閱讀時長 ≈

簡介

在2017年5月Facebook發(fā)布了ConvSeq2Seq模型吊打了GNMT一個月之后,Google發(fā)出了最強有力的反擊,發(fā)表了一篇論文Attention is all you need,文中提出了一種新的架構(gòu)叫做Transformer,用以來實現(xiàn)機器翻譯。它拋棄了傳統(tǒng)的CNN、RNN,只采用attention,取得了很好的效果,激起了工業(yè)界和學(xué)術(shù)界的廣泛討論。

背景,motivation

如何獲取context信息

常用的模型架構(gòu)有RNN、CNN、CRF,詳見?序列學(xué)習(xí)。

transformer橫空出世

Transformer避開了recurrence,只用attention,便可以刻畫出輸入和輸出的依賴關(guān)系。

對比RNN的決策步驟太長問題,transformer可單步?jīng)Q策。通過一層self-attention,bank能夠直接attend到river上。

ConvS2S是線性時間復(fù)雜度,ByteNet是log時間復(fù)雜度。而Transformer則是常數(shù)時間復(fù)雜度

創(chuàng)新點

  • dot product attention
  • multi-head
  • 彩蛋: restricted self-attention,

dot product attention

Scaled Dot Product Attention

Multi-Head Attention

前面給出的是一般化的框架形式的描述,事實上Google給出的方案是很具體的。首先它定義了Attention一種泛化形式:

Attention(Q,K,V)=softmax(QK?dk??√)VAttention(Q,K,V)=softmax(QK?dk)V

其中Q∈Rn×dk,K∈Rm×dk,V∈Rm×dvQ∈Rn×dk,K∈Rm×dk,V∈Rm×dv。如果忽略激活函數(shù)softmax的話,那么事實上它就是三個n×dk,dk×m,m×dvn×dk,dk×m,m×dv的矩陣相乘,最后的結(jié)果就是一個n×dvn×dv的矩陣。

這里將attention抽象成?q: query,?k: key,?v: value。

為什么要采用scale?

因為量級太大,softmax后就非0即1了,不夠“soft”了。也會導(dǎo)致softmax的梯度非常小。也就是讓softmax結(jié)果不稀疏(問號臉,通常人們希望得到更稀疏的attention吧)。

  • attention 可以不只是用于 decoder 里每步輸入一個符號,而是可以用在網(wǎng)絡(luò)中的任意一層,把一個序列轉(zhuǎn)換成另一個序列。這個作用與 convolutional layer、recurrent layer 等是類似的,但有一個好處就是不再局限于局域性。attention是直接去capture dependency structure,擺脫了局限性魔咒
  • attention 可以一般地描述為在一個 key-value mapping 中進行檢索,只不過 query 跟 key 可以進行模糊匹配,檢索結(jié)果是各個 key 對應(yīng)的 value 的加權(quán)平均。
  • Query, key, value 其實并不是專門針對翻譯的概念。不過可以舉一些翻譯中的例子。例如,當(dāng)剛剛翻譯完主語之后,attention 的內(nèi)部狀態(tài)就會想要去找謂語,這時它就把「想找謂語」這件事編碼成 query。然后句子里本身是謂語的地方,會有一個 key,表明「我這里可以提供謂語」,它跟 query 一拍即合。這個 key 對應(yīng)的 value 就是謂語本身的 embedding。

    點乘注意力在何凱明的Non-local Neural Networks中被解釋成Embedded Gaussian的一種特例。非要跟高斯扯上關(guān)系,好牽強。

    VS additive attention

    additive attention等價于一個前饋網(wǎng)絡(luò):

    softmax([Q,K]W)=softmax(QWQ+KWK)softmax([Q,K]W)=softmax(QWQ+KWK)

    這個的計算速度沒有dot-product attention在GPU上快。

    詳見 Neural machine translation by jointly learning to align and translate

    VS 其他attention

    Multi-Head Attention

    以Q為例,單個head的計算

    • code-t2t
    • code-Kyubyong
    • code-keras

    將輸入向量切成8份,這每一
    份可以看成一個local partial,然后再分別attnetion最終再concat成一個context向量。如果將本文multi-head attention的V輸入切成八份后的
    向量類比關(guān)注不同local paritial的卷積核的話,我們可以看到CNN和這里multi-head attention異曲同工

    優(yōu)勢

  • It expands the model’s ability to focus on different positions。 這個最強勢。通過attention到不同的維度。細粒度的attention,超贊。
    • 既是細粒度的attention,又不增加計算量
  • 能在encode的時候并行化,(這里的并行是相對RNN嗎?one-head是大矩陣也可以并行。convS2S同樣可以)
  • 降維到d/head,即bottleneck的思想,減少計算量
  • 舉例
    忽略batch_size

    復(fù)制

    1 2 3 4 5 6 7 8 9 10 11 12 num_units = 512 # 也叫 num_channel, emb_size max_length = 10K,Q,V = [10, 512] W = [512,512] A = attention(KW, KQ, KW)加上head后 num_head = 8 K_i,Q_i,V_i = [10,64] # W_i = [64,512] # 值得注意的是,這里不是 [64,64],即并未減少計算量和參數(shù)量 A_i = attention(K_i W_i, W_i,)

    ?

    • Multiple attention layers (heads) in parallel
    • Each head uses different linear transformations.
    • Different heads can learn different relationships.

    思考

  • self attention遺漏了什么?位置信息
  • self attention中的k, q, v分別指代什么?
  • self attention是否可逆向?
  • FFN層

    FFN(Position-wise Feed-Forward Network)。

    • Position-wise: 顧名思義,就是對每個position采用相同的操作。
    • Feed-Forward Network: 就是最普通的全連接神經(jīng)網(wǎng)絡(luò),這里采用的兩層,relu作為激活函數(shù)

    position wise FFN


    FFN層對接multi-head attention層,那么該層的輸入?x∈Rbatchsize×length×dmodelx∈Rbatchsize×length×dmodel。

    https://github.com/tensorflow/tensor2tensor/blob/v1.9.0/tensor2tensor/models/transformer.py#L1373

    FFN(x)=max(0,xW1+b1)W2+b2FFN(x)=max(0,xW1+b1)W2+b2

    其中輸入和輸出的維度都是$d{model}=512,中間維度是,中間維度是d{ff}=2048$。對于單個position

    x∈R512,W1∈R512×2048,W2∈R2048×512x∈R512,W1∈R512×2048,W2∈R2048×512

    與卷積的等價性

    這里的全連接層,一種替代方案就是采用kernel size為1的卷積,即

    tensor2tensor中有兩種實現(xiàn)dense_relu_dense?和?conv_relu_conv,默認采用的前者。

    其中卷積的維度是

    復(fù)制

    1 2 3 input.shape = [batch_size, length, 512] kernel_1 = [2048,1] kernel_2 = [512, 1]

    ?

    tensor2tensor實現(xiàn)中,conv1d中的kernel_size如果為1,默認返回dense。源碼

    復(fù)制

    1 2 3 4 def tpu_conv1d(inputs, filters, kernel_size, padding="SAME", name="tpu_conv1d"):if kernel_size == 1:return dense(inputs, filters, name=name, use_bias=True)...

    ?

    逗比,conv到底比dense會不會加速?

    為什么我覺得kernel_size=512才等價于全連接?

    實際上,kernel_size沒必要一定是1的。

    層數(shù)與維度設(shè)計

    很自然,我們有兩個疑問。

  • 為什么要兩層?MLP?
  • 為什么要先升維再降維? high-rank
  • 通常的bottleNeck架構(gòu),先降維再升維(減小計算量)。

    兩大作用:

  • multi-head attention之后的merge
    • 類似group conv之后的merge,DWConv后的1*1卷積與channel shuffle
  • 小結(jié)

  • 為什么叫強調(diào)position-wise?
    • 解釋一: 這里FFN層是每個position進行相同且獨立的操作,所以叫position-wise。對每個position獨立做FFN。
    • 解釋二:從卷積的角度解釋,這里的FFN等價于kernel_size=1的卷積,這樣每個position都是獨立運算的。如果kernel_size=2,或者其他,position之間就具有依賴性了,貌似就不能叫做position-wise了
  • 為什么要采用全連接層?
    • 目的: 增加非線性變換
    • 如果不采用FFN呢?有什么替代的設(shè)計?
  • 為什么采用2層全連接,而且中間升維?
    • 這也是所謂的bottle neck,只不過低維在IO上,中間采用high rank
  • Positional Encoding

    回顧一下Transformer的整個架構(gòu),不難發(fā)現(xiàn)Transformer模型本身并不能捕捉序列的順序。換句話說,如果將K,V按行打亂順序(相當(dāng)于句子中的詞序打亂),那么Attention的結(jié)果還是一樣的。這就表明了,到目前為止,Attention模型頂多是一個非常精妙的“詞袋模型”而已

    Sinusoid Positional Encoding

    code

    1、以前在RNN、CNN模型中其實都出現(xiàn)過Position Embedding,但在那些模型中,Position Embedding是錦上添花的輔助手段,也就是“有它會更好、沒它也就差一點點”的情況,因為RNN、CNN本身就能捕捉到位置信息。但是在這個純Attention模型中,Position Embedding是位置信息的唯一來源,因此它是模型的核心成分之一,并非僅僅是簡單的輔助手段。

    2、在以往的Position Embedding中,基本都是根據(jù)任務(wù)訓(xùn)練出來的向量。而Google直接給出了一個構(gòu)造Position Embedding的公式:

    ?????PE2i(p)=sin(p/100002i/dpos)PE2i+1(p)=cos(p/100002i/dpos){PE2i(p)=sin?(p/100002i/dpos)PE2i+1(p)=cos?(p/100002i/dpos)

    這里的意思是將id為pp的位置映射為一個$dpos維的位置向量,這個向量的第維的位置向量,這個向量的第i個元素的數(shù)值就是個元素的數(shù)值就是PE{i}(p)$。Google在論文中說到他們比較過直接訓(xùn)練出來的位置向量和上述公式計算出來的位置向量,效果是接近的。因此顯然我們更樂意使用公式構(gòu)造的Position Embedding了。

    3、Position Embedding本身是一個絕對位置的信息,但在語言中,相對位置也很重要,Google選擇前述的位置向量公式的一個重要原因是:由于我們有?sin(α+β)=sinαcosβ+cosαsinβsin?(α+β)=sin?αcos?β+cos?αsin?β以及cos(α+β)=cosαcosβ?sinαsinβcos?(α+β)=cos?αcos?β?sin?αsin?β,這表明位置p+kp+k的向量可以表示成位置pp的向量的線性變換,這提供了表達相對位置信息的可能性。

    小結(jié)

  • Transformer并沒有在結(jié)構(gòu)上突破傳統(tǒng)的LSTM和CNN,只是采用了position encoding的方式取巧。
    如何在結(jié)構(gòu)上突破CNN和LSTM的缺陷,達到獲取position(時序)信息、任意長度依賴、易并行的效果?
  • 其他方案
    • 拼接: 起來作為一個新向量,也可以把位置向量定義為跟詞向量一樣大小,然后兩者加起來。FaceBook的論文和Google論文中用的都是后者。直覺上相加會導(dǎo)致信息損失,似乎不可取
    • multi-channel:
  • 其他

    layer norm

    ?

    transformer - data flow

    Result

    可視化

    經(jīng)過測試,列了以下可視化結(jié)果。

    TODO,+動態(tài)可視化

    維度設(shè)計

    在NLP的很多網(wǎng)絡(luò)里,一般

    • hidden_dim和embedding_dim 相等
      -

    每層的維度都是相同的維度,(只在FFN層進行了局部升維)。

    這與傳統(tǒng)的

    參數(shù)量 & 計算量

    code

    • TensorFlow
      • https://github.com/Kyubyong/transformer?簡易版,bucket、lr、decay等都沒有實現(xiàn)
      • https://github.com/tensorflow/models/tree/master/official/transformer?TF官方code,基本不更新
      • https://github.com/tensorflow/tensor2tensor#translation?官方code,產(chǎn)品級,更新頻繁
      • 代碼解析:?https://blog.csdn.net/mijiaoxiaosan/article/details/74909076
    • Pytorch

    缺陷

    ss

    Attention層的好處是能夠一步到位捕捉到全局的聯(lián)系,因為它直接把序列兩兩比較(代價是計算量變?yōu)镺(n2)O(n2)),當(dāng)然由于是純矩陣運算,這個計算量相當(dāng)也不是很嚴(yán)重);相比之下,RNN需要一步步遞推才能捕捉到,而CNN則需要通過層疊來擴大感受野,這是Attention層的明顯優(yōu)勢。

    擴展閱讀

    • Transformer | Google-blog
    • 《Attention is All You Need》淺讀(簡介+代碼)| kexue.fm?很多還沒看懂,后面繼續(xù)看
    • 從convS2S到transformer | 知乎

    相關(guān)文章

    • 【機器翻譯】CNN系列 - convseq2seq

    • 【機器翻譯】RNN系列 - GNMT

    • 非局部連接網(wǎng)絡(luò) Non-local Neural Network

    總結(jié)

    以上是生活随笔為你收集整理的【机器翻译】transformer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 欧洲av无码放荡人妇网站 | 丰满少妇熟乱xxxxx视频 | 特黄一级视频 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 国产每日更新 | 成人黄色电影网址 | 在线天堂一区 | 伊人www22综合色 | 亚洲欧美日韩综合一区二区 | 日韩国产第一页 | 天堂在线中文网 | 国产一级二级三级 | 帮我拍拍漫画全集免费观看 | 小日子的在线观看免费第8集 | 91在线精品李宗瑞 | av图区| 亚洲a v网站 | 欧美熟妇交换久久久久久分类 | 狼人精品一区二区三区在线 | 污片免费看 | 美女张开腿让男人桶爽 | 在线涩涩 | av天天有 | 日韩中文字幕电影 | 国产性自拍| 欧美专区一区 | 在线观看视频一区 | 91抖音成人| 亚洲成人激情小说 | 熟女少妇精品一区二区 | 国产盗摄精品 | 日韩h视频| 欧洲精品一区二区三区久久 | 韩国短剧在线观看 | 深夜在线免费视频 | 国产精品偷伦视频免费看 | 国产夜夜操 | 日本中文字幕一区二区 | 欧美一区免费观看 | 图书馆的女友在线观看 | 嫩草视频在线观看 | 亚洲一区二区自拍 | 欧美大肚乱孕交hd孕妇 | 亚州中文| 美女的奶胸大爽爽大片 | 欧美激情亚洲综合 | 麻豆自拍偷拍 | 天天干夜夜做 | 国产成人一区二区三区影院在线 | 久久久久久久久综合 | 日韩不卡一区二区 | 免费的一级黄色片 | 久久国产传媒 | 欧美激情 国产精品 | 国产超碰自拍 | 国产aⅴ一区二区三区 | 成人精品国产免费网站 | 国产日产欧美一区二区 | 国产中文自拍 | 国产美女久久久 | 美女视频久久 | 亚洲av无码专区首页 | 中文字幕不卡在线观看 | 日韩在线观看免费av | 不卡av免费观看 | 久热国产在线 | 99视频只有精品 | 观看av在线 | 北岛玲av在线 | 欧美日本免费 | 好看的av网址 | 3d动漫精品啪啪一区二区竹菊 | 亚洲天堂高清 | 摸大乳喷奶水www视频 | 日韩人妻一区二区三区 | 亚洲精品成人在线 | 狠狠爱综合网 | 中文字幕第七页 | 骚鸭av | 久久福利在线 | 女人喂男人奶水做爰视频 | 77久久| 国产一线二线三线女 | 中文字幕一区二区三区又粗 | 一区二区三区高清 | 一本色道久久88综合日韩精品 | 国产又粗又猛又黄又爽视频 | 四虎中文字幕 | 女同hd系列中文字幕 | 日本熟妇色xxxxx日本免费看 | 丰满人妻一区二区三区在线 | 牛牛影视一区二区三区 | 国产黄色自拍视频 | 精品一区二区三区免费看 | 偷偷在线观看免费高清av | 国内精品卡一卡二卡三 | 风间由美一二三区av片 | 国产精品一色哟哟哟 | 杏导航aⅴ福利网站 |