本文試著從直觀的角度解析「Attention模型」,應用場景:原文--譯文,具體選擇 中文--英文,即在將中文翻譯為英文這一場景中,直觀得解析「Attention模型」。

一句中文A翻譯為一句英文B主要是完成以下「兩項任務」:

1. 理解中文A的意思為X;

2. 將意思X用英文表達出來,即英文B;

在用計算機完成以上任務前,需要以下三點「準備工作」:

i. 需要將中文的字和英文的單詞轉換為計算機可以理解(計算)的數(即一個字/單詞對應轉換為一個向量,稱為字向量/單詞向量),然後計算機纔有可能完成以上兩項任務,實現翻譯;

ii. 另外針對一句中文翻譯為一句英文,每個字在句子中的位置也對意思的表達會產生很大的影響,所以每個字在句子中的位置也要定義一個向量來表達(即一個位置對應轉換為一個向量,稱為位置向量);

iii. 將字向量/單詞向量加上位置向量(定義兩種向量的維度相同,如都是512維,便於此處元素相加),能更好更全面的代表這句話,為更好的翻譯做好準備;

「Attention模型」實現以上內容,具體情況如下圖所示:

以下針對「準備工作」、任務1和任務2展開討論;

「準備工作」:字向量/單詞向量、位置向量;此處也稱為詞嵌入,位置編碼;

a. 字向量/單詞向量分別是隨機產生產生的一組512維向量,如字向量,假設選用了3000個常用漢字,每個字對應一個512維的隨機向量,則整個字向量就是一個3000 X 512 的二維矩陣,每一行代表一個字;之所以用隨機且選擇較大維度(如512維),是為了讓生成的各個向量間儘可能的獨立,即沒有相關性,就像「你、我、他、拿、和、中」指代的具體意思在最初定義時是可以隨機互換的,之間也無關係,他們之間的相關性/關係是在該語系語境中根據語義、語法、文化等因素形成的,即上述任務1需要完成的。

b. 位置向量是代表一個字在句子中的位置信息,也定義為一個512維的向量,但並不是隨機產生的,而是根據位置確切計算得來,即一個位置對應轉化為一個512維向量;

c. 假設翻譯時定義一句話最大長度是10個字,則該句話對應的字向量是一個10 X 512的二維矩陣(每一行代表一個字),位置向量也是一個10 X 512的二維矩陣(每一行代表對應字的位置信息);兩個矩陣相加得新的二維矩陣能更好更全面的表達這句話;

任務1:理解一句中文A的意思為X;此處也稱為「編碼」

i. 翻譯時中文中的「你」、「我」大多時候對應著英文的「you」、「me」,如果都是這樣的簡單一一對應關係,那翻譯是很簡單的;而實際情況是絕大多數都是一對多的關係,即同一個中文字在不同的語境中對應的英文是不一樣的單詞,如「和」字在不同語境中翻譯為英文可能是「and」、「sum」、「peace」等。

ii. 一個字從多個可能的意思中選擇一個是根據語境來確定的,即根據這個字與句子中所有字的相關關係來確定;一句話需要計算該句話中每個字與該句子中所有字的相關關係來確定這句話中每個字在該語境中的意思,即確認中文語境;

iii. 在計算相關性之前,對每一個字對應的向量進行相應的線性變換以便於更好的計算相關性確認最終意思;計算完相關性(確認中文語境)並以此更新向量矩陣後(即self-attention,確認每個字在當前這句話的語境下的「確切意思」),再進行一次線性變換,對這個「確切意思」進行再次擬合校準;

具體情況,如下圖所示;

Notes:i~iii是一個處理單元,輸入「向量矩陣」和輸出「新向量矩陣X」的維度是一樣的;完成任務1是以上處理單元循環N次(強化上述效果),設定義N=3(論文中N=8);即由3個處理單元依次鏈接完成任務1,如下圖所示:

任務2:將意思X用英文表達出來,即英文B;此處也稱為「解碼」

和任務1類似,差異在於:

I. 任務1僅考慮中文語境即可,任務2既考慮中文語境(vanilla-attention),也考慮英文語境(self-attention);

ii. 和任務1類似,經過N個處理單元後獲得的向量矩陣,經過「最後一次線性變換」轉換為對應英文語系中各個單詞的值,然後由softmax轉換為是各個英文單詞的概率,完成翻譯;

圖示如下:

整體簡化圖示如下:

附:Attention細節詳解


推薦閱讀:
相關文章