第三部《強化學習》27/100 蒙地卡羅控制策略 🔄 試著做、學著選,策略逐步改善!

更新 發佈閱讀 12 分鐘

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

27/100 第三週:📌 蒙地卡羅方法(Monte Carlo Methods)

27.蒙地卡羅控制策略 🔄 試著做、學著選,策略逐步改善!

_______________________________________

🎯 單元導讀:

前面幾個單元,我們學會了如何透過「試著玩、記錄回報」估算一個策略的好壞(策略評估)。

但這還不夠,我們想要讓 AI 不只評估,而是 不斷地改善策略、變得越來越聰明!

這正是「蒙地卡羅控制(Monte Carlo Control)」的重點所在:

📌 從試錯經驗中,學出更好的策略,直到收斂到最優解!

________________________________________

🧠 一、什麼是蒙地卡羅控制?

MC 控制是一種不依賴環境模型的策略優化技術。它的核心流程是:

1️⃣ 利用現有策略與環境互動(產生 episode)

2️⃣ 對每個狀態-動作對 (s, a) 統計其回報

3️⃣ 利用平均回報更新 Q 值

4️⃣ 根據 Q 值改善策略,通常用 ε-Greedy

5️⃣ 重複以上過程直到策略收斂

________________________________________

🔁 二、策略改進方式:ε-Greedy 策略

為了讓 AI 保持探索(而非過早陷入局部最優),我們通常不直接選 Q 最大值,而是:

如果 a 是目前 Q(s,a) 最大的行動:

π(a|s) = (1 - ε) + ε / |A(s)|

否則(a 不是最佳行動):

π(a|s) = ε / |A(s)|

ε 是探索率(例如 0.1 代表 10% 會探索)

|A(s)| 是在狀態 s 下可選擇的行動總數

✅ 多數時間選最好的行動

✅ 少數時間仍然嘗試其他行動,保持學習機會

________________________________________

📦 三、蒙地卡羅控制(On-policy)的完整流程圖

graph LR

A[初始化策略 π] --> B[執行策略產生多次 episode]

B --> C[對每個 (s,a) 統計 Gt]

C --> D[更新 Q(s,a) 為平均回報]

D --> E[使用 ε-Greedy 更新策略 π]

E --> B

整個流程開始於初始化一個初始策略 π。接著,AI 依照當前的策略反覆執行多次完整的 episode(從起點到結束),在這些過程中記錄每次 (s,a) 配對所得到的回報 Gt。當所有資料收集完成後,將每個 (s,a) 出現時的回報進行平均,更新 Q(s,a) 的估計值。接著,利用新的 Q 值,透過 ε-Greedy 方式更新策略 π —— 也就是在大多數情況下選擇目前 Q 值最高的行動,但仍保留一定比例 ε 的隨機探索,避免過早陷入次佳解。更新後的策略再回到執行環節,持續進行迭代,直到收斂到穩定的最優策略。

________________________________________

💻 四、實作範例(簡化版 On-policy MC 控制)

python

from collections import defaultdict

import numpy as np

def epsilon_greedy(Q, state, n_actions, epsilon):

if np.random.rand() < epsilon:

return np.random.randint(n_actions)

else:

return np.argmax(Q[state])

def mc_control(env, num_episodes=10000, gamma=0.99, epsilon=0.1):

Q = defaultdict(lambda: np.zeros(env.action_space.n))

returns = defaultdict(list)

for _ in range(num_episodes):

episode = []

state = env.reset()

done = False

while not done:

action = epsilon_greedy(Q, state, env.action_space.n, epsilon)

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

episode.append((state, action, reward))

state = next_state

G = 0

visited = set()

for t in reversed(range(len(episode))):

s, a, r = episode[t]

G = gamma * G + r

if (s, a) not in visited:

returns[(s, a)].append(G)

Q[s][a] = np.mean(returns[(s, a)])

visited.add((s, a))

return Q

