深度學習模型Transformer核心組件—自注意力機制

第一章:人工智能之不同數據類型及其特點梳理
第二章:自然語言處理(NLP):文本向量化從文字到數字的原理
第三章:循環神經網絡RNN:理解 RNN的工作機制與應用場景(附代碼)
第四章:循環神經網絡RNN、LSTM以及GRU 對比(附代碼)
第五章:理解Seq2Seq的工作機制與應用場景中英互譯(附代碼)
第六章:深度學習架構Seq2Seq-添加并理解注意力機制(一)
第七章:深度學習架構Seq2Seq-添加并理解注意力機制(二)
第八章:深度學習模型Transformer初步認識整體架構
第九章:深度學習模型Transformer核心組件—自注意力機制

假設我們有一個想要翻譯的輸入句子:“這只動物沒有穿過街道,因為它太累了。”

這句話中的“它”指的是什么?是指“街道”還是“動物”呢?對于人類來說,這是一個簡單的問題,但對于算法而言則不然。

當模型處理到單詞“它”時,自注意力機制允許模型將“它”與“動物”關聯起來。

當模型處理每個單詞(即輸入序列中的每個位置)時,自注意力機制允許模型查看輸入序列中的其他位置,以尋找有助于為該單詞生成更好編碼的線索。

如果你對RNN(循環神經網絡)有所了解,可以想想維持隱藏狀態是如何讓RNN將其對之前處理過的詞或向量的表示與當前正在處理的詞結合起來的。自注意力就是Transformer用來將其他相關詞的理解融入到當前正在處理的詞中的方法。

一、自注意力機制工作原理

自注意力機制(Self-Attention),也稱為內部注意力機制(Intra-Attention),是Transformer模型的核心組成部分。它允許模型在處理序列數據時,能夠考慮到序列中不同位置之間的關系,從而有效地捕捉長距離依賴。
在這里插入圖片描述

  1. 輸入表示:假設我們有一個輸入序列 X = ( x 1 , x 2 , . . . , x n ) X = (x_1, x_2, ..., x_n) X=(x1?,x2?,...,xn?),其中每個 x i x_i xi?都是一個向量(例如詞嵌入)。

  2. 線性變換:對輸入序列中的每個元素應用三個不同的線性變換(通過學習得到的權重矩陣),生成查詢(Query)、鍵(Key)和值(Value)向量:

    • 查詢向量 Q = X W Q Q = XW_Q Q=XWQ?
    • 鍵向量 K = X W K K = XW_K K=XWK?
    • 值向量 V = X W V V = XW_V V=XWV?
      其中, W Q , W K , W V W_Q, W_K, W_V WQ?,WK?,WV? 是模型需要學習的參數矩陣。
      在這里插入圖片描述
  3. 計算注意力分數:對于序列中的每個位置 i i i,使用 Q K ? QK^\top QK?
    點積來計算當前位置與其他所有位置之間的相似度(即注意力分數Score)。
    在這里插入圖片描述

    這可以通過以下公式完成:
    Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk? ?QKT?)V
    這里, d k d_k dk? 是鍵向量的維度,分母中的 d k \sqrt{d_k} dk? ? 用于縮放,避免點積結果過大導致softmax函數飽和。
    在這里插入圖片描述

  4. 加權求和:根據計算出的注意力分數,為每個位置的值向量分配權重,并進行加權求和,得到輸出序列 Z Z Z
    在這里插入圖片描述

二、自注意力推導示例

