一、Seq2Seq工作原理
Seq2Seq(Sequence-to-sequence): 輸入一個(gè)序列,輸出另一個(gè)序列。
在2014年,Cho等人首次在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)中提出了Seq2Seq(序列到序列)模型。與傳統(tǒng)的統(tǒng)計(jì)翻譯模型相比,Seq2Seq模型極大地簡(jiǎn)化了序列轉(zhuǎn)換任務(wù)的處理流程。
核心思想 :
編碼器(Encoder) :使用一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN)作為編碼器(Encoder),讀取輸入句子,并將其壓縮成一個(gè)固定維度的編碼。
解碼器(Decoder) :使用另一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)作為解碼器(Decoder)讀取這個(gè)編碼,并逐步生成目標(biāo)語(yǔ)言的一個(gè)句子。
Seq2Seq模型通過(guò)端到端的訓(xùn)練方式,將輸入序列和目標(biāo)序列直接關(guān)聯(lián)起來(lái),避免了傳統(tǒng)方法中繁瑣的特征工程和手工設(shè)計(jì)的對(duì)齊步驟。這使得模型能夠自動(dòng)學(xué)習(xí)從輸入到輸出的映射關(guān)系,提高了序列轉(zhuǎn)換任務(wù)的性能和效率。
工作原理: Seq2Seq模型中的編碼器使用循環(huán)神經(jīng)網(wǎng)絡(luò)將輸入序列轉(zhuǎn)換為固定長(zhǎng)度的上下文向量,而解碼器則利用這個(gè)向量和另一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò) 逐步生成輸出序列。
Encoder(編碼器):
編碼器是Seq2Seq模型中的一部分,負(fù)責(zé)將輸入序列轉(zhuǎn)換為固定長(zhǎng)度的上下文向量。
它使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)或其變體(如LSTM、GRU)來(lái)實(shí)現(xiàn)這一轉(zhuǎn)換過(guò)程。
在編碼過(guò)程中,編碼器逐個(gè)讀取輸入序列中的元素,并更新其內(nèi)部隱藏狀態(tài)。
編碼完成后,編碼器將最終的隱藏狀態(tài)或經(jīng)過(guò)某種變換的隱藏狀態(tài)作為上下文向量傳遞給解碼器。
Decoder(解碼器):
解碼器是Seq2Seq模型中的另一部分,負(fù)責(zé)從上下文向量生成輸出序列。
它同樣使用循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN)或其變體(如LSTM、GRU)來(lái)實(shí)現(xiàn)生成過(guò)程。
在每個(gè)時(shí)間步,解碼器根據(jù)上一個(gè)時(shí)間步的輸出、當(dāng)前的隱藏狀態(tài)和上下文向量來(lái)生成當(dāng)前時(shí)間步的輸出。
解碼器通過(guò)逐步生成輸出序列中的每個(gè)元素,最終完成整個(gè)序列的生成任務(wù)。
二、Attention 工作原理
Attention Mechanism (注意力機(jī)制) : Attention Mechanism是一種在深度學(xué)習(xí)模型中用于處理序列數(shù)據(jù)的技術(shù),尤其在處理長(zhǎng)序列時(shí)表現(xiàn)出色。 最初引入注意力機(jī)制是為了解決機(jī)器翻譯中遇到的長(zhǎng)句子(超過(guò)50字)性能下降問(wèn)題。
傳統(tǒng)的機(jī)器翻譯在長(zhǎng)句子上的效果并不理想,因?yàn)楣潭ㄩL(zhǎng)度的向量難以包含句子的所有語(yǔ)義細(xì)節(jié)。注意力機(jī)制的核心思想是在生成每個(gè)輸出詞時(shí),模型都能夠關(guān)注到輸入序列中的相關(guān)部分。
核心邏輯: 從關(guān)注全部到關(guān)注重點(diǎn)
Attention機(jī)制處理長(zhǎng)文本時(shí),能從中抓住重點(diǎn),不丟失重要信息 。
Attention 機(jī)制像人類看圖片的邏輯,當(dāng)我們看一張圖片的時(shí)候,我們并沒(méi)有看清圖片的全部?jī)?nèi)容,而是將注意力集中在了圖片的焦點(diǎn)上。
我們的視覺(jué)系統(tǒng)就是一種 Attention機(jī)制,將有限的注意力集中在重點(diǎn)信息上,從而節(jié)省資源,快速獲得最有效的信息。
工作原理: 通過(guò)計(jì)算Decoder的隱藏狀態(tài)與Encoder輸出的每個(gè)詞的隱藏狀態(tài)的相似度(Score),進(jìn)而得到每個(gè)詞的Attention Weight,再將這些Weight與Encoder的隱藏狀態(tài)加權(quán)求和,生成一個(gè)Context Vector。
Encoder(編碼器):
輸入處理 :原始輸入是語(yǔ)料分詞后的token_id
被分批次傳入Embedding
層,將離散的token_id轉(zhuǎn)換為連續(xù)的詞向量。
特征提取 :將得到的詞向量作為輸入,傳入Encoder中的特征提取器(Feature Extractor)。特征提取器使用RNN系列的模型(RNN、LSTM、GRU),這里代稱為RNNs。為了更好地捕捉一個(gè)句子前后的語(yǔ)義特征,使用雙向的RNNs。雙向RNNs由前向RNN和后向RNN組成,分別處理輸入序列的前半部分和后半部分。
狀態(tài)輸出 :兩個(gè)方向的RNNs(前向和后向)各自產(chǎn)生一部分隱藏層狀態(tài)。將這兩個(gè)方向的隱藏層狀態(tài)拼接(concatenate)成一個(gè)完整的隱藏狀態(tài)hs
。這個(gè)狀態(tài)hs
包含了輸入序列中各個(gè)詞的語(yǔ)義信息,是后續(xù)Attention機(jī)制所需要的重要狀態(tài)值。
Decoder(解碼器):
輸入與隱藏狀態(tài)傳遞 :在Decoder的t-1時(shí)刻,RNNs(如LSTM或GRU)輸出一個(gè)隱藏狀態(tài)h(t-1)
。
計(jì)算Score :在t時(shí)刻,Decoder的隱藏狀態(tài)h(t-1)
與編碼部分產(chǎn)生的每個(gè)時(shí)間步的隱藏狀態(tài)h(s)
(來(lái)自雙向RNNs的拼接狀態(tài))進(jìn)行計(jì)算,以得到一個(gè)Score。
計(jì)算Attention Weight :將所有計(jì)算得到的Score進(jìn)行softmax歸一化,得到每個(gè)輸入詞對(duì)應(yīng)的Attention Weight。
計(jì)算Context Vector :使用得到的Attention Weight與對(duì)應(yīng)的h(s)
進(jìn)行加權(quán)求和(reduce_sum),得到Context Vector。這個(gè)Context Vector是輸入序列中各個(gè)詞根據(jù)當(dāng)前Decoder隱藏狀態(tài)重新加權(quán)得到的表示。這個(gè)Vector包含了輸入序列中重要信息的加權(quán)表示,用于指導(dǎo)Decoder生成當(dāng)前時(shí)刻的輸出。
三、Transformer 工作原理
Transformer: 通常 Attention 會(huì)與傳統(tǒng)的模型配合起來(lái)使用, 但 Google 的一篇論文《?Attention Is All You Need?》中提出只需要注意力就可以完成傳統(tǒng)模型所能完成的任務(wù) ,從而擺脫傳統(tǒng)模型對(duì)于長(zhǎng)程依賴無(wú)能為力的問(wèn)題并使得模型可以并行化,并基于此提出 Transformer 模型。
Transformer 架構(gòu):主要由輸入部分(輸入輸出嵌入與位置編碼)、多層編碼器、多層解碼器以及輸出部分(輸出線性層與Softmax)四大部分組成。
輸入部分:
源文本嵌入層: 將源文本中的詞匯數(shù)字表示轉(zhuǎn)換為向量表示,捕捉詞匯間的關(guān)系。
位置編碼器: 為輸入序列的每個(gè)位置生成位置向量,以便模型能夠理解序列中的位置信息。
目標(biāo)文本嵌入層(在解碼器中使用) :將目標(biāo)文本中的詞匯數(shù)字表示轉(zhuǎn)換為向量表示。
編碼器部分:
由N個(gè)編碼器層堆疊而成。
每個(gè)編碼器層由兩個(gè)子層連接結(jié)構(gòu)組成 :第一個(gè)子層是一個(gè)多頭自注意力子層,第二個(gè)子層是一個(gè)前饋全連接子層。每個(gè)子層后都接有一個(gè)規(guī)范化層和一個(gè)殘差連接。
解碼器部分:
由N個(gè)解碼器層堆疊而成。
每個(gè)解碼器層由三個(gè)子層連接結(jié)構(gòu)組成 :第一個(gè)子層是一個(gè)帶掩碼的多頭自注意力子層,第二個(gè)子層是一個(gè)多頭注意力子層(編碼器到解碼器),第三個(gè)子層是一個(gè)前饋全連接子層。每個(gè)子層后都接有一個(gè)規(guī)范化層和一個(gè)殘差連接。
輸出部分:
線性層: 將解碼器輸出的向量轉(zhuǎn)換為最終的輸出維度。
Softmax層: 將線性層的輸出轉(zhuǎn)換為概率分布,以便進(jìn)行最終的預(yù)測(cè)。
工作原理: 左邊是N個(gè)編碼器,右邊是N個(gè)解碼器,圖中Transformer 的N為6。
Encoder(編碼器):
圖中Transformer 的編碼器部分一共6個(gè)相同的編碼器層組成。
每個(gè)編碼器層都有兩個(gè)子層,即多頭自注意力層(Multi-Head Attention)層和逐位置的前饋神經(jīng)網(wǎng)絡(luò) (Position-wise Feed-Forward Network)。
在每個(gè)子層后面都有殘差連接(圖中的虛線)和層歸一化(LayerNorm)操作,二者合起來(lái)稱為Add&Norm操作。
Decoder(解碼器):
圖中Transformer 的解碼器部分同樣一共6個(gè)相同的解碼器層組成。
每個(gè)解碼器層都有三個(gè)子層,掩蔽自注意力層(Masked Self-Attention)、Encoder-Decoder注意力層、逐位置的前饋神經(jīng)網(wǎng)絡(luò) 。
同樣,在每個(gè)子層后面都有殘差連接(圖中的虛線)和層歸一化(LayerNorm)操作,二者合起來(lái)稱為Add&Norm操作。
文章轉(zhuǎn)自微信公眾號(hào)@架構(gòu)師帶你玩轉(zhuǎn)AI
我們有何不同?
API服務(wù)商零注冊(cè)
多API并行試用
數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率
查看全部API→
??
熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API