選單

關於Transformer中常遇到的問題解答

作者:紅豆君  中國科學院大學 計算機碩士

文章經過作者同意轉載

1。 Transformer如何解決梯度消失問題的?

殘差

2。 為何Transformer中使用LN而不用BN?

BatchNorm是對一個batch-size樣本內的每個特徵做歸一化,LayerNorm是對每個樣本的所有特徵做歸一化。

形象點來說,假設有一個二維矩陣。行為batch-size,列為樣本特徵。那麼BN就是豎著歸一化,LN就是橫著歸一化。

它們的出發點都是讓該層引數穩定下來,避免梯度消失或者梯度爆炸,方便後續的學習。但是也有側重點。

一般來說,如果你的特徵依賴於不同樣本間的統計引數,那BN更有效。因為它抹殺了不同特徵之間的大小關係,但是保留了不同樣本間的大小關係。(CV領域)

而在NLP領域,LN就更加合適。因為它抹殺了不同樣本間的大小關係,但是保留了一個樣本內不同特徵之間的大小關係。對於NLP或者序列任務來說,一條樣本的不同特徵,其實就是時序上字元取值的變化,樣本內的特徵關係是非常緊密的。

3。 LN的作用是什麼?

允許使用更大的學習率,加速訓練。有一定的抗過擬合作用,使訓練過程更加平穩

4。 多頭自注意力層中的“多頭”如何理解,有什麼作用?

有點類似於CNN的多個卷積核。透過三個線性層的對映,不同頭中的Q、K、V是不一樣的,而這三個線性層的權重是先初始化後續透過學習得到的。不同的權重可以捕捉到序列中不同的相關性。

5。 Transformer是自迴歸模型還是自編碼模型?

自迴歸模型。

所謂自迴歸,即使用當前自己預測的字元再去預測接下來的資訊。Transformer在預測階段(機器翻譯任務)會先預測第一個字,然後在第一個預測的字的基礎上接下來再去預測後面的字,是典型的自迴歸模型。Bert中的Mask任務是典型的自編碼模型,即根據上下文字元來預測當前資訊。

6。 原論文中Q、K矩陣相乘為什麼最後要除以√dk?

當 √dk 特別小的時候,其實除不除無所謂。無論編碼器還是解碼器Q、K矩陣其實本質是一個相同的矩陣。Q、K相乘其實相等於Q乘以Q的轉置,這樣造成結果會很大或者很小。小了還好說,大的話會使得後續做softmax繼續被放大造成梯度消失,不利於梯度反向傳播。

7。 原論中編碼器與解碼器的Embedding層的權重為什麼要乘以√dmodel ?

為了讓embedding層的權重值不至於過小,乘以 √dmodel  後與位置編碼的值差不多,可以保護原有向量空間不被破壞。

8。 Transformer在訓練與驗證的時候有什麼不同

Transformer在訓練的時候是並行的,在驗證的時候是序列的。這個問題與Transformer是否是自迴歸模型考察的是同一個知識點。

9。 Transformer模型的計算複雜度是多少?

n²d

n是序列長度,d是embedding的長度。Transformer中最大的計算量就是多頭自注意力層,這裡的計算量主要就是QK相乘再乘上V,即兩次矩陣相乘。

QK相乘是矩陣【n d】乘以【d n】,這個複雜度就是n²d。

10。 Transformer中三個多頭自注意力層分別有什麼意義與作用?

Transformer中有三個多頭自注意力層,編碼器中有一個,解碼器中有兩個。

編碼器中的多頭自注意力層的作用是將原始文字序列資訊做整合,轉換後的文字序列中每個字元都與整個文字序列的資訊相關(這也是Transformer中最創新的思想,儘管根據最新的綜述研究表明,Transformer的效果非常好其實多頭自注意力層並不佔據絕大貢獻)。示意圖如下:

關於Transformer中常遇到的問題解答

解碼器的第一個多頭自注意力層比較特殊,原論文給其起名叫Masked Multi-Head-Attention。其一方面也有上圖介紹的作用,即對輸入文字做整合(對與翻譯任務來說,編碼器的輸入是翻譯前的文字,解碼器的輸入是翻譯後的文字)。另一個任務是做掩碼,防止資訊洩露。拓展解釋一下就是在做資訊整合的時候,第一個字元其實不應該看到後面的字元,第二個字元也只能看到第一個、第二個字元的資訊,以此類推。

解碼器的第二個多頭自注意力層與編碼器的第一個多頭自注意力層功能是完全一樣的。不過輸入需要額外強調下,我們都知道多頭自注意力層是透過計算QKV三個矩陣最後完成資訊整合的。在這裡,Q是解碼器整合後的資訊,KV兩個矩陣是編碼器整合後的資訊,是兩個完全相同的矩陣。QKV矩陣相乘後,翻譯前與翻譯後的文字也做了充分的互動整合。至此最終得到的向量矩陣用來做後續下游工作。

11。 Transformer中的mask機制有什麼作用

有兩個作用。

對不等長的序列做padding補齊

掩碼防止資訊洩露

12。 mask機制分別用在了哪裡?

結合第十一問。

mask機制的作用1在三個多頭自注意力層中都用了,作用2只用在瞭解碼器的第一個多頭自注意力層。

to be contiune

看大家點贊量啦!