假設輸入序列為兩個詞,維度 d k = 3 d_k=3 dk?=3
X = [ 1 0 1 0 1 1 ] , W Q = [ 1 0 0 1 1 0 ] , W K = [ 0 1 1 0 0 1 ] , W V = [ 1 1 0 1 1 0 ] X = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ \end{bmatrix}, \quad W^Q = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 0 \\ \end{bmatrix}, \quad W^K = \begin{bmatrix} 0 & 1 \\ 1 & 0 \\ 0 & 1 \\ \end{bmatrix}, \quad W^V = \begin{bmatrix} 1 & 1 \\ 0 & 1 \\ 1 & 0 \\ \end{bmatrix} X=[10?01?11?],WQ= ?101?010? ?,WK= ?010?101? ?,WV= ?101?110? ?

  1. 計算 Q、K、V
    Q = X W Q = [ 2 0 1 1 ] , K = X W K = [ 1 2 1 1 ] , V = X W V = [ 2 1 1 1 ] Q = XW^Q = \begin{bmatrix} 2 & 0 \\ 1 & 1 \end{bmatrix}, \quad K = XW^K = \begin{bmatrix} 1 & 2 \\ 1 & 1 \end{bmatrix}, \quad V = XW^V = \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix} Q=XWQ=[21?01?],K=XWK=[11?21?],V=XWV=[21?11?]

  2. 計算注意力分數
    Q K ? 3 = 1 3 [ 4 2 2 2 ] \frac{QK^\top}{\sqrt{3}} = \frac{1}{\sqrt{3}} \begin{bmatrix} 4 & 2 \\ 2 & 2 \end{bmatrix} 3 ?QK??=3 ?1?[42?22?]

  3. Softmax 歸一化
    Softmax ( [ 4 / 3 2 / 3 2 / 3 2 / 3 ] ) ≈ [ 0.88 0.12 0.5 0.5 ] \text{Softmax}\left(\begin{bmatrix} 4/\sqrt{3} & 2/\sqrt{3} \\ 2/\sqrt{3} & 2/\sqrt{3} \end{bmatrix}\right) \approx \begin{bmatrix} 0.88 & 0.12 \\ 0.5 & 0.5 \end{bmatrix} Softmax([4/3 ?2/3 ??2/3 ?2/3 ??])[0.880.5?0.120.5?]

  4. 加權求和
    Attention ( Q , K , V ) = [ 0.88 0.12 0.5 0.5 ] @ [ 2 1 1 1 ] = [ 0.88 × 2 + 0.12 × 1 0.88 × 1 + 0.12 × 1 0.5 × 2 + 0.5 × 1 0.5 × 1 + 0.5 × 1 ] = [ 1.88 1.0 1.5 1.0 ] \text{Attention}(Q, K, V) =\begin{bmatrix} 0.88 & 0.12 \\ 0.5 & 0.5 \end{bmatrix} @ \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix}= \begin{bmatrix} 0.88 \times 2 + 0.12 \times 1 & 0.88 \times 1 + 0.12 \times 1 \\ 0.5 \times 2 + 0.5 \times 1 & 0.5 \times 1 + 0.5 \times 1 \end{bmatrix} = \begin{bmatrix} 1.88 & 1.0 \\ 1.5 & 1.0 \end{bmatrix} Attention(Q,K,V)=[0.880.5?0.120.5?]@[21?11?]=[0.88×2+0.12×10.5×2+0.5×1?0.88×1+0.12×10.5×1+0.5×1?]=[1.881.5?1.01.0?]

W Q W^Q WQ W K W^K WK W V W^V WV,這三個 W W W 怎么得來的,有什么作用,為什么要和 X 分別相乘

三、如何得到 W Q W^Q WQ W K W^K WK W V W^V WV

  • 初始化與學習:這些權重矩陣通常是在訓練開始時隨機初始化的,并通過反向傳播算法在訓練過程中不斷調整以最小化損失函數。換句話說,它們是通過訓練過程自動學習得到的,目的是為了優化模型在特定任務上的性能。

  • 作用

    • W Q W^Q WQ (Query Weight Matrix):用于將輸入向量 X X X轉換為查詢向量 Q Q Q。查詢向量代表了對于某個位置的信息“查詢”或需求。
    • W K W^K WK (Key Weight Matrix):用于將輸入向量 X X X轉換為鍵向量 K K K。鍵向量是用來與查詢向量進行比較,以確定哪些部分的信息是相關的。
    • W V W^V WV (Value Weight Matrix):用于將輸入向量 X X X轉換為值向量 V V V。值向量包含了實際的內容信息,這些信息將根據注意力分數被加權組合。

