動手學深度學習PyTorch版-task4

目錄:

task1:https://blog.csdn.net/zahidzqj/article/details/104293563

task2:https://blog.csdn.net/zahidzqj/article/details/104309590

task3:https://blog.csdn.net/zahidzqj/article/details/104319328

task4:本章節

task5:https://blog.csdn.net/zahidzqj/article/details/104324349

task6:https://blog.csdn.net/zahidzqj/article/details/104451810

task8:https://blog.csdn.net/zahidzqj/article/details/104452274

task9:https://blog.csdn.net/zahidzqj/article/details/104452480

task10:https://blog.csdn.net/zahidzqj/article/details/104478668

1 機器翻譯及相關技術

機器翻譯(MT):將一段文本從一種語言自動翻譯爲另一種語言,用神經網絡解決這個問題通常稱爲神經機器翻譯(NMT)。 主要特徵:輸出是單詞序列而不是單個單詞。 輸出序列的長度可能與源序列的長度不同。

主要包括:數據預處理、分詞、建立詞典

Seq2seq模型:

2 注意力機制與Seq2seq模型

當試圖描述一件事情,我們當前時刻說到的單詞和句子和正在描述的該事情的對應某個片段最相關,而其他部分隨着描述的進行,相關性也在不斷地改變。

爲什麼加入注意力:上下文輸入信息都被編碼器限制到固定長度,而解碼器則受到該固定長度的影響,過長截斷,過短補零,這限制了模型的性能,尤其是輸入序列較長時,性能會很差。

attention思想:打破了傳統編碼器-解碼器結構在編解碼時都依賴於內部一個固定長度向量的限制

Attention機制的實現:通過保留LSTM編碼器對輸入序列的中間輸出結果,然後訓練一個模型來對這些輸入進行選擇性的學習並且在模型輸出時將輸出序列與之進行關聯。即輸出序列中的每一項的生成概率取決於在輸入序列中選擇了哪些項。

在文本翻譯任務上,使用attention機制的模型每生成一個詞時都會在輸入序列中找出一個與之最相關的詞集合。之後模型根據當前的上下文向量 (context vectors) 和所有之前生成出的詞來預測下一個目標詞。

在“編碼器—解碼器(seq2seq)”⼀節⾥,解碼器在各個時間步依賴相同的背景變量(context vector)來獲取輸⼊序列信息。當編碼器爲循環神經⽹絡時,背景變量來⾃它最終時間步的隱藏狀態。將源序列輸入信息以循環單位狀態編碼,然後將其傳遞給解碼器以生成目標序列。然而這種結構存在着問題,尤其是RNN機制實際中存在長程梯度消失的問題,對於較長的句子,我們很難寄希望於將輸入的序列轉化爲定長的向量而保存所有的有效信息,所以隨着所需翻譯句子的長度的增加,這種結構的效果會顯著下降。

與此同時,解碼的目標詞語可能只與原輸入的部分詞語有關,而並不是與所有的輸入有關。例如,當把“Hello world”翻譯成“Bonjour le monde”時,“Hello”映射成“Bonjour”,“world”映射成“monde”。在seq2seq模型中,解碼器只能隱式地從編碼器的最終狀態中選擇相應的信息。然而,注意力機制可以將這種選擇過程顯式地建模。

Attention 是一種通用的帶權池化方法,輸入由兩部分構成:詢問(query)和鍵值對(key-value pairs)。

 對於一個query來說,attention layer 會與每一個key計算注意力分數並進行權重的歸一化,輸出的向量o則是value的加權求和,而每個key計算的權重與value一一對應。

爲了計算輸出,我們首先假設有一個函數α 用於計算query和key的相似性,然後可以計算所有的 attention scores a1,…,an by

ai=α(q,ki).

我們使用 softmax函數 獲得注意力權重:

最終的輸出就是value的加權求和:

注意力分配概率分佈值的通用計算過程:

對於採用RNN的Decoder來說,在時刻i,如果要生成yi單詞,我們是可以知道Target在生成Yi之前的時刻i-1時,隱層節點i-1時刻的輸出值Hi-1的,而我們的目的是要計算生成Yi時輸入句子中的單詞“Tom”、“Chase”、“Jerry”對Yi來說的注意力分配概率分佈,那麼可以用Target輸出句子i-1時刻的隱層節點狀態Hi-1去一一和輸入句子Source中每個單詞對應的RNN隱層節點狀態hj進行對比,即通過函數F(hj,Hi-1)來獲得目標單詞yi和每個輸入單詞對應的對齊可能性,這個F函數在不同論文裏可能會採取不同的方法,然後函數F的輸出經過Softmax進行歸一化就得到了符合概率分佈取值區間的注意力分配概率分佈數值。

通過計算餘弦相似度來求eij:

又稱爲餘弦相似性,是通過計算兩個向量的夾角餘弦值來評估他們的相似度。餘弦相似度將向量根據座標值,繪製到向量空間,如最常見的二維空間。

3 Transformer

主流的神經網絡架構如卷積神經網絡(CNNs)和循環神經網絡(RNNs)。讓我們進行一些回顧:

  • CNNs 易於並行化,卻不適合捕捉變長序列內的依賴關係。
  • RNNs 適合捕捉長距離變長序列的依賴,但是卻難以實現並行化處理序列。

爲了整合CNN和RNN的優勢,創新性地使用注意力機制設計了Transformer模型。該模型利用attention機制實現了並行化捕捉序列依賴,並且同時處理序列的每個位置的tokens,上述優勢使得Transformer模型在性能優異的同時大大減少了訓練時間。

圖10.3.1展示了Transformer模型的架構,與9.7節的seq2seq模型相似,Transformer同樣基於編碼器-解碼器架構,其區別主要在於以下三點:

  1. Transformer blocks:將seq2seq模型重的循環網絡替換爲了Transformer Blocks,該模塊包含一個多頭注意力層(Multi-head Attention Layers)以及兩個position-wise feed-forward networks(FFN)。對於解碼器來說,另一個多頭注意力層被用於接受編碼器的隱藏狀態。
  2. Add and norm:多頭注意力層和前饋網絡的輸出被送到兩個“add and norm”層進行處理,該層包含殘差結構以及層歸一化。
  3. Position encoding:由於自注意力層並沒有區分元素的順序,所以一個位置編碼層被用於向序列元素裏添加位置信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章