AI時代系列(3) 機器學習三部曲: 📘 第三部:《強化學習 —— AI 的決策與進化》
7/100 第一週:📌 強化學習概論
7.狀態-價值與動作-價值函數 🔍 V(s) vs Q(s,a),搞懂選擇依據!
________________________________________
🎯一、 基礎概念複習
在強化學習裏,主要有兩個核心價值函數:
1. 狀態價值函數 V(s)
• V(s) 代表:當 agent 在狀態 s 時,按照目前策略 π 操作,未來所可預期積累獲得的總回報。
• V(s) 可以想像成“這個地方值得幾分”
2. 動作價值函數 Q(s,a)
• Q(s,a) 代表:當 agent 在狀態 s 並執行動作 a 之後,如果後續按照策略 π 進行,預期能積累得到多少回報。
• Q(s,a) 是更細節的「特定選擇」價值。
主要差異:
• V(s): 只考慮狀態
• Q(s,a): 考慮狀態 + 當前行動
________________________________________
變成策略的核心:
• 當我們知道 Q(s,a) 之後,可以用「貪心策略 (Greedy Policy)」從 Q 引得最優策略:
π*(s) = argmax_a Q(s,a)
• 這就是 Q-Learning 與 DQN 這類機器之核心基礎。
________________________________________
實作範例:Python MDP 第一個狀態價值與動作價值
import numpy as np
# MDP 範例:尋求職場生活計劃
n_states = 3 # 0=大學生, 1=AI職障, 2=設計職障
n_actions = 2 # 0=選 AI 路, 1=選 設計 路
gamma = 0.9
P = np.zeros((n_states, n_actions, n_states))
R = np.zeros((n_states, n_actions, n_states))
P[0, 0, 1] = 1.0; R[0, 0, 1] = 10.0
P[0, 1, 2] = 1.0; R[0, 1, 2] = 6.0
for s in [1,2]:
for a in range(n_actions):
P[s, a, s] = 1.0
R[s, a, s] = 0.0
# 階段 1: Policy Evaluation
pi = np.array([[0.5, 0.5], [1.0, 0.0], [1.0, 0.0]])
def policy_evaluation(P, R, pi, gamma=0.9, theta=1e-8):
V = np.zeros(n_states)
while True:
delta = 0
for s in range(n_states):
v = V[s]
V[s] = sum(
pi[s, a] * sum(P[s, a, s2] * (R[s, a, s2] + gamma * V[s2]) for s2 in range(n_states))
for a in range(n_actions))
delta = max(delta, abs(v - V[s]))
if delta < theta:
break
return V
V_pi = policy_evaluation(P, R, pi, gamma)
print("V^pi:", V_pi)
# 階段 2: 從 V^π 引出 Q^π
Q_pi = np.zeros((n_states, n_actions))
for s in range(n_states):
for a in range(n_actions):
Q_pi[s, a] = sum(P[s, a, s2] * (R[s, a, s2] + gamma * V_pi[s2]) for s2 in range(n_states))
print("Q^pi:\n", Q_pi)
# 階段 3: 貪心推幫找出最優策略
pi_greedy = np.zeros(n_states, dtype=int)
for s in range(n_states):
pi_greedy[s] = np.argmax(Q_pi[s])
print("Greedy 策略 π*:", pi_greedy)
這段程式碼模擬了一個簡單的「人生職涯決策」強化學習問題,整個流程包含三個主要階段:首先,透過轉移機率矩陣 P 和回報矩陣 R 定義出人生中的決策場景:當前是大學生(狀態 0),可以選擇往 AI 職涯(行動 0,回報 10)或設計職涯(行動 1,回報 6)前進,且兩個職涯狀態為終點自迴圈。
接著在 政策評估 (Policy Evaluation) 階段,使用目前的策略 pi(新生以 50% 機率選 AI、50% 選設計)計算出各狀態下的預期總價值 V(s),這裡透過貝爾曼期望方程進行遞迴收斂計算。
計算出 V 之後,進一步透過 動作價值計算 (Q Evaluation),將 V 反推出每個行動的期望長期報酬 Q(s,a)。
最後進入 貪婪策略改善 (Greedy Improvement) 階段:對每個狀態,挑選出具有最高 Q 值的行動,形成新的最優策略 pi_greedy,也就是:在大學生狀態時應選擇 AI 路(因為其 Q 值較高),而其他終點狀態的選擇無影響。整個程式正完整示範了強化學習中從 V → Q → π* 的基本流程邏輯。
________________________________________
實作結果分析
• 狀態價值 V^pi 說明「在完全階段觀察下的預期回報」
• 動作價值 Q^pi 則直接呈現「各動作的預期總利益」
• 最後採用 Greedy 策略,第一個狀態將選擇行動 a=0 (AI 路徑),因為其 Q 價最高!
________________________________________
🧪 二、何時該用 V?何時用 Q?
在強化學習中,當我們想要了解整體狀態的長期價值時,就會使用狀態價值函數 V(s),它告訴我們「站在這個狀態,未來照策略走下去,總共可以累積多少報酬」;而當我們需要在每個狀態下比較不同行動的好壞,決定該選哪個行動時,就會使用動作價值函數 Q(s,a),因為它直接告訴我們「如果現在採取某個行動,後續再照策略走,能得到多少總回報」。
一般來說,策略評估階段多用 V(s),策略改善或直接決策時則依賴 Q(s,a);像 Q-Learning、DQN 這類演算法就完全靠學 Q 來導出最優策略,而 Actor-Critic 這類方法則同時使用策略 π 和價值函數 V 或 Q 來輔助學習。
________________________________________
🧩 三、思考挑戰與任務 —— 深度解析
1️⃣ 如果你手上只有 V(s),該怎麼推測應採取哪個行動?
• 問題本質:
o V(s) 只告訴你「整體狀態的好壞」,但沒告訴你每個行動的直接影響。
o 你無法只靠 V(s) 知道哪個行動好,因為不同行動可能會把你帶往不同後續狀態。
• 理論上可用的做法:
o 透過環境模型 P(s'|s,a),先模擬各行動後的狀態轉移,再用 V(s') 來預估各行動的期望:
• 換句話說,如果你知道環境模型 P,你可以把 V 轉出 Q。
• 現實人生中的啟示:
o 當我們缺少明確行動回報時,可以透過資訊收集、模擬未來、參考他人經驗,來幫自己「預估各行動的後續可能性」,間接建構 Q 值。
________________________________________
2️⃣ 你是否曾經在某個狀態下感覺「這裡待著好」卻不知道該怎麼走?那是你缺乏 Q(s,a)!
• 這句話其實非常精準地描述「只擁有 V 而缺少 Q 的困境」。
• 你知道目前生活穩定、收入不錯、人際關係和諧,整體 V(s) 很高,但遇到轉職、進修、創業等選擇時,卻難以判斷每個行動 a 會帶來怎樣的長期報酬。
• 核心啟發:
o 缺乏 Q 值,等於缺乏具體行動層級的風險與報酬預測能力。
o 這時就需要投入探索、模擬、訪談、資料分析,去收集讓自己能量化各行動影響的資訊,逐步補全 Q 值。
________________________________________
3️⃣ 若你能設計一個人生 Q 函數,你會如何量化每個決策的「長期報酬」?
• 這題幾乎就是設計人生決策演算法的核心:
維度 可能考慮的量化指標
經濟面 薪資成長曲線、資產累積潛力
職涯成長 技能提升、晉升機會、市場需求穩定性
健康面 工時負擔、壓力水準、身心健康
家庭面 伴侶支持、家庭和諧、育兒資源
意義感 成就感、社會影響力、內心滿足感
風險面 失業風險、產業淘汰風險、財務安全
• 最後再依據個人價值觀設計權重,形成你的人生 Q(s,a) 函數。
________________________________________
🔑 一句統整反思:
V 告訴你「你現在好不好」,Q 才能幫你決定「下一步怎麼選才會更好」。完整的 Q 函數設計,就是人生決策系統的靈魂。
________________________________________
✅ 三、小結與啟示
• V(s):評估「這個狀態整體好不好」
• Q(s, a):評估「這個行動值不值得做」
• Q 值能直接推導策略,是學習過程中最關鍵的導航指標
• 真實人生中的選擇,也可以試著從「狀態價值」與「行動價值」兩種視角評估,做出更有策略的決定!