1. 模型結(jié)構(gòu)示意圖:
這顯示transformer有以下特征:
- encoder部分有一種堆疊的效果惶洲,可以堆疊多個(gè)layer,而且每一層layer的模式是一樣的照宝。
- 每一層都有self attention的效果颜懊,而所謂的self attention就是讓詞兩兩之間產(chǎn)生作用年堆,并進(jìn)行sum求和斑匪。
- 可以預(yù)想到呐籽,這樣可以進(jìn)行長(zhǎng)距離依賴的捕捉。
- 在decoder階段蚀瘸,需要考慮最后一層的encoder的輸出狡蝶,以及之前時(shí)刻的decoder在當(dāng)前l(fā)ayer的輸出結(jié)果,來(lái)得到下一層的輸入贮勃。
2. 如何進(jìn)行self attention贪惹?
可以看圖片的時(shí)候思考幾個(gè)問(wèn)題:
- transformer中是用什么方法進(jìn)行的attention?dot product,biaffine etc寂嘉?
- 進(jìn)行attention的表示與詞的原始的embedding之間有何關(guān)系奏瞬?
- 計(jì)算attention時(shí)枫绅,一個(gè)詞作為query或者是作為被attent的詞,的表示是否有區(qū)別丝格?如何做到這一點(diǎn)撑瞧。
首先得到一個(gè)詞的q,k,v的表示棵譬,作為query显蝌,key和最后的value都不一樣。這樣為之后的點(diǎn)積起效果打下了預(yù)備订咸。
注意這里面有根據(jù)維度進(jìn)行歸一化的內(nèi)容曼尊。然后要對(duì)value做加權(quán)。
這個(gè)式子代碼里面應(yīng)該能直接看到脏嚷。很系統(tǒng)完整骆撇。描述了整個(gè)self attention layer的工作的流程。因?yàn)槭纠杏袃蓚€(gè)單詞父叙,所以Q的第一維是2神郊。
multihead的實(shí)質(zhì)就是多搞幾套。如果原來(lái)的輸出的Z的維度是,的值為4趾唱,那么在multihead下最終的Z的維度就是,不過(guò)是將最終的結(jié)果concat一下罷了涌乳。將concat的結(jié)果與乘一下得到本層輸出。