四、 W Q W^Q WQ W K W^K WK W V W^V WV為什么要與 X X X 分別相乘

  1. 不同視角的理解:通過使用不同的權重矩陣將相同的輸入向量 X X X映射到不同的空間,模型可以從多個角度理解輸入數據。例如,一個單詞在一個句子中可能扮演多種角色(如主語、賓語等),通過不同的變換可以捕捉到這些多樣的信息。

  2. 增強表達能力:這種機制極大地增強了模型的表達能力。因為即使面對相同的輸入,通過不同的權重矩陣可以產生多樣化的輸出,從而使得模型能夠更靈活地捕捉序列中的復雜模式和依賴關系。

  3. 實現自我關注機制:在自注意力機制中, Q Q Q K K K之間的交互(即點積操作)用于衡量輸入序列中各元素間的相關性或相似度。然后,基于這些相似度得分對 V V V進行加權求和,以生成每個位置的新表示。這樣做的好處是可以讓模型在構建每個位置的表示時考慮到整個序列的信息,而不是僅僅局限于局部鄰域內的信息。

總之, W Q W^Q WQ W K W^K WK W V W^V WV的存在是為了將輸入向量映射到不同的表示空間,從而使得模型能夠在計算自注意力時從多個維度理解輸入數據。這一過程不僅提高了模型處理序列數據的能力,還使其能夠有效地捕捉長距離依賴關系。

五、Q為什么要和 K 的轉置 K T K^T KT求點積

(Q)與 K T K^T KT(即鍵(K)的轉置)點積這一操作是為了計算注意力分數,也就是衡量輸入序列中各個元素之間的相似度或關聯程度。
在這里插入圖片描述

  1. 計算相似度:在自注意力機制中,我們需要一種方法來量化序列中每個位置與其他所有位置之間的相關性或相似度。通過將查詢向量 Q Q Q 與鍵向量 K K K 的轉置 K T K^T KT 求點積,我們可以得到一個矩陣,其中每個元素代表了一個位置的查詢向量與另一個位置的鍵向量之間的點積。這個點積可以看作是一種相似度得分,表示兩個向量方向上的接近程度。

  2. 維度匹配:假設我們有一個輸入序列長度為 n n n,每個位置對應的向量維度為 d k d_k dk? 。那么, Q Q Q K K K 都是形狀為 [ n , d k ] [n, d_k] [n,dk?] 的矩陣。為了使 Q Q Q 中的每個查詢向量能夠與 K K K 中的每個鍵向量進行比較,我們需要將 K K K 轉置成形狀為 [ d k , n ] [d_k, n] [dk?,n] 的矩陣。這樣,當執行 Q × K T Q \times K^T Q×KT 時,結果就是一個形狀為 [ n , n ] [n, n] [n,n] 的矩陣,其中每個元素 A i j A_{ij} Aij? 表示第 i i i 個位置的查詢向量與第 j j j 個位置的鍵向量之間的相似度得分。

  3. 生成注意力權重:一旦得到了相似度得分矩陣,接下來會通過softmax函數將其轉換為概率分布,這些概率就是所謂的“注意力權重”。它們決定了在計算最終輸出時,每個位置的值向量 V V V 應該被賦予多少權重。換句話說,它決定了哪些位置的信息對于當前位置最為重要。

  4. 加權求和得到輸出:最后,使用上述獲得的注意力權重對值向量 V V V 進行加權求和,從而產生新的表示形式,該表示綜合了整個序列的信息,并且更加側重于那些被認為更重要的位置。

綜上所述, Q Q Q K T K^T KT 點積是自注意力機制中用于計算輸入序列中各個元素之間相似度的核心步驟。這一步驟允許模型動態地評估并整合來自序列內不同位置的信息,從而捕捉到復雜的模式和依賴關系。

六、 Q K ? QK^\top QK?為什么要除以 d k \sqrt{d_k} dk? ?

防止梯度過大或過小

  1. 梯度消失或爆炸問題:當輸入向量的維度較高時,點積的結果可能會非常大或者非常小。這會導致softmax函數的輸出變得極端(接近0或1),從而引發梯度消失或梯度爆炸的問題。這是因為softmax函數對輸入的尺度非常敏感,特別是在其輸入值較大或較小時。

  2. 歸一化效果:通過除以 d k \sqrt{d_k} dk? ?,可以有效地將點積的結果控制在一個合理的范圍內。這樣做有助于保持softmax函數輸入值的穩定性,使其不會因為輸入過大而飽和到極端值,也不會因為輸入過小而導致所有輸出幾乎相同的情況。

實踐中的影響

  • 訓練穩定性:適當縮放可以提高訓練過程的穩定性,使得模型更容易收斂。
  • 性能提升:通過這種方式,可以改善模型的表現,因為它有助于維持每一層輸入的尺度一致,避免了某些層的激活值過于膨脹或收縮。

