1.attention
與人類學習相同鲤拿,機器學習過程中我們也希望能有側(cè)重點蚂四,核心目標也是從眾多信息中選擇出對當前任務目標更關(guān)鍵的信息沥阳。所以就有了Attention的出現(xiàn)跨琳。
2.Encoder-Decoder框架
在學習attention模型之前,我們先回憶encoder-decoder框架桐罕。
如果我們把中間語義編碼C換成根據(jù)當前輸出來調(diào)整成加入注意力模型的變化的Ci脉让,那么增加了注意力模型的Encoder-Decoder框架如下:
3.Attention機制的本質(zhì)思想
下面我們來看下注意力模型的Encoder-Decoder框架Ci具體是什么。
Attention函數(shù)的本質(zhì)可以被描述為一個查詢(query)到一系列(鍵key-值value)對的映射功炮。
其計算方式是先計算Query和各個Key的相似性或者相關(guān)性(這里用點乘)溅潜,得到每個Key對應Value的權(quán)重系數(shù),然后對Value進行加權(quán)求和死宣,即得到了最終的Attention數(shù)值伟恶。所以本質(zhì)上Attention機制是對Source中元素的Value值進行加權(quán)求和,而Query和Key用來計算對應Value的權(quán)重系數(shù)
Attention機制的具體計算過程毅该,如果對目前大多數(shù)方法進行抽象的話博秫,可以將其歸納為兩個過程:
第一個過程是根據(jù)Query和Key計算權(quán)重系數(shù),第二個過程根據(jù)權(quán)重系數(shù)對Value進行加權(quán)求和眶掌。
而第一個過程又可以細分為兩個階段:
第一個階段根據(jù)Query和Key計算兩者的相似性或者相關(guān)性挡育,求相似性方法有點乘,權(quán)重朴爬,余弦相似性等即寒;
第二個階段對第一階段的原始分值進行歸一化處理;
可以將Attention的計算過程抽象為三個階段。
4.例子
我們以李宏毅深度學習授課資料:Attention-based Model所講述的機器翻譯為例母赵。
將‘機器學習’翻譯為‘machine learning’
attention其實就是一個當前的輸入與輸出的匹配度逸爵,即為h1和z0的匹配度。
h1為當前時刻RNN的隱層輸出向量凹嘲,而不是原始輸入的詞向量师倔,z0初始化向量,如rnn中的初始記憶周蹭。
第一步:求z與h的相似性得到a
第二步:softmax歸一化處理得到概率值a^
第三步:對h加權(quán)求和得c
以上便是求attention得3個過程趋艘。
那么再算出了co之后,我們就把這個向量作為rnn的輸入(如果我們decoder用的是RNN的話)凶朗,然后第一個時間點的輸出的編碼z1由co和初始狀態(tài)z0共同決定瓷胧。
將z1替代z0做下一步計算。再和每一個輸入的encoder的vector計算匹配度棚愤,然后softmax搓萧,計算向量加權(quán),作為第二時刻的輸入……如此循環(huán)直至結(jié)束遇八。
5.Self-Attention
Self-Attention是Attention的特殊形式矛绘。自注意模型其實就是我們前面的query、key和value是相等的刃永。在序列內(nèi)部做Attention货矮,尋找序列內(nèi)部的聯(lián)系。
例如輸入一個句子斯够,那么里面的每個詞都要和該句子中的所有詞進行attention計算囚玫。目的是學習句子內(nèi)部的詞依賴關(guān)系,捕獲句子的內(nèi)部結(jié)構(gòu)读规。
6.Self-Attention GAN中的Self-Attention模型
在這個模型中用的就是一個自監(jiān)督模塊關(guān)注全局信息抓督,它的Q、K束亏、V都是相同的是convolution feture map,再計算attention