自然語言處理N天-再次學習Transformer02

新建 Microsoft PowerPoint 演示文稿 (2).jpg

從今天開始珊肃,我會再看一遍Transformer(這是第3遍了吧……)媚污。
這次是依據(jù)Transformer 模型的 PyTorch 實現(xiàn)進行學習扔涧,再梳理一下Transformer模型的重點囤踩,最后用Pytorch實現(xiàn)珍特。
本來想用AllenNLP一步到位祝峻,但是前天敲了一天發(fā)現(xiàn)不行,我對Pytorch不懂扎筒,同時還是不了AllenNLP莱找,干脆從頭再來。

2. encoder和decoder

一般都會把encoder和decoder分開介紹砸琅,感覺還是合在一起有對比宋距。
在這里我僅截取了encoder和decoder。

encoder和decoder.png

在原始論文中症脂,encoder和decoder都包含有6層谚赎。

  • encoder的每一層是由一個Multi head self-attention和一個FeedForward構成淫僻,兩個部分都會使用殘差連接(residual connection)和Layer Normalization。
  • decoder的每一層比encoder多了一個multi-head context-attention壶唤,即是說雳灵,每一層包括multi-head context-attention、Multi head self-attention和一個FeedForward闸盔,同樣三個部分都會使用殘差連接(residual connection)和Layer Normalization悯辙。
  • encoder和decoder通過context-attention進行連接。
    對比會發(fā)現(xiàn)迎吵,紅框是相同的躲撰,籃框是多出來的那個block。

3. Attention機制

看到了encoder和decoder里面的block击费,就自然會考慮“什么是Attention”拢蛋。
前面已經(jīng)說了,Attention實際上可以理解為權重蔫巩。attention機制也可以分成很多種谆棱。Attention? Attention!一文有一張比較全面的表格

image.png

multi head self-attention

attention機制有兩個隱狀態(tài),分別是輸入序列隱狀態(tài)h_i和輸出序列隱狀態(tài)s_t圆仔,前者是輸入序列第i個位置產(chǎn)生的隱狀態(tài)垃瞧,后者是輸出序列在第t個位置產(chǎn)生的隱狀態(tài)。
所謂multi head self-attention實際上就是輸出序列就是輸入序列坪郭,即是說計算自己的attention得分个从,就叫做self-attention。

multi head context-attention

multi head context-attention是encoder和decoder之間的attention截粗,是兩個不同序列之間的attention信姓,與self-attention相區(qū)別。

如何實現(xiàn)Attention绸罗?

Attention的實現(xiàn)有很多種方式意推,上面的表列出了7種attention,在Transformer中珊蟀,使用的是scaled dot-product attention菊值。
為什么使用scaled dot-product attention。Google給出的解答就是Q(Query)育灸、V(Value)腻窒、K(Key),注意看看這里的描述磅崭。通過query和key的相似性程度來確定value的權重分布儿子。
Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V
scaled dot-product attention 和 dot-product attention 唯一的區(qū)別就是切黔,scaled dot-product attention 有一個縮放因子期丰, 叫\frac{1}{\sqrt{d_k}}畜隶。d_k 表示 Key 的維度享钞,默認用 64。
使用縮放因子的原因是愉适,對于d_k很大的時候犯助,點積得到的結(jié)果維度很大,使得結(jié)果處于softmax函數(shù)梯度很小的區(qū)域维咸。而在梯度很小的情況時剂买,對反向傳播不利。為了克服這個負面影響癌蓖,除以一個縮放因子瞬哼,可以一定程度上減緩這種情況。

我們對比一下公式和論文中的圖示费坊。
Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V

image.png

以下為實現(xiàn)scaled dot-product attention的算法和圖示對比倒槐,我盡量搞得清楚點。

QK.png

可以發(fā)現(xiàn)scale就是比例的意思附井,所以多了scale就是多了一個\frac{1}{\sqrt{d_k}}

scaled.png

接下來就是一個softmax两残,然后與V相乘


final.png

在decoder的self-attention中永毅,Q、K人弓、V都來自于同一個地方(相等)沼死,它們是上一層decoder的輸出。對于第一層decoder崔赌,它們就是word embedding和positional encoding相加得到的輸入意蛀。但是對于decoder,我們不希望它能獲得下一個time step(即將來的信息)健芭,因此我們需要進行sequence masking县钥。可以看到里面還有一個Mask慈迈,這個在下面會詳細介紹若贮。

如何實現(xiàn)multi-heads attention?

理解了Scaled dot-product attention痒留,Multi-head attention也很簡單了谴麦。論文提到,他們發(fā)現(xiàn)將Q伸头、K匾效、V通過一個線性映射之后,分成h份恤磷,對每一份進行scaled dot-product attention效果更好面哼。然后野宜,把各個部分的結(jié)果合并起來,再次經(jīng)過線性映射精绎,得到最終的輸出速缨。這就是所謂的multi-head attention。上面的超參數(shù)h就是heads數(shù)量代乃。論文默認是8旬牲。
Multi-head attention允許模型加入不同位置的表示子空間的信息。
我們對比一下公式和論文中的圖示搁吓。

multi-heads attention.png

{MultiHead}(Q,K,V) = {Concat}({head}_ 1,\dots,{head}_ h)W^O

其中
{head}_ i = {Attention}(QW_i^Q,KW_i^K,VW_i^V)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末原茅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子堕仔,更是在濱河造成了極大的恐慌擂橘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摩骨,死亡現(xiàn)場離奇詭異通贞,居然都是意外死亡,警方通過查閱死者的電腦和手機恼五,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門昌罩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灾馒,你說我怎么就攤上這事茎用。” “怎么了睬罗?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵轨功,是天一觀的道長。 經(jīng)常有香客問我容达,道長古涧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任董饰,我火速辦了婚禮蒿褂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卒暂。我一直安慰自己啄栓,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布也祠。 她就那樣靜靜地躺著昙楚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诈嘿。 梳的紋絲不亂的頭發(fā)上堪旧,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天削葱,我揣著相機與錄音,去河邊找鬼淳梦。 笑死析砸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的爆袍。 我是一名探鬼主播首繁,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陨囊!你這毒婦竟也來了弦疮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜘醋,失蹤者是張志新(化名)和其女友劉穎胁塞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體压语,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡啸罢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胎食。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伺糠。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖斥季,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情累驮,我是刑警寧澤酣倾,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站谤专,受9級特大地震影響躁锡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜置侍,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一映之、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜡坊,春花似錦杠输、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至据忘,卻和暖如春鹦牛,著一層夾襖步出監(jiān)牢的瞬間搞糕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工曼追, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窍仰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓礼殊,卻偏偏與公主長得像驹吮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子膏燕,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容