示例數據

第一組:未縮放時 - 注意力權重趨向極端分布

假設我們有如下輸入序列,每個詞被表示為一個4維向量,并且這些向量之間的差異較大:

  • x 1 = [ 1 , 2 , 3 , 4 ] x_1 = [1, 2, 3, 4] x1?=[1,2,3,4]
  • x 2 = [ 5 , 6 , 7 , 8 ] x_2 = [5, 6, 7, 8] x2?=[5,6,7,8]
  • x 3 = [ 9 , 10 , 11 , 12 ] x_3 = [9, 10, 11, 12] x3?=[9,10,11,12]

這些向量通過線性變換得到查詢 Q Q Q、鍵 K K K(這里為了簡化,直接使用原始向量作為 Q Q Q K K K)。

計算 Q K ? QK^\top QK?
Q K ? = [ 1 2 3 4 5 6 7 8 9 10 11 12 ] [ 1 5 9 2 6 10 3 7 11 4 8 12 ] = [ 30 70 110 70 174 278 110 278 446 ] QK^\top = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{bmatrix} \begin{bmatrix} 1 & 5 & 9 \\ 2 & 6 & 10 \\ 3 & 7 & 11 \\ 4 & 8 & 12 \end{bmatrix} = \begin{bmatrix} 30 & 70 & 110 \\ 70 & 174 & 278 \\ 110 & 278 & 446 \end{bmatrix} QK?= ?159?2610?3711?4812? ? ?1234?5678?9101112? ?= ?3070110?70174278?110278446? ?

應用Softmax函數到每一行上,得到注意力權重矩陣:
softmax ( Q K ? ) ≈ [ 0.001 0.018 0.981 0.000 0.002 0.998 0.000 0.000 1.000 ] \text{softmax}(QK^\top) \approx \begin{bmatrix} 0.001 & 0.018 & 0.981 \\ 0.000 & 0.002 & 0.998 \\ 0.000 & 0.000 & 1.000 \end{bmatrix} softmax(QK?) ?0.0010.0000.000?0.0180.0020.000?0.9810.9981.000? ?
可以看到,在這種情況下,未經縮放的點積結果導致了非常極端的注意力權重分布。特別是對于第三個位置,幾乎所有的注意力都集中在自身上,而忽略了其他位置的信息。

第二組:縮放后 - 權重分布更平緩

現在考慮相同的輸入序列,但在計算 Q K ? QK^\top QK?后除以 d k \sqrt{d_k} dk? ?,其中 d k = 4 d_k=4 dk?=4,因此縮放因子是 1 2 \frac{1}{2} 21?

重新計算 Q K ? / d k QK^\top/\sqrt{d_k} QK?/dk? ?
Q K ? d k = 1 2 × [ 30 70 110 70 174 278 110 278 446 ] = [ 15 35 55 35 87 139 55 139 223 ] \frac{QK^\top}{\sqrt{d_k}} = \frac{1}{2} \times \begin{bmatrix} 30 & 70 & 110 \\ 70 & 174 & 278 \\ 110 & 278 & 446 \end{bmatrix} = \begin{bmatrix} 15 & 35 & 55 \\ 35 & 87 & 139 \\ 55 & 139 & 223 \end{bmatrix} dk? ?QK??=21?× ?3070110?70174278?110278446? ?= ?153555?3587139?55139223? ?

接著應用Softmax函數到每一行上,得到調整后的注意力權重矩陣:
softmax ( Q K ? d k ) ≈ [ 0.011 0.269 0.720 0.002 0.092 0.906 0.000 0.024 0.976 ] \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) \approx \begin{bmatrix} 0.011 & 0.269 & 0.720 \\ 0.002 & 0.092 & 0.906 \\ 0.000 & 0.024 & 0.976 \end{bmatrix} softmax(dk? ?QK??) ?0.0110.0020.000?0.2690.0920.024?0.7200.9060.976? ?

