自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解鎖Transformer核心!手把手帶你看懂自注意力機制:三個輸入一步步算到底

發(fā)布于 2025-4-15 00:01
瀏覽
0收藏

 很多課程都會通過公式來說明Transformer,但是沒有給你算過數(shù),也沒讓你明白一件更重要的事:

“自注意力給出來的輸出,實際上表示了什么?”

            本文就想用一個質化、好懂、可實際運算的例子,帶你真正看懂 Self-Attention 是怎么工作的,并解釋它的輸出真正意義!

1. 讓我們再來回顧下什么是“注意力機制”?

你看一段文字時,總會下意識的想:我要看哪些詞?哪些字是我目前理解這句話的關鍵?

注意力機制就是這樣一種方法,它允許模型根據(jù)“當前信息”,自動地從全文里找到最關鍵的部分來作為參考,并給他們分配權重。

不是每個詞均分重,而是“重要的看一眼,不重要的算個數(shù)”。

但是“自注意力”比較特殊:

每個輸入,都在想“我該看誰?” 每個輸出,都是它看完周圍后,自己新生出的表示

2.自注意機制是怎么計算的?

    我們用 3 個 2D 向量(比如詞嵌入)作為輸入序列:

            x? = [1, 0]    # 可能是詞“我”

            x? = [0, 1]    # 可能是詞“愛”

            x? = [1, 1]     # 可能是詞“你”

    把它組成矩陣

            X = [[1, 0],

                 [0, 1],

                 [1, 1]]

    我們手動設定 Q、K、V 的權重矩陣:

            W_Q = [[1, 0],

                   [1, 1]]

            W_K = [[1, 2],

                   [0, 1]]

            W_V = [[2, 0],

                   [0, 1]]

    接下來計算QKT:

            Q = X · W_Q

            K = X · W_K

            V = X · W_V

    比如計算Q

Q = 

[[1, 0],  => [1*1 + 0*1, 1*0 + 0*1] =  [1, 0]

[0, 1],       [0*1 + 1*1, 0*0 + 1*1]   = [1, 1]

[1, 1]]       [1*1 + 1*1, 1*0 + 1*1]    = [2, 1]

    由此可得K和V:

K = [[1, 2],    V = [[2, 0],

     [0, 1],           [0, 1],

     [1, 3]]           [2, 1]]

接下來計算計算 Attention Score(Q·K?)

計算 Q·K?(點積)再除以 √2(d=2):

我們用 Q? 和所有 K 做 dot product,Q? 和所有 K 做 dot product,依此類推:

解鎖Transformer核心!手把手帶你看懂自注意力機制:三個輸入一步步算到底-AI.x社區(qū)

縮放除以 √2 ≈ 1.414:

S_scaled ≈ [[0.71, 0, 0.71],

            [2.12, 0.71, 2.83],

            [2.83, 0.71, 3.54]]

計算每一行的 softmax:

softmax([0.71, 0, 0.71]) = [0.401, 0.198, 0.401]

softmax([2.12, 0.71, 2.83]) ≈ [0.289, 0.075, 0.636]

softmax([2.83, 0.71, 3.54]) ≈ [0.288, 0.057, 0.655]

Attention Weight × V:

output? = 0.401*[2,0] + 0.198*[0,1] + 0.401*[2,1]

        = [0.802 + 0.802, 0 + 0.198 + 0.401] = [1.604, 0.599]

output? = 0.289*[2,0] + 0.075*[0,1] + 0.636*[2,1]

        = [0.578 + 1.272, 0.075 + 0.636] = [1.85, 0.711]

output? = 0.288*[2,0] + 0.057*[0,1] + 0.655*[2,1]

        = [0.576 + 1.31, 0.057 + 0.655] = [1.886, 0.712]

我們可以得到最后的輸出:

Output =

[[1.604, 0.599],

 [1.85,  0.711],

 [1.886, 0.712]]

3. 輸出到底表示啥?(熱點論壇)

它已經(jīng)不僅僅是原始的詞向量了,而是:

1. 考慮了當前詞的內容(通過 Query)

2. 也考慮了它和所有其他詞的關系(通過與 Key 的點積)

3. 最后通過注意力權重,把相關的詞信息從 Value 中“加權融合”了進來

比如:

第一個詞“我”,原來是 [1, 0],輸出是 [1.604, 0.599]

它在融合了“愛”“你”的信息后,變成了一個更富語義的表示

總結一句話:自注意力輸出 = 原詞向量 + 上下文理解 = 更聰明的表示!

這就是為什么 Transformer 模型可以強大到理解復雜語義、做翻譯、對話、生成等任務。

本文轉載自??人工智能訓練營??,作者:人工智能訓練營

收藏
回復
舉報
回復
相關推薦