Transformer介紹:為何它是現今NLP技術發展的基石?

機器翻譯架構

Transformer可應用在許多任務當中,本篇文章以機器翻譯為舉例說明。先介紹一般機器翻譯的作法,假設我們要進行中翻英的任務,輸入一段文字像是這部電影非常好看,編碼器就會處理這段文字,其目的為讓機器了解這段文字,最終編碼器的產出就是編碼訊息,或是另稱為潛在表示法。之後再將編碼訊息輸入到解碼器當中,讓機器進行解碼,將編碼訊息轉換為文字字串,由於我們是進行中翻英的任務,最後就會輸出得到英文,This movie is very nice。

機器翻譯作法為輸入文字到編碼器,進行文字編碼,之後將編碼後的訊息傳到解碼器,經由解碼後可得到翻譯完的結果。

傳統RNN與Transformer差別

整體架構差異

利用傳統RNN進行機器翻譯的作法,最主要是透過RNN採用時序性類神經網路進行計算,在做法上是需要一個接著一個的計算方式,最終才能計算得到結果。

以這樣的方式計算,會有以下不足的地方

1.在編碼器的部分須依照時序計算,需要一個接著一個處理輸入的文字訊息,例如輸入的字串是這部電影非常好看,就要從第一個字詞算到最後一個字詞,也就是從”這”計算到”看”,因此,在計算上效率會比較低,無法加速運算,這也是傳統RNN的限制。

2.在解碼器的部分,解碼器主要是獲得編碼訊息後,進行解碼,才會得到我們想要的輸出內容,但是以RNN計算的問題在於編碼器的訊息是比較單一,可能在輸入文字字串很長的時候,有些訊息會散失掉,最終造成翻譯能力較低。

利用傳統遞迴類神經網路進行運算會有以下的限制
1.編碼器須依照時序做計算,例如從第一個字詞計算到第十個字詞,無法加速計算。
2.解碼器獲得來自編碼器的訊息太單一,翻譯能力受限。

Transfomer作法的部分可以改善RNN不足的地方,其計算方式跳脫傳統的時序性網路,採用Google定義的QKV以及注意力機制,可同時平行運算大幅增加運算效率。另外在解碼器部分,隨著不同解碼的字詞會有不一樣的編碼訊息,因此,整體編碼訊息不是單一固定的,而是會隨著不同字詞而不斷變動,在編碼訊息而言就會比較豐富,在訊息傳遞上也會比較有效,提升機器的翻譯能力。

Transformer可改善RNN限制的部分:
1.編碼器在運算上可同時平行運算,大幅增加計算效率。
2.解碼器獲得的編碼訊息會針對不同字詞而有所變動,讓編碼訊息有效且豐富,提升機器翻譯能力。

RNN與Transformer在架構上的差異如同以上所述,以下進一步帶您了解作法上的差異。

編碼器差異

針對編碼器的部分提到,傳統RNN是時序性的網路計算方式,以剛剛的輸入這部電影非常好看為例,如果我們要得到這句話最後一個字詞的編碼訊息,例如”看”,那就要有前一個字詞的編碼訊息,像是”好”,為了要計算好的編碼訊息,又要有常的編碼訊息,依此類推,因此,我們就會發現到在計算時,一定要一個一個從頭計算到尾,這樣就會大幅減低運算效率。而Transfomer的計算方式為注意力的計算機制,可計算不同字詞之間的關聯性,同步處理這些計算,進而提升運算效率。

傳統RNN在編碼器運算上,需要依照時序性計算。
例如:要計算第最後一個字詞如看的隱藏層,一定要有前一個好的隱藏層訊息,要計算好的隱藏層訊息,就要有常的隱藏層訊息,依此類推。

解碼器差異

針對RNN而言,是輸入一段文字之後,經過編碼器的運算,最終得到一個編碼訊息,在解碼器運算時,待預測輸出的字詞都是接收到相同的編碼訊息,例如先前的機器翻譯例子,如果我們現在是要翻譯得到This movie這個字詞,則在解碼器上是接收這部電影非常好看的整體編碼訊息上。

在解碼器上傳統RNN是輸入文字之後,經過編碼器的運算,最終得到一個編碼訊息。因此在解碼器運算上,要預測字詞時,全部都是接收相同編碼訊息。
例如: 要翻譯得到This movie的字詞,就要先輸入完整字串這部電影非常好看編碼完成的訊息。

在Transformer解碼器上,如果要翻譯得到This movie的字詞,先前提到解碼器就會針對不同預測字詞有各自編碼訊息,因此如果要翻譯得到This movie的字詞,就會較關注在這部電影的編碼訊息,這是因為This movie較跟非常好看這個文字比較不相關,這時候就可以不要那麼關注不相關文字的編碼訊息。

在解碼器上Transformer是輸入文字之後,經過編碼器的運算,針對不同預測的字詞會有各自的編碼訊息。
例如: 要翻譯得到This movie字詞,就會較關注這部電影的編碼訊息。

結論

整體RNN與Transformer差異統整在下表中,在編碼器部分,RNN需要時序計算編碼結果,Transormer可同步進行運算。在解碼器部分,RNN在解碼的時候,都是接受到相同編碼訊息,Transformer則是針對不同字詞會有不同編碼訊息,因此,編碼訊息有效且豐富。整體原理機制,RNN是採用時序性類神經網路計算,Transformer是採用注意力的機制進行運算像是Self attention等等的機制。

整體RNN與Transformer差異統整在下表中,在編碼器部分,RNN需要時序計算編碼結果,Transormer可同步進行運算。在解碼器部分,RNN在解碼的時候,都是接受到相同編碼訊息,Transformer則是針對不同字詞會有不同編碼訊息,因此,編碼訊息有效且豐富。整體原理機制,RNN是採用時序性類神經網路計算,Transformer是採用注意力的機制進行運算像是Self attention等等的機制。

[參考資料]:

1.Attention Is All You Need

[類神經網路基礎系列專文]:

1.類神經網路(Deep neural network, DNN)介紹

2.類神經網路—揭開網路架構調整秘辛

3.類神經網路—啟動函數介紹(一): 深入解析Relu與Sigmoid函數:如何影響類神經網路的學習效果?

4.類神經網路—啟動函數介紹(二): 回歸 vs. 分類: 線性函數與Tanh函數之原理探索

5.類神經網路—啟動函數介紹(三): 掌握多元分類的核心技術:不可不知的softmax函數原理

6.類神經網路—啟動函數介紹(四): 如何選擇最適當的啟動函數?用一統整表格讓您輕鬆掌握

7.類神經網路—前向傳播法

8.類神經網路—反向傳播法(一): 白話文帶您了解反向傳播法

9.類神經網路—反向傳播法(二): 淺談梯度

10.類神經網路—反向傳播法(三): 五步驟帶您了解梯度下降法

11.類神經網路—反向傳播法(四): 揭開反向傳播法神秘面紗

12.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法

13.類神經網路—反向傳播法(五): 用等高線圖讓您對學習率更有感

[機器學習基礎系列專文]:

1.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法

2.機器學習面臨的問題種類介紹:回歸與分類

[類神經網路延伸介紹]:

1.卷積類神經網路(Convolution neural network,CNN)介紹

2.遞迴類神經網路(Recurrent neural network,RNN)介紹

[ChatGPT系列專文]:

1.淺談最近非常火紅的ChatGPT背後可能原理機制為何?

2.從ChatGPT探索GPT的原理概念:少量數據的解方—遷移學習技巧