第三部《強化學習》48/100 DQN 訓練技巧與超參數調整 ⚙️ 學會讓模型更快收斂!

更新 發佈閱讀 9 分鐘

AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》

48/100 第五週:📌 Deep Q-Network(DQN)與深度強化學習入門

48.DQN 訓練技巧與超參數調整 ⚙️ 學會讓模型更快收斂!

_______________________________________

🎯 單元導讀

DQN 架構雖強大,但若沒有妥善的訓練策略與參數調校,

容易出現 不收斂、震盪、陷入局部最優 等問題。

本單元整理了 DQN 訓練時常見的技巧與超參數調整指南,

幫助你打造一個「穩定、高效、泛化力強」的強化學習模型!

________________________________________

🧠 一、常見超參數總覽表

  • γ(折扣因子):0.95 ~ 0.99 → 控制未來獎勵的重要性
  • α / lr(學習率):1e-4 ~ 1e-3 → 神經網路更新步伐
  • ε 初始值:1.0 → 完全探索(random)
  • ε 最小值:0.01 ~ 0.1 → 保留部分探索行為
  • ε 衰減速率:0.995 ~ 0.999 → 每步逐漸減少 ε 值
  • Replay Buffer 大小:10⁴ ~ 10⁶ → 儲存過去經驗的容量
  • Batch Size:32 ~ 128 → 每次學習所抽樣資料數量
  • Target Network 更新頻率:每 1000 ~ 10000 步 → 控制學習穩定性關鍵參數
  • Gradient Clipping:10.0 → 限制梯度範圍,防止梯度爆

________________________________________

🔁 二、訓練技巧總整理

✅ 1. 使用 ε-Greedy + 衰減策略

初始以完全隨機行動探索環境

隨時間慢慢轉為根據 Q 值選擇最優動作

可用線性、指數或階段式衰減方式控制 ε 值下降速度

✅ 2. 使用 Gradient Clipping

為了避免反向傳播時梯度過大導致爆炸:

python

torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=10)

在反向傳播後,限制所有參數梯度的總範數不超過指定值,防止梯度爆炸,穩定訓練過程。

________________________________________

✅ 3. Replay Buffer 預熱(warm-up)

不要一開始就訓練模型,應先收集足夠經驗:

python

if len(buffer) < min_buffer_size:

continue # 先觀察一段時間,避免過擬合初始資料

當經驗回放緩衝區 buffer 還沒累積到足夠樣本(小於 min_buffer_size)時,先跳過訓練,避免模型在早期資料過少且偏態明顯時學到不穩定或過擬合的錯誤策略。

________________________________________

✅ 4. 使用 Huber Loss 取代 MSE Loss

Huber Loss 對異常值更穩定,能改善 TD 誤差過大導致震盪的問題:

python

loss = nn.SmoothL1Loss()(predicted_q, target_q)

使用 Smooth L1 Loss(又稱 Huber Loss) 來計算預測 Q 值 predicted_q 與目標 Q 值 target_q 之間的誤差,結合了均方誤差 (MSE) 和絕對誤差 (MAE) 的優點,對異常值較不敏感,能提升學習穩定性。

________________________________________

✅ 5. 正確初始化神經網路

避免權重初始化過小或過大,常用方式:

Xavier / He initialization

使用 PyTorch 預設 nn.Linear() 通常已可接受

________________________________________

✅ 6. 增加觀測穩定性

若輸入是影像資料,建議:

使用 畫面下採樣(如 84×84 灰階)

使用 frame stacking(多張圖像合併,模擬記憶)

________________________________________

🧪 三、訓練流程建議範例

python

for step in range(total_steps):

# 1. ε-Greedy 選擇動作

if random.random() < ε:

action = env.sample()

else:

action = argmax(Q(state))

# 2. 執行動作、收集資料

next_state, reward, done = env.step(action)

buffer.append((state, action, reward, next_state, done))

# 3. 預熱期間不訓練

if len(buffer) < batch_size:

continue

# 4. 隨機取樣訓練

transitions = random.sample(buffer, batch_size)

# 5. 計算 TD 目標並反向傳播

# 6. 每隔一定步數同步 Target Network

# 7. ε 衰減

ε = max(ε_min, ε * ε_decay)

在整個訓練循環中,智慧體每一步透過 ε-Greedy 策略在隨機探索與現有 Q 值最佳行動間做選擇,執行動作後收集新狀態、回饋與終止訊號,並存入經驗回放緩衝區。當緩衝區樣本數累積足夠後,隨機抽取小批次樣本進行訓練,計算 TD 目標誤差並反向傳播更新模型,期間定期同步 Target Network 以穩定學習,並隨訓練逐漸衰減 ε,降低隨機性、提高利用已學知識的比例。

