在科學研究中,從方法論上來講,都應「先見森林,再見樹木」。當前,人工智慧學術研究方興未艾,技術迅猛發展,可謂萬木爭榮,日新月異。對於AI從業者來說,在廣袤的知識森林中,系統梳理脈絡,才能更好地把握趨勢。為此,我們精選國內外優秀的綜述文章,開闢「綜述專欄」,敬請關注。
地址:https://zhuanlan.zhihu.com/p/82312421Transformer是一個利用注意力機制來提高模型訓練速度的模型。關於注意力機制可以參看這篇文章(https://zhuanlan.zhihu.com/p/52119092),trasnformer可以說是完全基於自注意力機制的一個深度學習模型,因為它適用於並行化計算,和它本身模型的複雜程度導致它在精度和性能上都要高於之前流行的RNN循環神經網絡。你可以簡單理解為它是一個黑盒子,當我們在做文本翻譯任務是,我輸入進去一個中文,經過這個黑盒子之後,輸出來翻譯過後的英文。那麼你可能又該問了,那每一個小編碼器裡邊又是什麼呢?
我們放大一個encoder,發現裡邊的結構是一個自注意力機制加上一個前饋神經網絡。我們先來看下self-attention是什麼樣子的。
1、首先,self-attention的輸入就是詞向量,即整個模型的最初的輸入是詞向量的形式。那自注意力機制呢,顧名思義就是自己和自己計算一遍注意力,即對每一個輸入的詞向量,我們需要構建self-attention的輸入。在這裡,transformer首先將詞向量乘上三個矩陣,得到三個新的向量,之所以乘上三個矩陣參數而不是直接用原本的詞向量是因為這樣增加更多的參數,提高模型效果。對於輸入X1(機器),乘上三個矩陣後分別得到Q1,K1,V1,同樣的,對於輸入X2(學習),也乘上三個不同的矩陣得到Q2,K2,V2。2、那接下來就要計算注意力得分了,這個得分是通過計算Q與各個單詞的K向量的點積得到的。我們以X1為例,分別將Q1和K1、K2進行點積運算,假設分別得到得分112和96。3、將得分分別除以一個特定數值8(K向量的維度的平方根,通常K向量的維度是64)這能讓梯度更加穩定,則得到結果如下:4、將上述結果進行softmax運算得到,softmax主要將分數標準化,使他們都是正數並且加起來等於1。5、將V向量乘上softmax的結果,這個思想主要是為了保持我們想要關注的單詞的值不變,而掩蓋掉那些不相關的單詞(例如將他們乘上很小的數字)6、將帶權重的各個V向量加起來,至此,產生在這個位置上(第一個單詞)的self-attention層的輸出,其餘位置的self-attention輸出也是同樣的計算方式。還沒有,論文為了進一步細化自注意力機制層,增加了「多頭注意力機制」的概念,這從兩個方面提高了自注意力層的性能。假設詞彙表維度是6,那麼輸出最大概率詞彙的過程如下:
以上就是Transformer的框架了,但是還有最後一個問題,我們都是到RNN中的每個輸入是時序的,是又先後順序的,但是Transformer整個框架下來並沒有考慮順序信息,這就需要提到另一個概念了:「位置編碼」。Transformer中確實沒有考慮順序信息,那怎麼辦呢,我們可以在輸入中做手腳,把輸入變得有位置信息不就行了,那怎麼把詞向量輸入變成攜帶位置信息的輸入呢?我們可以給每個詞向量加上一個有順序特徵的向量,發現sin和cos函數能夠很好的表達這種特徵,所以通常位置向量用以下公式來表示:最後祭出這張經典的圖,最初看這張圖的時候可能難以理解,希望大家在深入理解Transformer後再看這張圖能夠有更深刻的認識。Transformer就介紹到這裡了,後來的很多經典的模型比如BERT、GPT-2都是基於Transformer的思想。我們有機會再詳細介紹這兩個刷新很多記錄的經典模型。本文目的在於學術交流,並不代表本公眾號贊同其觀點或對其內容真實性負責,版權歸原作者所有,如有侵權請告知刪除。
分享、點讚、在看,給個三連擊唄!