做免費(fèi)推廣的網(wǎng)站有哪些如何出售自己的域名
寫在前面
?
最近工作從CV轉(zhuǎn)向了NLP,于是空余時(shí)間便跟著嗶哩嗶哩李沐老師的視頻學(xué)習(xí)。其實(shí)研一NLP課程講論文的時(shí)候,我們小組就選擇了經(jīng)典的Attention和Bert,但還有很多細(xì)節(jié)并不完全理解,實(shí)際使用時(shí)也很困惑。
?
因此這個(gè)系列就來記錄NLP復(fù)習(xí)知識!文章內(nèi)容會結(jié)合工作實(shí)際所需持續(xù)更新。加油哇~
Transformer
- 1. 簡介和背景
- 2. 相關(guān)工作
- 3. 模型結(jié)構(gòu)
- 3.1 整體概覽——編碼器-解碼器(Encoder-Decoder)
- 3.2 注意力機(jī)制(Attention)
- 3.3 "point-wise"前饋神經(jīng)網(wǎng)絡(luò)
- 3.4 向量化層(Embedding)
- 3.5 位置編碼(Positional encoding)
- 4. 為什么使用自注意力?(self-attention)
- 5. 文章評價(jià)
1. 簡介和背景
- 論文的工作:聚焦于序列轉(zhuǎn)錄模型,序列轉(zhuǎn)錄模型是一類根據(jù)一個(gè)序列生成另外一個(gè)序列的模型,以往主流的方法通?;赗NN或者CNN、結(jié)構(gòu)上采用Encoder-Attention-Decoder;提出的Transformer這種新的網(wǎng)絡(luò)結(jié)構(gòu)僅使用Attention機(jī)制。
- RNN特點(diǎn):能夠處理序列數(shù)據(jù)的關(guān)鍵所在,是對輸入序列從左到右依次進(jìn)行計(jì)算,并將前面學(xué)到的知識放入隱藏狀態(tài)向后傳遞
- 這種計(jì)算機(jī)制帶來的問題:
- 無法并行計(jì)算
- 當(dāng)輸入序列較長時(shí),前面學(xué)到的知識在向后傳遞的過程中存在信息丟失的風(fēng)險(xiǎn)
- 已有的提升計(jì)算效率的方法,如分解技巧,并不能從根本上解決問題
- 這種計(jì)算機(jī)制帶來的問題:
- Attention機(jī)制在以往的工作中主要用來將Encoder的信息更好地傳遞給Decoder,論文提出的Transformer網(wǎng)絡(luò),不再使用循環(huán)層,僅使用attention學(xué)習(xí)輸入和輸出的全局依賴關(guān)系,而且能夠有效進(jìn)行并行計(jì)算。
2. 相關(guān)工作
- 減少時(shí)序計(jì)算代價(jià)途徑之一——使用卷積神經(jīng)網(wǎng)絡(luò)
- cnn的缺點(diǎn)在于難以建模長序列,每次計(jì)算使用的是k*k(k=3,5)的卷積核,如果需要建模兩個(gè)距離較遠(yuǎn)的像素,需要使用多層卷積逐層計(jì)算;而Transformer中的注意力機(jī)制,每次計(jì)算使用全部像素;
- 卷積的好處在于使用多個(gè)輸出通道計(jì)算不同的特征,所以設(shè)計(jì)多頭注意力機(jī)制進(jìn)行模擬。
- 自注意力機(jī)制:在計(jì)算一個(gè)序列表達(dá)時(shí),將序列不同位置關(guān)聯(lián)起來的一種注意力機(jī)制;已有工作并非論文創(chuàng)新。
3. 模型結(jié)構(gòu)
3.1 整體概覽——編碼器-解碼器(Encoder-Decoder)
Transformer基于經(jīng)典序列轉(zhuǎn)錄模型的Encoder-Decoder架構(gòu):
- 長度為n的輸入x=(x_1, x_2,…x_n),如果是一個(gè)句子,x_t表示第t個(gè)單詞
- 編碼器E:將輸入映射為長度同樣為n的連續(xù)向量z=(z_1, z_2,…z_n)
- 解碼器D:以編碼器的輸出z為輸入,生成長度為m的輸出序列y=(y_1, y_2, …y_m)
- m可以不等于n,例如英翻中任務(wù)中,輸入的英文句子長度可以不等于輸出的中文句子長度
- 解碼器是典型的自回歸模型,即逐步生成序列的每個(gè)元素來生成整個(gè)序列,生成y_t時(shí)考慮已經(jīng)生成的y_1到y(tǒng)_(t-1),過去時(shí)刻的所有輸出作為當(dāng)前時(shí)刻的輸入
同時(shí)在編碼器和解碼器堆疊了多層self-attention、norm和fc
- 編碼器
- batchnorm和laynorm
- 解碼器
- 與編碼器結(jié)構(gòu)相似,包含6個(gè)完全相同的層,每層除了與編碼器相同的兩個(gè)子層(多頭自注意力和前饋神經(jīng)網(wǎng)絡(luò))外,增加一個(gè)額外的子層,同樣是多頭注意力;
- 由于解碼器預(yù)測t時(shí)刻輸出時(shí),只能使用0到t-1時(shí)刻的輸出作為輸入,而t時(shí)刻后的不能;但注意力機(jī)制每次可以看到完整輸入;因此使用帶掩碼的注意力機(jī)制–>保證訓(xùn)練和測試一致。
3.2 注意力機(jī)制(Attention)
簡要理解:注意力函數(shù)將輸入的 query,key-value 映射為輸出output;具體來說,輸出是value的加權(quán)和(二者維度相同),權(quán)重由query和key的相似度函數(shù)計(jì)算得出。其中不同的相似度函數(shù)則對應(yīng)不同的注意力機(jī)制。
- 點(diǎn)乘注意力(Scaled dot attention)——TransFormer中使用的注意力機(jī)制
- quey的個(gè)數(shù)可以和kye-value對的個(gè)數(shù)不一樣,但維度相同
- 為什么要做縮放?當(dāng)d_k較大時(shí),點(diǎn)乘的值會變大,對應(yīng)的softmat結(jié)果靠近1,使得梯度比較小
- mask的目的——避免t時(shí)刻的query看到t時(shí)刻之后的key-value對;具體計(jì)算時(shí),將t時(shí)刻之后的qk設(shè)置成較大的負(fù)數(shù),經(jīng)過softmax計(jì)算后變成0
-
多頭注意力(Multi-Head attention)
目的:模擬卷積神經(jīng)網(wǎng)絡(luò)不同輸出通達(dá)學(xué)習(xí)不同特征
做法:將QKV先投影到低維空間,投影h次–>縮放的點(diǎn)乘注意力機(jī)制–>拼接之后投影到原維度
-
Transformer中三種不同的注意力
(1)Encoder中
(2)Dncoder中
第一個(gè)注意力機(jī)制與Encoder相似,增加了mask機(jī)制:預(yù)測t時(shí)刻輸出時(shí),t時(shí)刻之后的權(quán)重設(shè)置為0
第二個(gè)不再是自注意力,key-value對來自編碼器的輸出
3.3 "point-wise"前饋神經(jīng)網(wǎng)絡(luò)
- point-wise的意思:輸入序列每個(gè)位置的詞語都會經(jīng)過相同的前饋神經(jīng)網(wǎng)絡(luò)計(jì)算
- 兩個(gè)線性層,使用Relu激活函數(shù),將512維輸入映射到2048維度后再映射回512維
- 為什么是point-wise?注意力子層已經(jīng)把輸入的整個(gè)句子信息做了一次匯聚,使得注意力層輸出的每個(gè)向量中都融合了其他位置信息(權(quán)重不同,感興趣信息不同),因此每個(gè)位置詞語對應(yīng)的注意力子層輸出向量可以單獨(dú)進(jìn)入前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行計(jì)算。
3.4 向量化層(Embedding)
- 整個(gè)網(wǎng)絡(luò)包括三個(gè)向量化層,分別在編碼器輸入、解碼器輸入和解碼器輸出softmax層前。三者共享權(quán)重(訓(xùn)練簡單)
- 在編碼器和解碼器的輸入部分,目的是將輸入詞映射成d_model向量;在解碼器的輸出部分,則是將隱藏狀態(tài)的向量(eg:512維)映射到詞匯表大小(eg:3萬)的維度空間,然后進(jìn)入softmax函數(shù)計(jì)算每個(gè)詞概率值。
補(bǔ)充chatgpt的解釋: Q:在decoder的softmax之前也會embedding,這是為什么呢?
A:在Transformer解碼器中,在進(jìn)行softmax之前進(jìn)行額外的嵌入操作,通常是因?yàn)樾枰獙⒔獯a器的輸出(即經(jīng)過softmax后的概率分布)轉(zhuǎn)換為最終的詞匯預(yù)測。這個(gè)額外的嵌入操作通常被稱為"輸出投影"(output
projection)或者"生成詞嵌入"(generation embedding)。 這個(gè)額外的嵌入操作的作用有幾個(gè)方面:
- 維度匹配:通常情況下,解碼器的隱藏狀態(tài)的維度可能與詞匯表的大小不匹配。因?yàn)樵诮獯a器的隱藏狀態(tài)中,每個(gè)時(shí)間步都有一個(gè)隱藏狀態(tài)向量,而詞匯表的大小通常遠(yuǎn)大于隱藏狀態(tài)的維度。所以,需要通過輸出投影將隱藏狀態(tài)的維度轉(zhuǎn)換為詞匯表大小,以便之后進(jìn)行softmax計(jì)算得到每個(gè)詞匯的概率分布。
- 生成詞嵌入:除了維度匹配之外,輸出投影還可以被看作是將隱藏狀態(tài)映射到詞嵌入空間的過程。通過這個(gè)過程,模型可以更好地捕捉輸出詞匯的語義信息,從而更準(zhǔn)確地預(yù)測下一個(gè)詞匯。
綜上所述,在Transformer解碼器中,在進(jìn)行softmax之前進(jìn)行額外的嵌入操作,既可以保證維度匹配,又可以提高模型對輸出詞匯的表示能力,從而提高預(yù)測的準(zhǔn)確性。
3.5 位置編碼(Positional encoding)
- RNN是通過將上一時(shí)刻輸出作為下一時(shí)刻輸入來編碼序列信息的,但注意力卻缺少對時(shí)序信息的編碼,針對這個(gè)問題,Transformer選擇直接在輸入中加入詞語的位置信息。
- 位置編碼是一個(gè)與位置相關(guān)的向量,它被加到詞嵌入向量中,以使模型能夠區(qū)分不同位置的詞匯。它通過周期不同的正弦、余弦函數(shù)計(jì)算而得,使得每個(gè)位置都會有一個(gè)唯一的位置編碼向量與之對應(yīng)。
4. 為什么使用自注意力?(self-attention)
雖然論文中這個(gè)章節(jié)標(biāo)題是why self-attention,但并不是解釋為什么這么設(shè)計(jì),而是側(cè)重時(shí)間復(fù)雜度、并行程度等相比RNN和CNN的優(yōu)勢
衡量三個(gè)維度
- 每層的時(shí)間復(fù)雜度
- 順序計(jì)算:下一步計(jì)算必須等前面多少步完成計(jì)算,值越低并行程度越高
- 最大路徑長度:信息從一個(gè)點(diǎn)到另一個(gè)點(diǎn)要走多少步
(1) 自注意力層:query矩陣n行d列,key矩陣n行d列,二者時(shí)間復(fù)雜度是n^2d;query和所有的key計(jì)算,輸出是所有value的加權(quán)和,所以query一次就可以完成所有key-value計(jì)算,同時(shí)矩陣之間并行運(yùn)算,所以每一步無需等待,信息傳輸一次完成。
剩余三者計(jì)算量再補(bǔ)充
TODO:剩余循環(huán)層和卷積層計(jì)算之后遇到實(shí)際場景后再補(bǔ)充
5. 文章評價(jià)
論文寫作:正文精簡講好一個(gè)故事,為什么要做?設(shè)計(jì)理念是什么?思考–>增加文章深度
模型本身:幾乎可以用于所有NLP任務(wù);擴(kuò)展到圖像、語音等領(lǐng)域;預(yù)訓(xùn)練讓整個(gè)訓(xùn)練過程變的簡單
2024.03.09 春日伊始,陽光明媚;在北京的小破出租屋,第一次更新:論文中Transformer基本結(jié)構(gòu)。