人工神經網絡嘅意涵上,關注機制粵拼gwaan1 zyu3 gei1 zai3英文attention),粵文又可以叫注意力機制,係一種模仿注意力呢種認知功能嘅技術。嘅注意力系統做嘅簡單講係將個腦嘅資訊處理資源集中用嚟處理緊要嘅資訊源,而關注機制重點在於教一個人工智能程式由(大量嘅)輸入數據嗰度揀一部份(重要嗰啲)嚟集中處理,並且忽略或者淡化輸入數據當中冇咁緊要嗰啲。個諗頭就係「個神經網絡應該俾多啲運算資訊落去數據裏面細婗又重要嘅部分」。「乜嘢數據算係緊要」呢一樣可以用梯度下降法(gradient descent)等嘅方法嚟教個程式睇上下文學。

關注機制喺多種機械學習技術當中都有用,好似係自然語言處理電腦視覺都會用到關注機制[1][2]

Transformer 網絡有廣泛噉使用開關注機制嚟實現表現力[1],基於卷積神經網絡嘅電腦視覺系統亦都可以用到關注機制。 

最廣泛噉俾人用嘅關注技術有點積關注(dot-product attention)同埋多頭關注(multi-head attention)兩種,前者使用向量之間嘅點積嚟確定「要關注邊一點」;後者就結合唨幾種唔同嘅關注機制,嚟指導網絡或者子網絡「要關注邊一點」。

語言翻譯示例

編輯

想像家陣要整一部識將英文翻譯法文嘅機械,首先可以用編碼器-解碼器模型挃啲關注單元(attention unit)入去:一個關注單元係一個完全連埋嘅細神經網絡,個單元捉編碼器輸出嘅加權組合饋入解碼器(參見下圖)。

結構示意圖

編輯
  1. x →x實現為查找表,而唔係向量乘法
  2. 呢枚向量通常喺其他項目(例如Glove或Word2Vec)入便預先計算得出嘅
  3. 喺每個時間點,呢枚向量都匯總嗮佢之前啲所有先前單詞。
    最後個h可以當作「句子」向量,又或似Hinton稱呼到嘅Thought_vector
  4. 300 + 300輸入,500輸出
  5. 一層包含有500個神經元,另一層包含有300個神經元
  6. 戥喺學習階段改變開嘅「硬」神經元權重相反,
    呢啲係喺前向嗰陣改變嘅「軟」權重。
  7. 一個完全連埋嘅網絡,佢輸出100長嘅分值
  8. 將100個隱藏向量h級聯到一個矩陣度
  9. c = H * w。
    c係由w加權嘅、h枚向量嘅線性組合

逐步分析

編輯

下低張表顯示到每個時步入便嘅計算。由於英文同法文喺某啲句子有語序上嘅分別,所以示例入便用唨英文當中一句「I love you」(「我愛你」)當輸入,期望輸出法文「je t'aime」(「我你愛」)。為唨清晰,當中使唨特定嘅數值同形狀而唔係純字母。嵌套嘅形狀描述唨h嘅包含性質,其中每隻h包含有佢前面啲單詞嘅歷史記錄(表現成   ……一路喺外便加廓線)。關注分值喺度着料理好(cooked up)嚟獲得所需嘅關注權重。

X h, H:編碼器輸出
呢啲係500×1向量,
攞形狀   表示
yi-1

到關注點嘅
解碼器輸入

對齊分值 w:

關注權重
即softmax(score)

c:

上下文向量,等於H * w

y:

解碼器輸出

1 I   =「I」嘅向量編碼 - - - - -
2 love   =「I love」嘅向量編碼 - - - - -
3 you   =「I love you」嘅向量編碼 - - - - -
4 - - y1仲未存在,

所以改用 

[.63 -3.2 -2.5 .5 .5 ...] [.94 .02 .04 0 0 ...] .94 *  + .02 *  + .04 *  je
5 - - y1 [-1.5 -3.9 .57 .5 .5 ...] [.11 .01 .88 0 0 ...] .11 *  + .01 *  + .88 *  t'
6 - - y2 [-2.8 .64 -3.2 .5 .5 ...] [.03 .95 .02 0 0 ...] .03 *  + .95 *  + .02 *  aime
 
