在 ε-greedy 策略中,探索率 ε 控制“这一次是否走随机分支”的概率。它不是学习率,也不等于“选择非最佳动作的比例”:随机分支仍可能抽到当前最优动作。要调参数,先把这两个统计口径分清。
一个可手算的三动作例子
假设某一状态有左、右、停三个动作,当前 Q 值分别是 1、5、2,且没有并列。本文自拟例子约定:以概率 ε 在三个动作中均匀抽样;否则选择 Q 值最大的“右”。当 ε=0.3 时,右的概率是 0.7+0.3/3=0.8,左和停各是 0.1。因此探索分支约占 30%,非贪心动作却只约占 20%。

这个结论依赖“随机分支包含所有合法动作”的约定。有些实现只在非贪心动作中抽样,不能沿用同一个公式。遇到动作屏蔽时,也要按剩余合法动作数重新计算。
用 Python 分别统计分支和动作
下面例子只需要 Python 标准库。保存为 epsilon_demo.py,运行后观察两组统计;它演示动作选择,不会更新 Q 表,也不代表已经训练出智能体。
import random
from collections import Counter
rng = random.Random(19)
actions = ["左", "右", "停"]
q = [1.0, 5.0, 2.0]
epsilon = 0.3
assert 0.0 <= epsilon <= 1.0
greedy = max(range(len(q)), key=q.__getitem__)
counts = Counter()
exploration_count = 0
for _ in range(10000):
exploring = rng.random() < epsilon
if exploring:
index = rng.randrange(len(actions))
exploration_count += 1
else:
index = greedy
counts[actions[index]] += 1
print("探索分支比例:", exploration_count / 10000)
print("动作比例:", {a: counts[a] / 10000 for a in actions})
核对时,探索分支比例应接近 0.3,右动作比例应接近 0.8。有限次数的随机采样会有波动,不要求恰好相等;换随机种子再运行,可以观察这一点。如果右动作接近 0.7,先查代码是否把贪心动作排除在随机分支之外。
训练时怎样安排探索率
常见做法是训练开始时多探索,再逐渐降低 ε。一个演示日程可以写成 max(0.05, 1.0 - step / 10000);这些数值只是例子,不能当成所有任务的推荐配置。先记录 ε、合法动作数量、每个动作的访问次数和评估回报,再判断衰减是不是太快。
如果某个动作几乎没被尝试,就难以可靠地比较它的价值;如果评估时仍有大量随机行动,又可能掩盖已学策略的表现。训练探索和独立评估应分别记录,不要把两组成绩混合。贪心评估也不保证最佳,只是帮助检查当前 Q 表的选择。
三个容易混淆的参数
| 参数 | 改变什么 | 不能据此推出什么 |
|---|---|---|
| 探索率 ε | 动作选择的随机分支概率 | 每一步一定学习得更快 |
| 学习率 α | 一次更新改变价值估计的幅度 | 随机动作更多 |
| 折扣因子 γ | 未来奖励在目标中的权重 | 探索比例更高 |
本文没有对任何环境训练效果做实测;示例中的概率来自明确的选择规则与算式。探索过少可能漏掉机会,探索过多可能增加低回报动作,需要结合具体任务验证。
探索与利用的概念可参阅 2026 年 10 月 3 日读取的 Spinning Up 强化学习基础。实际 ε-greedy 细节仍应核对所用算法的选择代码。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32949.html