transfomer復(fù)習(xí)

transformer

視頻原作者:https://www.bilibili.com/video/BV1Di4y1c7Zm?p=4&spm_id_from=pageDriver

1.位置編碼

2.多頭注意力機(jī)制

3.殘差和layerNorm

4.前饋神經(jīng)網(wǎng)絡(luò)

5.面試題講解

TRM在做一個(gè)什么事情

TRM1

1.transformer多用于機(jī)器翻譯翁狐,簡單來說就是 輸入 處理 輸出

TRM2

2.細(xì)化transformer糯累,上圖輸入 輸出沒有變化 transformer模塊是由encoders(編碼) decoders(解碼)組成拌屏;類似sequens2sequens;

TRM3

3.再細(xì)化encoders decoders模塊跺讯,encoders由6個(gè)小encoders組成;decoders由6個(gè)小decoders組成世剖;這里的6可以自己定间聊,這是一個(gè)×N的結(jié)構(gòu),是一個(gè)循環(huán)壳贪,我們需要注意的一個(gè)特點(diǎn)是陵珍,這6個(gè)encoder結(jié)構(gòu)相同6個(gè)decoder結(jié)構(gòu)相同,但是encoder與decoder的結(jié)構(gòu)是不同的撑碴。還有一個(gè)需要注意的點(diǎn),6個(gè)encoder結(jié)構(gòu)上是完全相同朝墩,參數(shù)是不一樣的(說明在訓(xùn)練的時(shí)候并不是訓(xùn)練了一個(gè)參數(shù)之后就進(jìn)行copy而是6個(gè)都在訓(xùn)練醉拓;為什么說這個(gè) 因?yàn)楹笃赼lbert就是共享transformer中某些層的參數(shù)去減少bert參數(shù)量的目的伟姐;decoder同理)。

TRM from paper

4.transformer原論文中的圖:比較清晰的給出了具體的結(jié)構(gòu)亿卤,我們可以從中間切成兩部分愤兵,左半部分是encoders 右半部分是decoders。XN說明N可以由自己定排吴,原論文N=6秆乳,還有一個(gè)特點(diǎn)encoder與decoder的架構(gòu)是不相同的 decoder中間多了一層交互層,下面變成了一個(gè)masked(被掩蓋的多頭注意力機(jī)制)钻哩。

image.png

5.我們單獨(dú)剖析出一個(gè)encoder屹堰,詳細(xì)的了解里面的細(xì)節(jié)。我們可以把單個(gè)的encoder分成3個(gè)部分街氢,輸入 注意力機(jī)制 前饋神經(jīng)網(wǎng)絡(luò)

輸入部分: ①embedding ②位置嵌入

5.1 位置編碼

為什么需要:

RNN

從RNN引入扯键,對于RNN來說一個(gè)共識(很多人會忽略的點(diǎn)):RNN的參數(shù) u輸入?yún)?shù),w隱層參數(shù)珊肃,v輸出參數(shù)這是一套參數(shù) 對于RNN的所有的timesteps他們都共享一套參數(shù)荣刑。也就是說有100個(gè)timesteps 但是只有一套參數(shù),更新的時(shí)候是更新一套u(yù)wv伦乔。所以RNN這種展開的結(jié)構(gòu)厉亏,符合天然的時(shí)序關(guān)系,但是對于transformer的多頭注意力機(jī)制部分來說烈和,我們在處理的時(shí)候是有并行化機(jī)制的爱只,一句話所有的單詞是可以一起處理的,而不是像RNN這樣一個(gè)一個(gè)的喂斥杜。這樣做增快速度虱颗,但是忽略單詞之間的序列關(guān)系或者說先后關(guān)系,所以說transformer相比RNN就缺少了某種東西蔗喂,這個(gè)時(shí)候我們就需要位置編碼忘渔。

5.2 位置編碼公式

image.png
image.png
image.png

2i代表偶數(shù),2i+1表示奇數(shù)缰儿,偶數(shù)位置使用sin 奇數(shù)位置使用cos畦粮。得到位置編碼512維度和字向量中的512個(gè)維度相加,得到一個(gè)最終的512維度作為整個(gè)transformer的輸入乖阵,為什么位置嵌入式有用的宣赔?首先要明確一個(gè)點(diǎn):正余弦這個(gè)函數(shù)對于同一個(gè)位置不同的向量使用不同的sin或者cos體現(xiàn)出的是一種絕對位置信息,與此同時(shí)絕對位置向量中蘊(yùn)含著相對位置信息瞪浸。