對比與解釋

  • 未縮放的情況:在第一組的例子中,由于點積結果非常大,導致Softmax輸出的概率分布極其不均衡,某些位置幾乎完全占據了注意力權重,這不利于模型學習序列中的復雜依賴關系。

  • 縮放的情況:第二組的數據展示了當應用縮放因子后,Softmax函數產生的概率分布更加平滑。雖然第三個位置仍然獲得了較高的注意力權重,但相比于未縮放情況下的極端分布,這里的權重分布明顯更加合理和平緩,允許模型更好地捕捉不同位置之間的關系。

七、不縮放為什么會導致梯度消失?

  1. Softmax函數的導數
    Softmax函數的導數依賴于其自身的輸出。具體來說,如果某個位置的Softmax輸出接近1,則該位置對應的梯度將會很小,因為Softmax函數在其輸出接近1的地方幾乎是平坦的。相反,對于那些輸出接近0的位置,其梯度也會非常小,因為這些位置對最終輸出的影響微乎其微。

  2. 梯度傳播
    在反向傳播過程中,梯度通過網絡層逐層傳遞。如果某一層的激活值(在這里是Softmax的輸出)導致梯度變得非常小,那么這一小部分梯度將被進一步傳播到前面的層,導致前層接收到的用于參數更新的信號極其微弱。這種情況稱為“梯度消失”。

  3. 極端分布的影響
    當注意力權重分布極為不均衡(例如,一個位置幾乎占據了所有注意力,而其他位置的注意力權重接近0),這會導致大部分路徑上的梯度變得極小。由于梯度是參數更新的關鍵依據,過小的梯度意味著模型難以有效調整其權重以適應訓練數據,從而可能導致訓練停滯或者學習速度顯著減慢。

上面的例子,未縮放的情況
softmax ( Q K ? ) ≈ [ 0.001 0.018 0.981 0.000 0.002 0.998 0.000 0.000 1.000 ] \text{softmax}(QK^\top) \approx \begin{bmatrix} 0.001 & 0.018 & 0.981 \\ 0.000 & 0.002 & 0.998 \\ 0.000 & 0.000 & 1.000 \end{bmatrix} softmax(QK?) ?0.0010.0000.000?0.0180.0020.000?0.9810.9981.000? ?

在這種情況下,我們可以觀察到第三行的注意力權重幾乎完全集中在最后一個位置(即權重為1.000)。這意味著對于第三個位置,它幾乎不會考慮來自其他位置的信息,這不僅限制了模型捕捉長距離依賴的能力,而且由于Softmax輸出接近1,其梯度也將非常小。具體來說:

  • 對于第三行,Softmax輸出為[0.000, 0.000, 1.000],這意味著在反向傳播過程中,對于第一和第二位置,由于它們的注意力權重接近0,所以從損失函數回傳到這兩個位置的梯度也非常小。
  • 同樣地,對于那些獲得較高注意力權重的位置(如第三個位置),盡管它們會接收到來自后續層的一些梯度信息,但由于Softmax在其輸出接近1的區域幾乎是平坦的,因此這部分梯度也非常有限。

這種現象在整個網絡中傳播時,會導致前面的層接收到的梯度信號極其微弱,進而導致梯度消失問題,使得模型難以有效地更新其參數。

八、為什么是除以 d k \sqrt{d_k} dk? ?,不是其他其他變量或者數字

在Transformer模型中,將查詢(Q)和鍵(K)的點積結果除以 d k \sqrt{d_k} dk? ?的主要原因是為了控制點積的方差,防止因維度 d k d_k dk?增大導致Softmax函數輸入值過大而引發的梯度消失問題

1. 數學推導:點積的方差分析

假設查詢向量 Q Q Q和鍵向量 K K K的每個元素是獨立同分布的隨機變量,均值為0,方差為1:
E [ Q i ] = E [ K j ] = 0 , Var ( Q i ) = Var ( K j ) = 1. \mathbb{E}[Q_i] = \mathbb{E}[K_j] = 0, \quad \text{Var}(Q_i) = \text{Var}(K_j) = 1. E[Qi?]=E[Kj?]=0,Var(Qi?)=Var(Kj?)=1.

