自註意力(Self-attention)清晰解釋

2024年2月6日 23点热度 0人点赞

在我們開始之前,先來快速了解一下令牌化(Tokenization)!
原始文本 → 令牌化 → 嵌入(Embedding) → 模型
嵌入是使用一系列數字對每個令牌(大致上是一個單詞)進行有意義的表示。
這種嵌入是我們提供給語言模型的輸入。

語言建模的核心思想是理解語言內部的結構和模式。
通過建模句子中單詞(令牌)之間的關系,我們可以捕捉到文本的上下文和含義。

現在,自註意力是一種溝通機制,幫助建立這些關系,以概率分數表示。
每個令牌都給自己分配最高分,並根據其他令牌的相關性分配額外分數。
你可以把它想象成一個有向圖

要理解這些概率/註意力分數是如何獲得的:
我們必須理解3個關鍵術語:
- 查詢向量(Query Vector)
- 鍵向量(Key Vector)
- 值向量(Value Vector)
這些向量是通過將輸入嵌入乘以三個可訓練的權重矩陣來創建的。

​現在,這裡是一個關於如何將輸入嵌入與鍵(Keys)、查詢(Queries)和值(Values)結合以獲得實際註意力分數的更廣闊的圖景。
在獲取鍵、查詢和值之後,我們將它們合並以創建一組新的、有上下文感知的嵌入。

​使用PyTorch實現自註意力,再簡單不過了!
非常直觀!