但是儒将,這種相對位置信息會在注意力機(jī)制那里消失

小tips:RNN的梯度消失有什么不同?

RNN的梯度消失與普通網(wǎng)絡(luò)的梯度消失并不相同对蒲,RNN是一個(gè)總的梯度和钩蚊,他的梯度消失并不是變?yōu)?贡翘,而是說總梯度被近距離梯度主導(dǎo)被遠(yuǎn)距離梯度忽略不計(jì)。

6.transformer中最核心的部分——attention機(jī)制

6.1 基本的注意力機(jī)制

image.png

人類在看一張圖的時(shí)候砰逻,有重點(diǎn)關(guān)注鸣驱,進(jìn)一步我們引申一下,嬰兒在干嘛這句話更關(guān)注的是圖片中的哪個(gè)區(qū)域蝠咆?這就是注意力機(jī)制的基本形式

image.png

上圖是原論文中的公式踊东,抓住三個(gè)重點(diǎn)QKV三個(gè)矩陣,我們計(jì)算注意力機(jī)制的時(shí)候一定要有QKV矩陣刚操,QK轉(zhuǎn)置相乘除以某個(gè)值做softmax歸一化闸翅,softmax之后我們得到的是相似度向量,乘以一個(gè)V矩陣赡茸,得到的應(yīng)該是一個(gè)加權(quán)的和缎脾。

例子1:

image.png

Q:嬰兒單詞對應(yīng)的某種向量,

K1~K4代表某種向量

V1~V4代表某種向量

首先是嬰兒和左上左下右上右下分別做點(diǎn)乘得到某個(gè)值占卧。點(diǎn)乘的結(jié)果是一個(gè)向量在另一個(gè)向量的投影長度遗菠,是一個(gè)標(biāo)量,可以反應(yīng)向量的相似度也就是說兩個(gè)向量越相似點(diǎn)乘結(jié)果也就越大华蜒。點(diǎn)乘之后我們要判斷嬰兒這個(gè)詞和哪個(gè)區(qū)域的點(diǎn)乘結(jié)果越大辙纬。得到結(jié)果之后和V矩陣相乘得到attention-value一個(gè)加權(quán)和。

image.png
image.png

首先輸入的是Q和K1~K4做F函數(shù) 叭喜,得到點(diǎn)乘的結(jié)果做softmax得到相似度贺拣,他們相加為1.和value值相加做乘法得到attention-value

我們已經(jīng)知道我們需要三個(gè)矩陣QKV但是我們在這里都沒有說明怎么獲取QKV向量,在transformer中是怎么操作的呢捂蕴?

6.2 在transformer中怎么操作的

image.png
image.png

輸入的詞做embedding 分別乘以一個(gè)矩陣得到QKV向量譬涡。向量相乘得到score 然后除以一個(gè)值。為什么要除以一個(gè)值啥辨,如果qk相乘值很大softmax在反向傳播的時(shí)候梯度很小涡匀,很容易造成梯度的消失。為什么除以根號DK不是其他值溉知,是為了保持方差控制為1 得到之后就可以得到加權(quán)和陨瘩。在實(shí)際操作中我們一般使用矩陣,方便并行速度更快级乍。

image.png
image.png
image.png

還有一個(gè)細(xì)節(jié)是多頭舌劳,我們在上圖中只用了一套參數(shù)。但是實(shí)際參數(shù)中我們會使用多套玫荣。分別得到各自的QKV甚淡;為什么這么做。首先捅厂,作者做實(shí)驗(yàn)效果很好贯卦,以此很多人猜測倒槐,多頭相當(dāng)于把原始信息打到不同的空間愁铺。原來是一個(gè)空間走搁,現(xiàn)在變成兩個(gè)空間扇住。保證transformer可以注意到不同子空間的信息盈厘。捕捉到更全的信息睁枕。最后我們需要把多個(gè)頭合在一起輸出,然后乘以一個(gè)矩陣沸手,就得到我們多頭注意力機(jī)制的一個(gè)輸出

7.殘差和LayNorm

image.png

