LLM基礎模型系列:深入注意力機制
大模型技術論文不斷,每個月總會新增上千篇。本專欄??精選論文???重點解讀,主題還是圍繞著行業實踐和工程量產。若在某個環節出現卡點,可以回到??大模型必備腔調???或者??LLM背后的基礎模型???新閱讀。而??最新科技(Mamba,xLSTM,KAN)??則提供了大模型領域最新技術跟蹤。
1.自注意力Self-Attention
自注意力的主要功能是從輸入序列本身生成上下文感知向量,而不是像基于RNN的編碼器-解碼器架構那樣同時考慮輸入和輸出。在繼續往下之前,還是需要幫助大家溫習下之前的內容,也請各位能夠認真的理解自注意力。
在例句中,“火車準時離開車站”中有 7 個Tokens,可以得到一個 7x7 的自注意力得分矩陣。根據圖中描繪的自注意力得分,“火車”一詞更關注“車站”一詞,而不是關注其他單詞。自注意力分數有助于理解給定句子中單詞的上下文含義。例如,這里的“車站”一詞用于火車站的上下文,而不是用于其他上下文,如加油站或公共汽車站等。
自注意力分數是通過余弦相似度計算的,即兩個詞向量的點積。它用于評估兩個詞向量之間的關系強度或比較詞向量之間的相似程度。
這些自注意力分數最后會被按照權重進行加權累加,最終輸出一個向量可以理解為已經將上下文進行編碼。例如,當前詞為“站”這個詞時,與“站”密切相關的詞對總和的貢獻更大(包括“站”這個詞本身),而不相關的詞幾乎不會貢獻任何詞。由此產生的向量作為“站”一詞的新表示,并結合了周圍的上下文。在理解這句話的時候,火車站的上下文信息就被編碼到最后的輸出。
2.多頭注意力Multi-Head Attention
在剛才提到的點積注意力中,如下圖所示,輸入序列通過代表查詢Q、鍵K和值V的三個矩陣進行轉換然后計算自注意力。其中綠色x(2)為一個Embedding向量。
而在多頭注意力的背景下,某種意義三個矩陣可以被看作是一個單獨的注意力頭。增加單個自注意力頭的輸出維度和使用多個注意力頭之間的區別在于模型如何處理數據并從中學習。雖然這兩種方法都增加了模型表示數據不同特征或方面的能力,但它們的方式基本不同。
上面這張圖想表達的是一個輸入的Embedding可以和多套的QKV協同運算。論文上描述的是多個W變換到子空間,但是實現上一般采用分段的方式。大白話說是將Embedding的長度切分為n段分別做運算。比如原來Embedding是512維,假定32頭,那么Embedding 會被切分成512/32=16維,相當于多個子空間。
例如,多頭注意力機制中的每個注意力頭理論上可以學習集中在輸入序列的不同部分,捕捉數據中的各種方面或關系。這種多樣性是多頭注意力成功的關鍵,畢竟每一個Embedding基本上都是高維度,通過多頭分別捕獲數據在各個層面的依賴和關系。
例如有的頭專門捕獲感情因子,有的頭專門捕獲地域特征,有的頭專門捕獲人物關系等等……
多頭注意力也可以更高效,特別是在并行計算方面。每個頭部可以獨立處理,使其非常適合現代硬件加速器,如擅長并行處理的 GPU 或 TPU。簡而言之,使用多個注意力頭不僅僅是為了增加模型的容量,而是為了增強其學習數據中多樣特征和關系的能力。
3.交叉注意力Cross-Attention
除輸入部分外,交叉注意力計算與自注意力相同。交叉注意力說白了就是Q來至一個序列,而KV來至另一個序列。這些序列都是相同維度的嵌入序列。相比之下,自注意力輸入是單個嵌入序列。而交叉注意力則是其中一個序列用作Q輸入,而另一個序列用作K和V輸入。
讀者可以仔細觀察上圖,在傳統的Transformer的架構中,自注意力機制一般在Encoder(下圖左),而交叉注意力機制一般在Decoder(下圖右)。
其實也很好理解,對大模型的提問輸入在Encoder中經過自注意力抽取出查詢的上下文信息,然后輸入為K和V供給給Decoder,而Decoder一方面不斷地工作產生新的Token,一方面不斷地將已經輸出的序列嵌入輸出Q,再次和Encoder的K和V做交叉注意力,供后續的組件吐出下個Token的概率分布。
4.因果注意力Causal-Attention
因果自注意的起源來至序列中某個位置的輸出僅僅依賴于先前位置的已知輸出,而不是基于未來位置。比如說Decoder,它是按照順序產生Token,先產生的Token肯定無法依賴后產生的Token。因此對于處理的每個Token,因果注意力機制屏蔽了未來的Token。所謂的未來,就是在當前Token之后的尚未生成的Tokens。因此原來的自注意力矩陣則成為上三角矩陣,因為有一半是不需要計算的。
例如life生成的時候只需要計算和自己,當生成到life is的時候,則只需要計算is和life,is和自己,如此類推……
值得一提的是,每次生成的注意力矩陣每一行都需要歸一化。這里有個小小的技巧,可以將尚未生成的Token標記為-∞,然后在由softmax進行歸一化。
附錄:多頭注意力的變換過程全景圖
推導步驟1:
推導步驟2:
推導步驟3:
推導步驟4:
本文轉載自 魯班模錘,作者: 魯肅