則點積 Q ? K = ∑ i = 1 d k Q i K i Q \cdot K = \sum_{i=1}^{d_k} Q_i K_i Q?K=i=1dk??Qi?Ki?的方差為:
Var ( Q ? K ) = ∑ i = 1 d k Var ( Q i K i ) ( 獨立項方差相加 ) = d k ? E [ Q i 2 K i 2 ] ( 因? E [ Q i ] = E [ K i ] = 0 ) = d k ? Var ( Q i ) Var ( K i ) ( 獨立性 ) = d k ? 1 ? 1 = d k . \begin{aligned} \text{Var}(Q \cdot K) &= \sum_{i=1}^{d_k} \text{Var}(Q_i K_i) \quad (\text{獨立項方差相加}) \\ &= d_k \cdot \mathbb{E}[Q_i^2 K_i^2] \quad (\text{因}\ \mathbb{E}[Q_i] = \mathbb{E}[K_i] = 0) \\ &= d_k \cdot \text{Var}(Q_i) \text{Var}(K_i) \quad (\text{獨立性}) \\ &= d_k \cdot 1 \cdot 1 = d_k. \end{aligned} Var(Q?K)?=i=1dk??Var(Qi?Ki?)(獨立項方差相加)=dk??E[Qi2?Ki2?](?E[Qi?]=E[Ki?]=0)=dk??Var(Qi?)Var(Ki?)(獨立性)=dk??1?1=dk?.?

結論:點積的方差與維度 d k d_k dk?成正比,即維度越大,點積值的波動范圍越大。

2. Softmax函數的敏感性

Softmax函數對輸入值的絕對大小非常敏感。當輸入值 z i z_i zi?的絕對值較大時,輸出會趨向于極端值(如0或1),導致梯度消失:
Softmax ( z i ) = e z i ∑ j e z j , ? Softmax ( z i ) ? z j = Softmax ( z i ) ( δ i j ? Softmax ( z j ) ) . \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}, \quad \frac{\partial \text{Softmax}(z_i)}{\partial z_j} = \text{Softmax}(z_i)(\delta_{ij} - \text{Softmax}(z_j)). Softmax(zi?)=j?ezj?ezi??,?zj??Softmax(zi?)?=Softmax(zi?)(δij??Softmax(zj?)).
若某個 z i z_i zi?遠大于其他值, Softmax ( z i ) ≈ 1 \text{Softmax}(z_i) \approx 1 Softmax(zi?)1,梯度趨近于零,阻礙參數更新。

3. 縮放因子的選擇

為了穩定點積的方差,需將點積結果縮放,使其方差與 d k d_k dk?無關。由于點積的方差為 d k d_k dk?,標準差為 d k \sqrt{d_k} dk? ?,因此選擇除以 d k \sqrt{d_k} dk? ?
Scaled?Dot-Product = Q K ? d k . \text{Scaled Dot-Product} = \frac{QK^\top}{\sqrt{d_k}}. Scaled?Dot-Product=dk? ?QK??.
效果

  • 方差歸一化:縮放后的方差為 d k ( d k ) 2 = 1 \frac{d_k}{(\sqrt{d_k})^2} = 1 (dk? ?)2dk??=1,與維度無關。
  • 數值穩定:無論 d k d_k dk?多大,點積值被限制在合理范圍內,避免Softmax輸入過大。
  • 梯度保留:Softmax輸出的分布更平緩,保留有效的梯度流動。