x1 x2代表詞向量進(jìn)行輸入外遇,和位置編碼對位相加得到新的x1 x2經(jīng)過attention層得到輸出結(jié)果z1 z2。 現(xiàn)在的輸出是z 把x拿過來和輸出結(jié)果z對位相加(x是經(jīng)過位置編碼的x) x和z相加作為殘差的一個(gè)結(jié)果契吉。經(jīng)過layernormalization作為一個(gè)輸出跳仿。

7.1殘差

image.png

image.png

原來如果沒有殘差網(wǎng)絡(luò),直接輸出fx就可以了捐晶,現(xiàn)在有了殘差網(wǎng)絡(luò)菲语,需要把原來的x拿到下面與fx的矩陣進(jìn)行對位相加。為什么殘差結(jié)構(gòu)有用呢惑灵?經(jīng)過BC兩層網(wǎng)絡(luò)A的輸出就是x山上。梯度消失一般是因?yàn)檫B乘產(chǎn)生梯度消失,在殘差網(wǎng)絡(luò)中因?yàn)橛辛? 所以確保了梯度不會為0英支,所以緩解了梯度消失的出現(xiàn)佩憾。這就是NLP中用了殘差網(wǎng)絡(luò)之后可以比較深的原因。


image.png

8.Layer Normalization

經(jīng)典面試題:為什么在這里使用layer normalization而不是使用傳統(tǒng)的BN

在NLP中干花,很少使用BN妄帘。因?yàn)锽N在NLP任務(wù)中效果比較差所以不用。但是后期很多論文對BN進(jìn)行了改進(jìn)池凄,現(xiàn)在先不去深究

8.1 BN提出的背景


image.png

無論在機(jī)器學(xué)習(xí)還是深度學(xué)習(xí)中抡驼,都會經(jīng)常使用feature scaling 主要是為了消除量綱的影響讓模型收斂得更快。

image.png

BN的重點(diǎn)在哪里:BN的重點(diǎn)是針對整個(gè)batch中的樣本在同一緯度的特征的處理修赞。

BN的優(yōu)點(diǎn):

第一個(gè)是可以解決內(nèi)部協(xié)變量的偏移

第二個(gè)是緩解了梯度飽和問題(如果使用sigmoid激活函數(shù)的話)婶恼,加快收斂

BN的缺點(diǎn):

第一個(gè)是batch_size比較小的時(shí)候,效果比較差

第二個(gè)是在RNN中柏副,效果比較差勾邦。比如現(xiàn)在有一堆樣本 batch_size為10 9個(gè)樣本長度為5。1個(gè)樣本長度為20.那么在輸入的時(shí)候前5個(gè)單詞的均值和方差可以用10個(gè)樣本算出來割择。但是第6個(gè)單詞到第20個(gè)單詞的均值和方差怎么計(jì)算呢眷篇?如果只用一個(gè)樣本計(jì)算,就回到第一個(gè)問題batch_size很小的時(shí)候效果很差荔泳。RNN的輸入是動態(tài)的蕉饼,所以她不能得到整個(gè)batch_size的均值和方差

9.為什么使用layer-norm
理解:為什么layerNorm單獨(dú)對一個(gè)樣本的所有單詞做縮放可以起到效果虐杯。

LN的特點(diǎn):舉個(gè)例子:上面講的最后一個(gè)樣本有20個(gè)單詞,LN就是對這20個(gè)單詞做縮放做均值方差昧港。而BN做的是對第一個(gè)單詞做均值方差..對第二個(gè)單詞做均值方差..這樣BN的操作在NLP中就會遇到問題擎椰,把BN引申到RNN看下圖:


image.png

如果是針對同一個(gè)位置做均值方差,我和今做均值方差创肥,愛和天做均值方差达舒,默認(rèn)的假設(shè)是我和今代表同樣的信息,愛和天代表同樣的信息叹侄。而LN是針對"我愛中國共產(chǎn)黨"進(jìn)行均值方差 他的假設(shè)是"我愛中國共產(chǎn)黨"是出現(xiàn)在同一個(gè)意義信息里巩搏。我們這么來想這個(gè)問題,我們在獲取我愛中國共產(chǎn)黨這個(gè)句子的句向量的時(shí)候趾代,一個(gè)常規(guī)的做法是做加權(quán)的詞向量贯底。加權(quán)詞向量基本假設(shè)就是"我愛中國共產(chǎn)黨"這句話的所有詞是在同一個(gè)語義信息下的。所以我們才認(rèn)為他可以理解的(個(gè)人理解)撒强。