________________________________________

📊 四、觀察訓練是否有效的指標

在強化學習訓練過程中,可透過多個指標監控學習效果:首先觀察 Episode Reward 曲線 是否隨訓練逐步上升並趨於穩定,代表整體策略在進步;其次檢查 Loss 曲線 是否收斂穩定,避免出現劇烈震盪影響學習穩定性;再者,觀察 ε 值變化,確認是否順利從早期大量探索逐步過渡到後期主要利用已學知識;最後分析 Q 值分布,檢查是否有持續偏高或偏低的現象,以避免過度高估或低估狀態價值,確保模型預測合理可靠。

________________________________________

🔍 五、生活中的訓練類比

例子 1:健身訓練計畫 🏋️

在健身初期,你可能會嘗試不同器材與方法(探索 ε 高),但隨著經驗累積,會專注於最有效的動作(利用 ε 低)。這就像 DQN 的探索與利用平衡。


例子 2:學習語言 📚

學新語言時,不會每天改教材(就像 Target Network 不是每天更新),而是定期檢討進度,調整學習方向。這種「固定一段時間再更新」能讓學習更穩定。


例子 3:準備考試 ✍️

複習時,你不只看最新的題目,而是從筆記或歷屆試題中隨機抽題練習(Replay Buffer),避免偏向單一經驗,讓知識更全面、學習更穩固。

________________________________________

✅ 六、小結與啟示

調參是強化學習成功與否的關鍵!

訓練過程要穩、參數要合、資料要多樣

使用合適的技巧能有效提升收斂速度與策略品質

和人生一樣:穩定學習 + 定期檢討 + 持續微調 → 最終通往最優策略!



留言
avatar-img
留言分享你的想法!
avatar-img
Hansen W的沙龍
12會員
274內容數
AIHANS沙龍是一個結合AI技術實戰、產業策略與自我成長的知識平台,主題涵蓋機器學習、生成式AI、創業經驗、財務規劃及哲學思辨。這裡不只提供系統化學習資源與實作案例,更強調理性思維與行動力的結合。無論你是AI初學者、創業者,還是追求人生升維的行者,都能在這裡找到前進的方向與志同道合的夥伴。
Hansen W的沙龍的其他內容
2025/09/24
Dueling DQN 將 Q 值拆成狀態價值 V(s) 與動作優勢 A(s,a),避免動作差異小時學習受干擾。此架構能更快掌握狀態好壞,提升穩定性與泛化能力,適合遊戲、自駕車與投資等場景。
2025/09/24
Dueling DQN 將 Q 值拆成狀態價值 V(s) 與動作優勢 A(s,a),避免動作差異小時學習受干擾。此架構能更快掌握狀態好壞,提升穩定性與泛化能力,適合遊戲、自駕車與投資等場景。
2025/09/24
Double DQN 透過將動作「選擇」與「評估」分離,解決 DQN 中 Q 值過度估計的問題。主網路選動作,目標網路評估價值,避免偏差與不穩定,使學習更穩健,策略更接近真實最優解。
2025/09/24
Double DQN 透過將動作「選擇」與「評估」分離,解決 DQN 中 Q 值過度估計的問題。主網路選動作,目標網路評估價值,避免偏差與不穩定,使學習更穩健,策略更接近真實最優解。
2025/09/24
Target Network 透過分離主網路與目標網路,避免 Q 值自我干擾,降低震盪與發散風險。透過硬更新或軟更新保持目標穩定,使訓練更收斂。就像人生中需設定穩定的方向,避免頻繁改變而失去導航。
2025/09/24
Target Network 透過分離主網路與目標網路,避免 Q 值自我干擾,降低震盪與發散風險。透過硬更新或軟更新保持目標穩定,使訓練更收斂。就像人生中需設定穩定的方向,避免頻繁改變而失去導航。
看更多
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 AI說書 - 從0開始 - 86 提及 SuperGLUE 任務清單,當中會包含以下欄位: 名稱 (Name):經過微調的預訓練模型的下游任務的名稱 標識符
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 AI說書 - 從0開始 - 86 提及 SuperGLUE 任務清單,當中會包含以下欄位: 名稱 (Name):經過微調的預訓練模型的下游任務的名稱 標識符
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 從 AI說書 - 從0開始 - 82 到 AI說書 - 從0開始 - 85 的說明,有一個很重要的結論:最適合您的模型不一定是排行榜上最好的模型,您需要學習 NLP 評
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 可以透過繼承預訓練模型 (Pretrained Model) 來微調 (Fine-Tune) 以執行下游任務。 Pretrained Mo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 可以透過繼承預訓練模型 (Pretrained Model) 來微調 (Fine-Tune) 以執行下游任務。 Pretrained Mo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Trainin
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Trainin
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News