前言
提到注意力機制,你一定會想起Transformer的經典架構圖:
(圖源:https://www.datacamp.com/tutorial/how-transformers-work,這篇文章講得不錯)
初看起來可能一頭霧水:向量對映是啥?編碼器和解碼器是幹啥的?前饋機制是啥?為啥要歸一化?注意力機制是啥?多頭注意力機制又是啥?
針對以上疑問,網上已經有非常多經典的文章,從實現層面進行了闡述,比如:
-
自注意力機制:https://blog.csdn.net/qq_38890412/article/details/120601834
-
自注意力機制:https://blog.csdn.net/weixin_42110638/article/details/134016569
- 向量對映:https://guangzhengli.com/blog/zh/vector-database
本文則採用生活中的例子,嘗試闡述“自注意力機制”和“多頭注意力機制”的概念,希望能增進理解。
什麼是自注意力機制?
想象一下,你正在讀一本書,而你的大腦需要理解每一頁上的內容。自注意力機制就像是你的大腦在閱讀時,不僅關注當前讀到的這一行,還會時不時地回顧之前讀過的內容,以便更好地理解當前的內容。比如,當你讀到一個角色的名字時,你的大腦會自動回想起這個角色之前做過的事情,這樣你就能更好地理解這個角色在故事中的作用。現在,如果我們把這本書的每一頁比作一個序列中的一個元素,那麼自注意力機制就是一種讓模型(比如人工智慧)能夠像人腦一樣,在處理當前元素時,還能考慮到序列中其他元素的影響。具體來說,自注意力機制會讓模型為序列中的每個元素(比如每個單詞)計算一個“權重”,這個權重表示當前元素與其他所有元素(單詞)之間的關聯程度。這樣,模型就可以根據這些權重來決定在生成輸出時,應該更多地關注哪些元素。簡而言之,自注意力機制就是一種讓模型能夠“記住”並“理解”序列中每個元素與其他元素之間關係的技巧,就像你在閱讀時能夠理解和回憶起不同部分之間的聯絡一樣。是不是有點像自我回顧?
什麼是多頭注意力機制?
還是以看書為例,想象你正在閱讀一本歷史書籍,這本書包含了大量的資訊,比如人物、時間、地點,以及所發生的事件。你的大腦在閱讀時,就像是配備了多個“注意力頭”,每個“頭”都在關注不同的資訊型別。-
人物頭:這個“頭”專注於書中出現的人物,比如他們的名字、角色和行為。當你讀到一個人物的名字時,這個“頭”會幫你回憶起這個人物之前做過什麼,他們的性格特點,以及他們在歷史事件中的作用。
-
時間頭:這個“頭”關注時間線,幫你追蹤不同事件和人物的年代順序。當你讀到一個日期時,這個“頭”會幫你把這個日期放在整個歷史脈絡中,理解它在整個時間線上的位置。
-
地點頭:這個“頭”幫助你記住書中提到的地點,比如城市、國家或者戰場。當你讀到一個地點時,這個“頭”會幫你構建起這個地點的地理和文化背景,以及它在歷史事件中的重要性。
- 事件頭:這個“頭”關注書中描述的事件,比如戰爭、政治變革或者社會運動。當你讀到一個新的事件時,這個“頭”會幫你理解這個事件的起因、過程和結果,以及它對歷史程序的影響。
在大模型的實現過程中,多頭可以並行執行,以提升效率。
擴充套件:還有哪些注意力機制?
作為深度學習中用於提高模型效能的關鍵技術,注意力機制種類繁多,每種機制都有其獨特的應用場景和計算方式。除了自注意力機制外,還有:- Soft Attention:透過計算query與所有key之間的相似度,得到一系列權重,這些權重用於加權求和所有value,從而突出重要部分。Soft Attention輸出的是注意力分佈的機率值,因此可以嵌入到網路中進行梯度下降訓練。
- Hard Attention:精確選擇一個或幾個key作為關注點,其餘部分則被忽略,實現高解析度的注意力聚焦。Hard Attention輸出的是one-hot向量,通常依賴於強化學習來訓練,因此無法嵌入到網路中進行梯度下降。
- Local Attention:介於Soft和Hard之間,對區域性範圍內的key進行Soft Attention,從而在全域性與區域性關注之間取得平衡。Local Attention適用於需要區域性關注的場景。
- Hierarchical Attention:採用分層思想,在所有狀態上利用注意力機制,適用於需要多層次關注的複雜任務。
- Dynamic-Convolution Attention:動態卷積注意力機制透過動態地調整卷積核來捕捉輸入特徵的不同部分,適用於影像處理等任務。
- Entity-Aware Attention:實體感知注意力機制專注於識別和關注特定的實體,常用於自然語言處理中的關係抽取和命名實體識別任務。
- Location-Based Attention:基於位置的注意力機制關注輸入資料中的特定位置或區域,適用於影像標註和影片分析等任務。
- Additive Attention:加性注意力機制透過計算query和key之間的點積來衡量相似度,然後透過加權求和得到最終輸出。這種機制在早期的注意力模型中較為常見。
- Scaled Dot-Product Attention:這是Transformer模型中核心的注意力機制之一,透過計算query和key之間的點積相似度,並透過softmax函式轉換為機率分佈,然後用這個機率分佈加權value向量,從而聚焦在最重要(相似度最高)的資訊上。該機制透過縮放點積來避免梯度消失問題,並且能夠有效地捕捉查詢向量與鍵向量之間的相似性。
每種注意力機制都有其獨特的優勢和適用場景,選擇合適的注意力機制可以顯著提升模型的效能和泛化能力。