iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
生成式 AI

從上下文工程到 Agent:30 天生成式 AI 與 LLM 學習紀錄系列 第 4

[Day4] 為什麼需要注意力機制?從 RNN 到 Transformer

  • 分享至 

  • xImage
  •  

  讓模型理解並且處理帶有順序的資料,一直是 NLP 的核心挑戰,因為文字是有順序的,前後文會改變語意,因此對於提高 NLP 處理的準確度,是相當重要的一部分。
  因此早期深度學習方法經常會使用循環神經網路(RNN)或是基於 RNN 改良的長短期記憶(LSTM)來處理語言,因為兩者都具有記憶性,會記得前面的內容,但隨著應用規模的擴大,RNN 已經無法滿足需求了,這才產生了注意力機制(Attention)這個技術,再利用注意力機制打造出了 Transformer。

為什麼 RNN/LSTM 不夠?

  1. 無法並行處裡,效率不夠高
    RNN 的輸入需要逐步依序處理:
    第 1 個 token 輸出 → 餵給第 2 個 token → 餵給第 3 個 token...,以此類推的依序輸出,這讓 GPU 的並行能力幾乎浪費掉,訓練速度很慢。

  2. 難以捕捉長句的語意
    雖然 LSTM 加入門控機制(遺忘門、輸入門、輸出門),讓 LSTM 有比 RNN 更好的效果,但遇到很長的句子時,遠距離詞語之間的關聯還是很難學到。

注意力機制是什麼?

  注意力機制的靈感來自於人類專注的方式,當我們在閱讀一篇文章的時候,不會每個字都看得很仔細,而是會特別注意某些關鍵詞,而在 NLP 裡,注意力機制讓模型能夠判斷 目前要處理的詞(Query) 應該要去注意句子中的哪些詞(Key),與對應詞的資訊(Value)比此相關聯,再依照關聯的程度分配「權重」,之後再加權的組合計算,得到更有意義的結果。

Query、Key、Value 的角色

我們可以把注意力機制想像成字典查找

  1. Query (查詢值):你現在關心的問題,例:想知道一句話的「時間」資訊。
  2. Key (鍵值):每個 token 的索引,例:句子中每個詞的表示,用來判斷它和 Query 是否相關。
  3. Value (真值):每個 token 對應的資訊,例:句子中包含的實際語意內容。

舉例:「我愛鐵人賽,因為能幫助我學習與成長」

當 Query =「成長」,模型可能會分配較多的注意力(權重)給「幫助」、「學習」兩詞,次要注意力給「鐵人賽」,幾乎不會去注意「我」和「愛」,這樣模型就能正確理解「成長」是在說「鐵人賽帶來的效果」,而不是「愛」或「我」。

用 PyTorch 實現簡單的點積注意力

import torch
import torch.nn.functional as F
import math

# Query, Key, Value
Q = torch.tensor([[1.0, 0.0]])   # Query: 想找 "時間"
K = torch.tensor([[1.0, 0.0],    # token1 (相關)
                  [0.0, 1.0]])   # token2 (不相關)
V = torch.tensor([[10.0],        # token1 的資訊
                  [20.0]])       # token2 的資訊

# 計算注意力分數
dk = Q.size(-1)
scores = torch.matmul(Q, K.T) / math.sqrt(dk)

# 轉換成權重
attn_weights = F.softmax(scores, dim=-1)

# 加權求和得到輸出
output = torch.matmul(attn_weights, V)

print("注意力權重:", attn_weights)
print("輸出結果:", output)

輸出結果

注意力權重: tensor([[0.6698, 0.3302]])
輸出結果: tensor([[13.3024]])

可以從輸出結果看到,模型認為 token1 更重要(67%的注意力),所以最終輸出會比較接近他的值,顯示出了 Attention 能幫助模型聚焦於更相關的資訊。

今日總結

  1. RNN/LSTM 的缺點:無法並行、難以捕捉長期依賴。
  2. 注意力機制的核心:使用 Q、K、V 來計算關聯度,並加權 Value。
  3. 模型可以「選擇要注意的詞」,為 Transformer 的後續 LLM 鋪好了路。

上一篇
[Day3] 文本表示的進化:從詞袋到詞向量
下一篇
[Day5] Self-Attention、Mask Self-Attention、Multi-Head Attention
系列文
從上下文工程到 Agent:30 天生成式 AI 與 LLM 學習紀錄8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言