AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
37/100 第四週:📌 循環神經網路 RNN
37.教師強制與注意力機制 🎯 引導模型專注重要資訊!
______________________________________________
✅ 問題導入:RNN 有兩大訓練困難
1️⃣ 錯誤累積問題(Error Accumulation)
在訓練時,Decoder 若每步都用自己預測結果作下一步輸入,初期錯一個字,後面全錯!
2️⃣ 記憶瓶頸問題(Bottleneck)
Seq2Seq 模型將整句話壓成一個上下文向量 c,但如果輸入太長 → 容易「壓縮失真」!
________________________________________
🧪 教師強制(Teacher Forcing)
在訓練 Decoder 時,不使用模型預測的輸出來做下一步輸入,
而是直接餵給它正確答案(ground truth),加快訓練與穩定收斂。
🧠 為什麼這樣比較好?
• 減少早期預測錯誤對整體序列產生雪崩效應
• 提升訓練速度與準確度
• 但測試時還是得「靠自己走」
________________________________________
⚠️ 缺點與解法?
問題 說明
訓練測試不一致問題 訓練時看到真實答案,測試卻沒得看
解法:Scheduled Sampling 隨訓練進度逐步改用模型預測作為輸入
________________________________________
🎯 注意力機制(Attention)
模型是否應該一視同仁對待輸入序列中所有字詞?
當然不是!有些詞比較關鍵,就該注意力集中。
📌 Attention 能讓 Decoder 在每個時間步動態「看」Encoder 的不同部分。
________________________________________
🔍 Attention 的核心概念:
每個 Decoder 步驟都會:
1. 對 Encoder 所有輸出計算相似度(注意力分數)
2. 用 Softmax 得到「哪幾個字該關注多少」
3. 加權平均得到 新的上下文向量 context_t
________________________________________
🧠 注意力公式簡化(Bahdanau Attention):
在傳統的 Seq2Seq 模型中,整個輸入句子會被壓縮成一個「上下文向量」再交給解碼器,但如果輸入句子太長,重要資訊可能會被壓縮掉,造成翻譯不準。為了解決這個問題,注意力機制就登場了!
🔍 Bahdanau 注意力的三個步驟:
1️⃣ 對每個輸入單字「打分」
• 解碼器在每一個時間點都會去看整個輸入句子。
• 它會對輸入句子的每個單字做「打分」,決定哪些單字跟目前要產生的詞有關聯。
• 例如:當解碼器要產生「狗」這個字時,會特別注意 "dogs" 這個詞。
2️⃣ 將分數轉成權重(像分配注意力的比例)
• 打完分後,把這些分數轉成像「注意力比例」的東西。
• 比如:「dogs」得分最高,所以它可能會被分配最多的注意力。
3️⃣ 根據注意力權重,從輸入中「抽取重要資訊」
• 解碼器依據這些注意力比例,從輸入句子中「挑出」最重要的資訊來參考。
• 最後再結合這些資訊來產生對應的翻譯詞。
✅ 簡單比喻:
想像你在開會做筆記,每次寫下一句話前,你會快速回顧全場發言,然後根據目前想寫的內容,把最重要的幾句話挑出來參考——這就是注意力機制的原理!
________________________________________
📦 TensorFlow / Keras 實作簡要(基礎版)
python
from tensorflow.keras.layers import Attention
attention = Attention() # Keras 提供簡化版
context_vector = attention([decoder_query, encoder_outputs])
這段程式碼使用 Keras 提供的 Attention 層,實作一個簡化版的注意力機制。它的核心功能是:根據 Decoder 當前時間步的狀態 decoder_query,去「對齊」Encoder 輸出的所有時間步 encoder_outputs,計算出一個加權總結的語意向量(context_vector)。這個向量代表 Decoder 在產生當前詞時,最該「關注」輸入序列中的哪些部分。這種做法讓模型能根據不同輸出動態選擇輸入資訊,是改善翻譯與生成效果的關鍵機制。
________________________________________
📊 注意力帶來的效益:
效益 說明
✅ 強化長序列能力 模型不再被「一個壓縮向量」限制
✅ 解釋性強 可視化注意力權重,看到模型「看哪裡」
✅ 提升準確率 特別是在翻譯、摘要、QA 等任務中
________________________________________
📘 Attention 應用場景:
任務 說明
語言翻譯 注意力可對齊字對字對應位置
摘要生成 聚焦重點段落與關鍵詞
視覺問答(VQA) 對齊問題與圖像的對應區域
Transformer(預告) 全模型皆由 Attention 構成!
________________________________________
🎯 小結與啟示:
✅ 教師強制能幫助模型學得更快更準,但測試需注意落差
✅ 注意力機制突破 Seq2Seq 的記憶限制,是語言處理的革命
✅ 是通往 Transformer 與 GPT 系列的關鍵中繼站!













