天天看點

Self-attention一、背景二、基本知識

一、背景

        本人在閱讀大神文章《Attention is all you need》的過程中,遇到了有關attention方面的内容,尤其是對于self-attention方面的内容饒有興趣,于是做了許多調查,下面是我的一些總結。

二、基本知識

       1、Attention Mechanism

           本文主要講解Self_attention方面的内容,這方面的知識是建立在attention機制之上的,是以若讀者不了解attention mechanism的話,希望你們能去略微了解一下。本人也将在這裡稍微的解釋一下。

           對于encoder-decoder模型,decoder的輸入包括(注意這裡是包括)encoder的輸出。但是根據常識來講,某一個輸出并不需要所有encoder資訊,而是隻需要部分資訊。這句話就是attention的精髓所在。怎麼了解這句話呢?舉個例子來說:假如我們正在做機器翻譯,将“I am a student”翻譯成中文“我是一個學生”。根據encoder-decoder模型,在輸出“學生”時,我們用到了“我”“是”“一個”以及encoder的輸出。但事實上,我們或許并不需要“I am a ”這些無關緊要的資訊,而僅僅隻需要“student”這個詞的資訊就可以輸出“學生”(或者說“I am a”這些資訊沒有“student”重要)。這個時候就需要用到attention機制來分别為“I”、“am”、“a”、“student”賦一個權值了。例如分别給“I am a”指派為0.1,給“student”指派剩下的0.7,顯然這時student的重要性就展現出來了。具體怎麼操作,我這裡就不在講了。

       2、self-attention

           self-attention顯然是attentio機制的一種。上面所講的attention是輸入對輸出的權重,例如在上文中,是I am a student 對學生的權重。self-attention則是自己對自己的權重,例如I am a student分别對am的權重、對student的權重。之是以這樣做,是為了充分考慮句子之間不同詞語之間的語義及文法聯系。

           那麼這個權值應該怎麼計算呢?我在别處看到的圖檔以及我自己的了解如下:

Self-attention一、背景二、基本知識

注釋:q\k\v分别對應attention機制中的Q\K\V,它們是通過輸入詞向量分别和W(Q)、W(K)、W(V)做乘積得到的。其目的主要是計算權值。

Self-attention一、背景二、基本知識

注釋:q與k做點乘、然後歸一化,就得到權值(乘積越大,相似度越高,權值越高)。得到的兩個權值分别與v相乘後,再相加就是輸出。同理就可以得到另一個單詞的輸出。

以上是一個單詞一個單詞的輸出,如果寫成矩陣形式就是Q*K,得到的矩陣歸一化直接得到權值。

繼續閱讀