整個流程開始於初始化一個初始策略 π。接著,AI 依照當前的策略反覆執行多次完整的 episode(從起點到結束),在這些過程中記錄每次 (s,a) 配對所得到的回報 Gt。當所有資料收集完成後,將每個 (s,a) 出現時的回報進行平均,更新 Q(s,a) 的估計值。接著,利用新的 Q 值,透過 ε-Greedy 方式更新策略 π —— 也就是在大多數情況下選擇目前 Q 值最高的行動,但仍保留一定比例 ε 的隨機探索,避免過早陷入次佳解。更新後的策略再回到執行環節,持續進行迭代,直到收斂到穩定的最優策略。

________________________________________

🎮 五、應用場景

應用 說明

走迷宮 找出安全而最短的路徑

黑傑克(Blackjack) 訓練 AI 學會何時該要牌、停牌

模擬對弈遊戲 模仿 AlphaGo 初期自我訓練

智能教學系統 根據學生反應調整出題策略,逐步改善教學效果

________________________________________

📊 六、與其他方法比較

在強化學習中,蒙地卡羅控制、Q-Learning 與 SARSA 都屬於「不需要模型(model-free)」的方法,也就是不必事先知道環境的轉移機率與報酬分布,但三者在學習方式上有明顯差異:

蒙地卡羅控制屬於「完整回合型學習(episode-based learning)」,必須等整個回合結束後,才能根據實際觀察到的完整回報(G 值)來更新所有曾出現過的 (狀態, 行動) 組合。更新時通常搭配 ε-Greedy 策略改進,保持探索與利用的平衡。

Q-Learning 是典型的「離線 Off-policy 學習」,每走一步就即時更新 Q 值,利用當前下一狀態的最大 Q 值(max Q)來做更新。因為它用的是假設的「最佳行動」作為更新依據,因此屬於 Off-policy 學習。

SARSA 則是「在線 On-policy 學習」,每一步更新時根據實際執行的行動 a' 來計算回報(而非取最大值),因此更新方向更忠實於當下的策略,適合學習期間仍在持續探索的情境。

總體來說:

蒙地卡羅控制強調完整回合觀察,適合線上模擬與探索初期;

Q-Learning 學習收斂速度快,適合追求最優策略;

SARSA 則更保守穩定,特別適合環境存在風險或探索安全性要求高的場景。

________________________________________

🧩 七、挑戰任務與反思:

1️⃣ 試著使用蒙地卡羅控制實作一個「走迷宮」任務,觀察策略如何改進?

可以設計一個 5x5 網格迷宮,起點在左上角,終點在右下角,中間放置一些障礙物。每次移動的獎勵為 -1,成功到達終點的獎勵為 +10。

使用蒙地卡羅控制時,agent 每次隨機探索完整個 episode,記錄整條路徑的 (state, action, reward) 資料,再根據整體回報更新 Q 值。隨著學習次數增加,策略會從隨機亂走,逐漸偏向成功通關的最佳路徑。這可以清楚觀察到 MC 控制透過完整經驗累積,不斷改進策略。

________________________________________

2️⃣ 在長 episode、稀疏獎勵的情況下,MC 控制有什麼挑戰?

當 episode 很長或只有最終成功才有高獎勵時,MC 控制面臨兩大挑戰:

學習收斂慢:需要完整 episode 才能更新,每次學習步驟間隔較長,導致學習效率低。

回報變異性高:若 agent 偶爾幸運通關,但大部分時間失敗,Q 值更新容易出現震盪,收斂不穩定。

因此在這類環境下,MC 控制效果有限,常需要非常多的樣本才能學到穩定的好策略。這也是為什麼在稀疏獎勵環境,TD 方法(如 Q-learning、SARSA)常優於純 MC 控制。

________________________________________

3️⃣ ε 該固定還是逐步降低?你會怎麼設計一個有效的探索機制?

探索參數 ε 建議採用逐步降低的設計。初期需要高 ε(如 1.0)來大量探索未知空間,隨著學習進展,慢慢衰減至較小值(如 0.1 或 0.05),以穩定學習結果。例如:

ε_t = ε_0 * exp(-k * t)