動畫圖畀隻過程。可以睇到編碼-解碼過程。

關注權重矩陣

編輯

用矩陣形式表示返上述翻譯示例嘅關注權重,可以睇到個網絡係點樣根據上下文較返佢個關注焦點嘅。

I love you
je .94 .02 .04
t' .11 .01 .88
aime .03 .95 .02

呢種關注權重嘅表示形式有助於解決神經網絡經常着批評到嘅「可解釋性」問題。用呢種方式分析返啲逐字翻譯而唔考慮語序嘅網絡,就會有對角線佔優嘅矩陣,之唔同於關注機制得到嘅非對角線佔優嘅矩陣。呢種非對角線佔優嘅矩陣表明關注機制喺分析句子成份嗰陣顯得更加熹微細緻。喺第一次通過解碼器嗰陣,94%嘅關注權重擺喺第一個英語單詞「I」(「我」)度,噉網絡就畀出單詞「je」(「我」)。喺解碼器嘅第二遍,88%嘅關注權重擺喺第三個英語單詞「you」(「你」)度,噉就唔係提供「aime」(「愛」)、而係提供「t'」(「你」)。喺最後一次傳遞嗰陣,關注權重嘅95%落返第二個英語單詞「love」(「愛」)度,噉就提供「aime」(「愛」)。

變體

編輯
圖例
標籤 描述
變量X,H,S,T 大寫表示成隻矩陣畀條句而咪畀單隻詞。譬如H係隻矩陣畀隻隱狀態喺編碼器—每棟一隻字詞
S, T S =解碼器隱態, T = embeddings畀目標(target)詞(一般係攞到嘅輸出)。Pytorch Tutorial 變體嘅訓練階段,T交替喺兩隻源之間根據使到嘅teacher forcing程度。T可以係隻embedding畀隻網絡嘅輸出詞,即embedding(argmax(FC output));又可以係有teacher forcing嘅情況下,T係噉係隻embedding畀隻已知嘅正確詞,隻可以係跟恆常嘅forcing概率(比如,二份一)啲出嘅。
X, H H = 編碼器隱態, X = embeddings畀輸入啲詞
W 關注係數
Qw, Kw, Vw, FC 權重矩陣分別畀query, key, vector. FC係全連接嘅(fully connected)權重矩陣
⊕, ⊗ ⊕ = 向量錔接(vector concatenation). ⊗ = 矩陣乘法
corr 逐棟做softmax畀矩陣畀所有啲點積組合。點積可以係:
xi * xj(喺變體3),
hi * sj(喺變體1),
column i ( Kw*H ) * column j ( Qw*S ) (喺變體2),
column i (Kw*X) * column j (Qw*X) (喺變體4);
變體5使到全連接𤗲來決定啲係數。變體係QKV嘅話,點積就得到歸一化憑sqrt(d),其中d係隻高度畀QKV啲矩陣。
  1. 1.0 1.1 Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia (2017-12-05). "Attention Is All You Need". arXiv:1706.03762 [cs.CL].
  2. Ramachandran, Prajit; Parmar, Niki; Vaswani, Ashish; Bello, Irwan; Levskaya, Anselm; Shlens, Jonathon (2019-06-13). "Stand-Alone Self-Attention in Vision Models". arXiv:1906.05909 [cs.CV].
  3. Luong, Minh-Thang (2015-09-20). "Effective Approaches to Attention-based Neural Machine Translation". arXiv:1508.04025v5 [cs.CL].
  4. Neil Rhodes (2021). CS 152 NN—27: Attention: Keys, Queries, & Values. 時間 06:30. 喺2021-12-22搵到.
  5. Alfredo Canziani & Yann Lecun (2021). NYU Deep Learning course, Spring 2020. 時間 05:30. 喺2021-12-22搵到.
  6. Alfredo Canziani & Yann Lecun (2021). NYU Deep Learning course, Spring 2020. 時間 20:15. 喺2021-12-22搵到.
  7. Robertson, Sean. "NLP From Scratch: Translation With a Sequence To Sequence Network and Attention". pytorch.org. 喺2021-12-22搵到.

睇埋

編輯

連出去

編輯