直白版:「注意力」到底是什麼?
想像你是同時要聽老師上課又要記筆記的學生。
- 老師講了一大段話(就是 input sequence)。
- 你要記下「什麼重點最值得筆記」——每一個時間點,你的注意力都可能會放在不同的地方(例如老師剛剛強調的那句話)。
- Attention 就是這種「我現在應該最關注誰」的機制。
技術版:Attention 是什麼?
(以 Transformer Attention 為例)
2.1 Attention 的數學本質
對每個 output(例如我要產生下一個 token),
- 模型都會計算:「我在輸入裡每個位置要『看』多少?」
用公式寫就是:
Attention(Q, K, V) = softmax(QK^T / sqrt(d)) V
- Q = Query(我現在想知道的問題)
- K = Key(輸入序列裡的特徵,每個都有 key)
- V = Value(每個 input 的實際內容)
- softmax(QK^T / sqrt(d)) = 計算每個 input「對於現在這個 output 的重要程度」(權重)
這個權重加總等於 1,代表「我現在該花多少心力看這個輸入位置」。
2.2 Transformer 的 Attention 怎麼用?
假設你有一串輸入 [“你”, “好”, “嗎”, “?”],
- Transformer 在生成 output 第3個 token(比如說「嗎」)時,可以動態決定:
- 我要 50% 注意「好」
- 30% 注意「你」
- 20% 注意「嗎」
- 這種權重完全是模型自己學出來的。
為什麼這能解決「對齊」問題?(以 TTS 為例)
3.1 動態對齊:誰配誰?
- 在 TTS 裡,output(音訊 token)和 input(text token)長度不一樣。
- 每次生成一個 audio token,模型都可以用 attention 機制去動態選「現在應該對應哪個 text token」。
- 例如:我現在產生的是「好」這個字的聲音,attention 權重會自動對準「好」這個 token。
- 如果在 output「你好」的尾音延長,「好」這個 token 可能被看很多次。
3.2 全自動學習
- 不用人工標記「第3秒對應第3個字」。
- 大量資料訓練下,模型自動學出「什麼時候該關注哪個文字 token」以對齊生成的聲音。