4. 為什么不是其他縮放方式?

  1. 除以 d k d_k dk?

    • 方差變為 d k d k 2 = 1 d k \frac{d_k}{d_k^2} = \frac{1}{d_k} dk2?dk??=dk?1?,隨維度增加急劇減小,導致數值過小。
    • 引發梯度不穩定,尤其在高維度下。
  2. 使用常數(如2)

    • 無法適應不同維度的模型,導致低維時縮放不足,高維時縮放過度。
  3. 其他函數(如 log ? d k \log d_k logdk?

    • 缺乏數學依據,增加復雜性且無實際收益。

選擇 d k \sqrt{d_k} dk? ?的優勢

  • 直接對應于點積的標準差,數學上自然。
  • 保持方差恒為1,適應任意維度。
  • 實現簡單,計算高效。

5. 實際訓練驗證

  • 未縮放時:當 d k = 64 d_k=64 dk?=64,點積值可能達到數十或數百,Softmax輸出接近one-hot,梯度消失。
  • 縮放后:點積值被限制在 [ ? 8 , + 8 ] [-8, +8] [?8,+8](假設原始值在 [ ? 64 , + 64 ] [-64, +64] [?64,+64]),Softmax輸出保留合理分布(如 [ 0.7 , 0.2 , 0.1 ] [0.7, 0.2, 0.1] [0.7,0.2,0.1]),梯度有效傳播。
操作數學意義實際影響
計算 Q K ? QK^\top QK?衡量相似度生成原始注意力分數
除以 d k \sqrt{d_k} dk? ?標準差歸一化穩定數值范圍,防止梯度消失
應用Softmax概率歸一化生成注意力權重

關鍵結論

除以 d k \sqrt{d_k} dk? ?是唯一能同時滿足以下條件的縮放方式:

  1. 方差穩定:控制點積方差為1,與維度無關。
  2. 計算高效:無需復雜運算,直接縮放。
  3. 訓練友好:確保Softmax輸入在合理范圍,保留梯度流動性。

九、總結

自注意力機制讓Transformer能夠靈活地處理序列數據中的每一個元素,并且可以同時考慮整個序列的信息,這對于理解句子結構、捕捉長距離依賴關系等非常有幫助。此外,由于其并行化特性,相較于RNN/LSTM等序列模型,Transformer在處理長序列時更加高效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71671.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71671.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71671.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用Ollama+AnythingLLM+本地向量數據庫Milvus+本地DeepSeek大模型實現知識庫的搭建

1. Ollama的搭建 基本介紹 Ollama是一個支持在Windows、Linux和MacOS上本地運行大語言模型的工具。它允許用戶非常方便地運行和使用各種大語言模型,比如Qwen模型等。用戶只需一行命令就可以啟動模型。 Ollama 下載:https://ollama.com/download Ollama 官方主頁&a…

如何搭建個人靜態住宅IP:從零開始

你好!今天我們將一起探索如何從頭開始搭建個人靜態住宅IP。無論您是為了遠程辦公、在線教育還是游戲加速,靜態住宅IP都能帶給您更穩定的網絡體驗。 一、準備階段 1. 明確需求 首先,您需要清楚自己為什么需要靜態住宅IP。可能是為了實現遠程…

國產編輯器EverEdit - 安裝擴展功能的方式

1 擴展管理 1.1 應用場景 由于各行各業工作場景的不同,編輯器不可能為所有行業都定制功能,因此,對于一些特殊的行業應用場景,某些資深工程師可能已經做了一些擴展,并分享到了共享平臺,普通工程師可以安裝這…

CUDA計時函數:精確測量GPU代碼執行時間

在GPU編程中,精確測量代碼執行時間是性能優化的關鍵步驟。CUDA提供了專門的計時工具來幫助開發者準確獲取核函數(Kernel)、內存拷貝等操作的耗時。本文將詳細介紹CUDA計時函數的使用方法,并通過實例代碼演示如何高效測量GPU代碼的…

Go語言集成DeepSeek API和GoFly框架文本編輯器實現流式輸出和對話(GoFly快速開發框架)

說明 本文是GoFly快速開發框架集成Go語言調用 DeepSeek API 插件,實現流式輸出和對話功能。為了方便實現更多業務功能我們在Go服務端調用AI即DeepSeek接口,處理好業務后再用Gin框架實現流失流式輸出到前端,前端使用fetch請求接收到流式的mar…

SAP服務器進程預警通知

在財務月結,HR薪資核算等系統用戶集中使用高峰時期。通過判斷判斷當前系統可用的并行對話框進程數,用戶使用過多給出提示,服務器進程預警通知。 1. 根據配置的進程最大可使用率80%,根據進程數判斷:當進程可用數少于20%…

【Java代碼審計 | 第四篇】SQL 注入防范

文章目錄 Java SQL 注入防御方法類型轉換預編譯查詢(PreparedStatement)使用 ORM 框架(如 MyBatis、Hibernate)白名單限制ORDER BY 語句LIKE 語句 限制數據庫權限過濾和轉義特殊字符監控與日志審計使用 Web 應用防火墻&#xff08…

軟考中級-數據庫-3.3 數據結構-樹

定義:樹是n(n>=0)個結點的有限集合。當n=0時稱為空樹。在任一非空樹中,有且僅有一個稱為根的結點:其余結點可分為m(m>=0)個互不相交的有限集T1,T2,T3...,Tm…,其中每個集合又都是一棵樹,并且稱為根結點的子樹。 樹的相關概念 1、雙親、孩子和兄弟: 2、結點的度:一個結…

選擇排序算法的SIMD優化

一、優化原理 將查找數組最小值索引的SIMD優化的函數嵌入選擇排序主循環,優化最耗時的最小值查找環節,同時保留選擇排序的交換邏輯。 二、關鍵改造步驟 1)最小值查找模塊化 復用SIMD優化的 find_min_index_simd函數。 2)動態子數組處理 每次循環處理 arr[i..n-1] 子數…

