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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

李宏毅Transformer

發(fā)布時間:2023/12/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 李宏毅Transformer 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Transformer

Transformer 其實就是Sequence-to-Sequence(Seq2Seq)架構的model,就是輸入一堆向量,輸出一堆向量,輸出的向量數(shù)量由機器自己決定。

Seq2Seq架構

整體架構

Encode部分
Encode部分就是輸入一堆向量,然后輸出一堆向量,這個encoder部分可以是RNN或者CNN組成的,但是在Transformer里,Encoder得是Transformer的Encoder就是下圖右邊這部分。

首先我們看下Encoder的基本架構,就是紅色框中,輸入一堆向量然后經(jīng)過一個block輸出一堆向量,然后接著輸入到下一個block中…最后輸出h1, h2, h3, h4, 在Transformer網(wǎng)絡中每一個block里面是下圖中右面這部分組成,對輸入的向量進行self-attention操作,每個向量都考慮與其它向量的關聯(lián)性之后然后輸出,然后接入到FC中輸出結果。


實際上Transformer的Block里面的網(wǎng)絡比這個更復雜,舉例:第一個向量b經(jīng)過Self-attention考慮與其它所有向量關聯(lián)性得到輸出結果下圖a,然后把a與輸入向量b進行相加(這就是residual操作)接著把a+b相加的結果做Layer Norm運算。(這個就是對向量中每個元素求mean[平均值], standard deviation[標準差] ),下圖綠色的方框接著紅色方框部分,接著放入FC網(wǎng)絡中得到輸出結果,這里也要做一次residual操作,得到輸出的結果再次做Layer Norm操作,得到最終輸出結果。block中一個向量做的所有操作。

以上就是下圖紅色區(qū)域的操作,總結一下,就是輸入向量如果需要位置信息的話,加上位置Positional向量,然后經(jīng)過Self-attention(Multi-Head Attention),做add&Norm操作,其中add就是(Residual操作,將輸入向量加到self-attention結果輸出上),然后將add結果做Layer Norm操作,接著放入到Feed Forward網(wǎng)絡中輸出結果繼續(xù)做add&Norm操作。

Decode部分


常見結構(Autoregressive)
以語音識別舉例,首先我們把Encoder輸出的向量,讀入到Decoder中,這時給Decoder一個專門的記號(special token)Begin,告訴Decoder開始了,然后Decoder輸出向量(這里的向量大小取決于你想輸出的內(nèi)容,如果你想輸出文字,那么它的長度就是所有文字的數(shù)量,如果是英文單詞,那么它的長度就是所有英文單詞的數(shù)量…),再對向量整體做softmax(求每個中文的概率,所有中文概率加起來為1),求其中最大值就是它的第一個輸出結果。

然后把第一個輸出作為Decoder的輸入,第一個輸出”機“是一個one-hot向量(在”機“位置為1,其它位置為0),這樣Decoder有兩個輸入向量,根據(jù)這兩個輸入的向量通過Decoder輸出”器“,然后再把”器“作為第三個Decoder輸入的向量,Decoder通過這三個輸入向量輸出…,以此往后,所以Decoder每次輸入都是上一次輸出的結果累加起來的。

Decoder內(nèi)部結構
Decoder的內(nèi)部結構如下圖中右面這部分

可以發(fā)現(xiàn)它除了紅色區(qū)域其它與Encoder都一樣操作,只是它使用的是Masked Multi-Head Attention

Masked Multi-Head Attention 就是b1,b2,b3,b4,每一個向量輸出的時候只考慮左邊輸入的向量關聯(lián)性得到的輸出。為什么出現(xiàn)這種情況呢?因為每次decoder輸入,都是上一次輸出的結果累加起來的,所有還沒有后面的向量!

那么要如何停下來呢
我們需要給輸出向量中加一個end標識,它與其它的中文文字類似,這樣當輸入”機”“器”“學”“習“時候,經(jīng)過Decoder輸出向量,然后softmax處理后取最大值得到”end“


以上是AT decoder,還有NAT decoder。。。
Encoder-Decoder
現(xiàn)在講解Encoder-Decoder之間怎么傳遞的。

首先我們可以看到紅色框中,有藍色的圈和一個綠色的圈,其中藍色的圈為從encoder過來的輸入,綠色的為從decoder過來的輸入。

具體操作就是我們可以并行來看,最下面的大紅色框,首先左邊對所有的輸入做Encoder操作,輸出a1,a2,a3,右邊對begin輸入做self-attention操作得到輸出向量b,然后看b與a1,a2,a3關聯(lián)性也就是self-attention一系列操作。

其它的Decoder輸入也是類似操作

總結

以上是生活随笔為你收集整理的李宏毅Transformer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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