9.1前饋神經(jīng)網(wǎng)絡(luò)


image.png

前饋神經(jīng)網(wǎng)絡(luò)其實(shí)比較簡單禽捆,就是這張圖的上半部分,Z1通過一個(gè)feed forward Z2通過一個(gè)feed forward 再加上一個(gè)兩層全連接再過一個(gè)殘差和Normalization飘哨。

上述就是整個(gè)encoder的過程睦擂。

10.Decoder

image.png

Decoder和encoder一樣由完全相同的幾個(gè)模塊堆疊而成Nx

模塊1:多頭注意力機(jī)制,但是這里有個(gè)細(xì)節(jié)點(diǎn)就是masked

masked: 需要對當(dāng)前時(shí)刻之后的單詞都mask掉

為什么需要mask:


image.png

比如我在輸入love的時(shí)候輸出的是you 如果decoder的輸入沒有mask和encoder一樣的多頭注意力機(jī)制杖玲,那么就是所有的次S I LOVE YOU NOW都會為生成YOU這個(gè)結(jié)果提供信息顿仇。但是這樣訓(xùn)練出來的模型在預(yù)測時(shí)候就會出現(xiàn)一個(gè)問題:我們在預(yù)測YOU這個(gè)單詞的時(shí)候是沒有后面的那些信息的。模型看不見未來時(shí)刻的單詞摆马。如果不masked YOU NOW 那么模型訓(xùn)練和預(yù)測的時(shí)候就會存在gap臼闻,也就是說訓(xùn)練的時(shí)候可以看見YOU NOW 預(yù)測的時(shí)候看不到,那么預(yù)測效果肯定不好囤采。所以我們需要mask述呐。把YOU NOW給的信息抹點(diǎn)不看到他 預(yù)測的時(shí)候也看不到,這樣gap就消失了蕉毯。

模塊2:交互層乓搬,比encoder多了一層。

encoder 與 decoder交互的地方代虾。


image.png

所有encoder的輸出生成值與每個(gè)decoder進(jìn)行交互


image.png

encoder生成KV矩陣 decoder生成Q矩陣进肯,交互的時(shí)候就是QKV進(jìn)行交互生成多頭注意力機(jī)制。


image.png

虛線代表KV矩陣的輸出棉磨,和第一個(gè)decoder的Q做一個(gè)交互

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末江掩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌环形,老刑警劉巖策泣,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抬吟,居然都是意外死亡萨咕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門火本,熙熙樓的掌柜王于貴愁眉苦臉地迎上來任洞,“玉大人,你說我怎么就攤上這事发侵。” “怎么了妆偏?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵刃鳄,是天一觀的道長。 經(jīng)常有香客問我钱骂,道長叔锐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任见秽,我火速辦了婚禮愉烙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘解取。我一直安慰自己步责,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布禀苦。 她就那樣靜靜地躺著蔓肯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪振乏。 梳的紋絲不亂的頭發(fā)上蔗包,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音慧邮,去河邊找鬼调限。 笑死,一個(gè)胖子當(dāng)著我的面吹牛误澳,可吹牛的內(nèi)容都是我干的耻矮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼忆谓,長吁一口氣:“原來是場噩夢啊……” “哼淘钟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤米母,失蹤者是張志新(化名)和其女友劉穎勾扭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铁瞒,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妙色,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慧耍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片身辨。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芍碧,靈堂內(nèi)的尸體忽然破棺而出煌珊,到底是詐尸還是另有隱情,我是刑警寧澤泌豆,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布定庵,位于F島的核電站,受9級特大地震影響踪危,放射性物質(zhì)發(fā)生泄漏蔬浙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一贞远、第九天 我趴在偏房一處隱蔽的房頂上張望畴博。 院中可真熱鬧,春花似錦蓝仲、人聲如沸俱病。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庶艾。三九已至,卻和暖如春擎勘,著一層夾襖步出監(jiān)牢的瞬間咱揍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工棚饵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煤裙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓噪漾,卻偏偏與公主長得像硼砰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子欣硼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354