考網絡安全工程師證要什么條件才能考?

在當今數字化時代,網絡安全問題日益凸顯,網絡安全工程師成為了一個備受矚目的職業。許多有志于投身這一行業的學子或職場人士,都希望通過考取網絡安全工程師證書來提升自己的專業素養和競爭力。那么,考網絡安全工程師證需要具備哪…

uniapp項目運行失敗Error: getaddrinfo *.bspapp.com 文件查找失敗uview-ui及推薦MarkDown軟件 Typora

一、uniapp項目運行失敗Error: getaddrinfo *.bspapp.com 文件查找失敗uview-ui 在運行一個uniapp項目時,出現報錯 文件查找失敗:uview-ui,Error: getaddrinfo ENOTFOUND 960c0a.bspapp.com。hostname異常,報錯的詳細信息如下&…

使用阿里云 API 進行聲音身份識別的方案

使用阿里云 API 進行聲音身份識別的方案 阿里云提供 智能語音交互(智能語音識別 ASR) 和 聲紋識別(說話人識別) 服務,你可以利用 阿里云智能語音 API 進行 說話人識別,實現客戶身份驗證。 方案概述 準備工…

【Pandas】pandas Series unstack

Pandas2.2 Series Computations descriptive stats 方法描述Series.argsort([axis, kind, order, stable])用于返回 Series 中元素排序后的索引位置的方法Series.argmin([axis, skipna])用于返回 Series 中最小值索引位置的方法Series.argmax([axis, skipna])用于返回 Series…

大模型發展歷程

大模型的發展歷程 大語言模型的發展歷程一、語言模型是個啥?二、語言模型的 “進化史”(一)統計語言模型(SLM)(二)神經語言模型(NLM)(三)預訓練語…

springboot項目使用中創InforSuiteAS替換tomcat

springboot項目使用中創InforSuiteAS替換tomcat 學習地址一、部署InforSuiteAS1、部署2、運行 二、springboot項目打包成war包 特殊處理1、pom文件處理1、排除內嵌的tomcat包2、新增tomcat、javax.servlet-api3、打包格式設置為war4、打包后的項目名稱5、啟動類修改1、原來的不…

Seata

Seata是一款開源的分布式事務解決方案,由阿里巴巴發起并維護,旨在幫助應用程序管理和協調分布式事務。以下是對Seata的詳細介紹: 一、概述 Seata致力于提供高性能和簡單易用的分布式事務服務,它為用戶提供了AT、TCC、SAGA和XA等…

Pytest自動化框架

Pytest簡單介紹 下載pytest pip install pytest 第一章:Pytest console命令 默認需要test開頭的py模塊,test_開頭的方法 1.pytest 執行pytest命令會自動匹配到test開頭或者結尾的文件 將其作為測試用例文件執行,在測試用例文件中自動匹配到test開…

【spring】注解版

1.管理bean 之前我們要想管理bean都是在xml文件中將想要添加的bean手動添加進ioc容器中,這樣太過麻煩了,在 Java 開發里,針對一些較為繁瑣的操作,通常會有相應的簡化方式,這個也不例外,就是spring提供的注…

RV1126+FFMPEG多路碼流監控項目

一.項目介紹: 本項目采用的是易百納RV1126開發板和CMOS攝像頭,使用的推流框架是FFMPEG開源項目。這個項目的工作流程如下(如上圖):通過采集攝像頭的VI模塊,再通過硬件編碼VENC模塊進行H264/H265的編碼壓縮,并把壓縮后的…

13.IIC-EEPROM(AT24C02)

1.為什么需要EEPROM? 在單片機開發中,斷電數據保存是常見的需求。例如,智能家居設備的用戶設置、電子秤的校準參數等都需要在斷電后仍能保留。AT24C02作為一款IIC接口的EEPROM芯片,具備以下優勢: 非易失性存儲:斷電后…