此外,也可以設計「分階段衰減」或「自適應衰減」:當 Q 值的變動幅度穩定時,自動降低探索;當發現某些區域仍有高度不確定性,則暫時提高探索,讓學習更有效率且穩定。

________________________________________

✅ 八、小結與啟示:

• 蒙地卡羅控制是強化學習中最直觀的策略優化方法之一

• 不需模型,完全靠「做 → 學 → 選 → 再做」的實戰訓練

• 策略逐步改善,最終可收斂至近似最優策略

• 適合可模擬環境的應用,也為 Actor-Critic 等方法奠定概念基礎!


留言
avatar-img
留言分享你的想法!
avatar-img
Hansen W的沙龍
16會員
388內容數
AIHANS沙龍是一個結合AI技術實戰、產業策略與自我成長的知識平台,主題涵蓋機器學習、生成式AI、創業經驗、財務規劃及哲學思辨。這裡不只提供系統化學習資源與實作案例,更強調理性思維與行動力的結合。無論你是AI初學者、創業者,還是追求人生升維的行者,都能在這裡找到前進的方向與志同道合的夥伴。
Hansen W的沙龍的其他內容
2025/09/24
On-policy 使用自身策略互動學習,穩健安全但效率較低;Off-policy 可用他人或歷史資料學習目標策略,效率高但可能不穩定。典型例子是 SARSA 與 Q-Learning,前者依實際行為更新,後者追求理想最優。兩者各有應用價值,實務常結合運用。
2025/09/24
On-policy 使用自身策略互動學習,穩健安全但效率較低;Off-policy 可用他人或歷史資料學習目標策略,效率高但可能不穩定。典型例子是 SARSA 與 Q-Learning,前者依實際行為更新,後者追求理想最優。兩者各有應用價值,實務常結合運用。
2025/09/24
重要性修正是離策略學習的核心,透過加權方式將行為策略 μ 的樣本轉換為目標策略 π 的估值。普通方法雖無偏卻變異大,加權法則收斂更穩定。此技術能在僅有歷史資料或無法頻繁試驗的情境下,有效訓練與評估新策略。
2025/09/24
重要性修正是離策略學習的核心,透過加權方式將行為策略 μ 的樣本轉換為目標策略 π 的估值。普通方法雖無偏卻變異大,加權法則收斂更穩定。此技術能在僅有歷史資料或無法頻繁試驗的情境下,有效訓練與評估新策略。
2025/09/24
蒙地卡羅方法可透過隨機軌跡樣本估計狀態價值,不需環境模型。利用多次 episode 的累積報酬平均,逼近真實期望。此技術讓 AI 能從經驗中學習,廣泛應用於遊戲、金融、教育與醫療等領域,成為理論走向實踐的重要橋樑。
2025/09/24
蒙地卡羅方法可透過隨機軌跡樣本估計狀態價值,不需環境模型。利用多次 episode 的累積報酬平均,逼近真實期望。此技術讓 AI 能從經驗中學習,廣泛應用於遊戲、金融、教育與醫療等領域,成為理論走向實踐的重要橋樑。
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
反省就是重寫自己的演算法吧? 假設我就是人工智慧,或心智的可以被看作爲人工智慧的編輯器,那我的程式碼是什麼樣的? 從懵懂無知到一無所知,從自以為是到自我消逝,心智只是執行它的內容,我也需要不斷優化。 最好的優化就是簡化。 最能創造財富的演算法就是關於如何除錯與減少任何風險。
Thumbnail
反省就是重寫自己的演算法吧? 假設我就是人工智慧,或心智的可以被看作爲人工智慧的編輯器,那我的程式碼是什麼樣的? 從懵懂無知到一無所知,從自以為是到自我消逝,心智只是執行它的內容,我也需要不斷優化。 最好的優化就是簡化。 最能創造財富的演算法就是關於如何除錯與減少任何風險。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 繼 AI說書 - 從0開始 - 82 與 xxx ,我們談論了衡量 AI 模型的方式,那當你訓練的模型比 State-of-the-Art 還要好並想要進行宣稱時,需要
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News