RL-05-02-结构-Q-Table

← 上级:RL-05.专属数据结构 · 实现:RL-04-03-表格型算法实现

Q-Table 存储 $Q(s,a)$,形状 $|S| \times |A|$。见 RL-03-02-算法-Q-Learning


一、稠密表

1
2
3
4
5
6
import numpy as np
Q = np.zeros((n_states, n_actions), dtype=np.float32)
# 更新
Q[s, a] += alpha * (td_target - Q[s, a])
# 贪心
a = Q[s].argmax()

空间:$|S| \times |A| \times 4$ bytes(float32)。


二、稀疏表

状态空间大但访问少时:

1
2
3
from collections import defaultdict
Q = defaultdict(lambda: np.zeros(n_actions))
Q[s][a] += alpha * delta

或用 dict[(s,a)] -> float(更新需遍历同 s 的 a)。


三、初始化策略

策略 效果
全零 默认
乐观初值 全设大正数,促探索
随机小噪声 打破对称

四、状态索引

来源 处理
Discrete(n) 直接用 obs 整数
连续 Box 分箱 np.digitize 或 tile coding
图像 一般不建表 → DQN

五、可视化

1
2
3
import matplotlib.pyplot as plt
plt.imshow(Q.max(axis=1).reshape(4, 4))
plt.colorbar(); plt.title("max_a Q(s,a)")

策略箭头见 RL-04-03-表格型算法实现


六、小结

  • 小离散 MDP:NumPy 二维 Q 表最简单。
  • 下一篇:Replay Buffer
-------------本文结束感谢您的阅读-------------