偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

            本文就想用一個(gè)質(zhì)化、好懂、可實(shí)際運(yùn)算的例子,帶你真正看懂 Self-Attention 是怎么工作的,并解釋它的輸出真正意義!

1. 讓我們?cè)賮砘仡櫹率裁词恰白⒁饬C(jī)制”?

你看一段文字時(shí),總會(huì)下意識(shí)的想:我要看哪些詞?哪些字是我目前理解這句話的關(guān)鍵?

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

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

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

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

2.自注意機(jī)制是怎么計(jì)算的?

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

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

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

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

    把它組成矩陣

            X = [[1, 0],

                 [0, 1],

                 [1, 1]]

    我們手動(dòng)設(shè)定 Q、K、V 的權(quán)重矩陣:

            W_Q = [[1, 0],

                   [1, 1]]

            W_K = [[1, 2],

                   [0, 1]]

            W_V = [[2, 0],

                   [0, 1]]

    接下來計(jì)算QKT:

            Q = X · W_Q

            K = X · W_K

            V = X · W_V

    比如計(jì)算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]]

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

計(jì)算 Q·K?(點(diǎn)積)再除以 √2(d=2):

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

解鎖Transformer核心!手把手帶你看懂自注意力機(jī)制:三個(gè)輸入一步步算到底-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]]

計(jì)算每一行的 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. 輸出到底表示啥?(熱點(diǎn)論壇)

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

1. 考慮了當(dāng)前詞的內(nèi)容(通過 Query)

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

3. 最后通過注意力權(quán)重,把相關(guān)的詞信息從 Value 中“加權(quán)融合”了進(jìn)來

比如:

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

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

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

這就是為什么 Transformer 模型可以強(qiáng)大到理解復(fù)雜語義、做翻譯、對(duì)話、生成等任務(wù)。

本文轉(zhuǎn)載自??人工智能訓(xùn)練營??,作者:人工智能訓(xùn)練營

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