强化学习中的探索策略:easy-rl中的ε-greedy与玻尔兹曼
引言:探索与利用的永恒权衡
在强化学习(Reinforcement Learning, RL)中,智能体(Agent)需要在未知环境中通过试错(Trial-and-Error)学习最优策略。这一过程中存在一个核心矛盾:探索(Exploration) 与利用(Exploitation) 的权衡。探索指智能体尝试新的动作以获取环境信息,可能带来长期收益;利用则指智能体选择当前已知的最优动作以最大化即时奖励。低效的探索策略会导致智能体陷入局部最优,而过度探索则会浪费资源。
本文将深入解析easy-rl项目(蘑菇书🍄)中两种经典的探索策略——ε-贪婪(ε-greedy) 和玻尔兹曼探索(Boltzmann Exploration),通过理论推导、代码实现与实验对比,揭示其内在机制与适用场景。
1. ε-贪婪策略:简单高效的探索框架
1.1 策略原理
ε-贪婪策略是最广泛使用的探索方法之一,其核心思想是:以1-ε的概率选择当前估计最优动作(利用),以ε的概率随机选择动作(探索)。其中,ε是控制探索程度的超参数,通常设置为较小值(如0.1)。
数学定义:
- 设当前状态为$s$,动作空间为$A$,Q表为$Q(s,a)$,则动作选择概率为: $$ \pi(a|s) = \begin{cases} 1-\varepsilon + \frac{\varepsilon}{|A|} & \text{if } a = \arg\max_{a'} Q(s,a') \ \frac{\varepsilon}{|A|} & \text{otherwise} \end{cases} $$
1.2 衰减机制:动态平衡探索与利用
为解决“初期多探索,后期多利用”的需求,ε-贪婪策略常结合衰减机制。easy-rl中采用指数衰减: $$ \varepsilon(t) = \varepsilon_{\text{end}} + (\varepsilon_{\text{start}} - \varepsilon_{\text{end}}) \cdot \exp\left(-\frac{t}{\tau}\right) $$ 其中:
- $\varepsilon_{\text{start}}$:初始探索率(如0.95)
- $\varepsilon_{\text{end}}$:最小探索率(如0.01)
- $\tau$:衰减系数(如300)
- $t$:采样步数
1.3 easy-rl中的实现
在notebooks/Q-learning/QLearning.ipynb
中,ε-贪婪策略的代码实现如下:
def sample_action(self, state):
self.sample_count += 1
# 指数衰减ε
self.epsilon = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \
math.exp(-1. * self.sample_count / self.epsilon_decay)
# ε-贪婪选择动作
if np.random.uniform(0, 1) > self.epsilon:
action = np.argmax(self.Q_table[str(state)]) # 利用:选择最优动作
else:
action = np.random.choice(self.n_actions) # 探索:随机选择动作
return action
1.4 优缺点分析
优点 | 缺点 |
---|---|
实现简单,计算开销低 | 随机探索可能重复选择次优动作 |
衰减机制可动态调整探索率 | 对ε的取值敏感,需手动调参 |
适用于离散动作空间 | 高维空间中随机探索效率低下 |
2. 玻尔兹曼探索:基于动作价值的概率选择
2.1 策略原理
玻尔兹曼探索(又称softmax探索)通过softmax函数将动作价值转化为选择概率,实现有偏向的探索。其核心思想是:动作价值越高,被选中的概率越大,但仍保留选择低价值动作的可能性。
softmax函数定义: $$ \pi(a|s, \tau) = \frac{\exp(Q(s,a)/\tau)}{\sum_{a' \in A} \exp(Q(s,a')/\tau)} $$ 其中,$\tau$为温度参数(Temperature):
- $\tau \to 0$:接近贪婪策略,概率集中于最优动作
- $\tau \to \infty$:接近均匀随机探索
- $\tau$减小:探索率降低,利用增强
2.2 温度衰减策略
与ε-贪婪类似,玻尔兹曼探索通常采用温度衰减策略: $$ \tau(t) = \tau_0 \cdot \exp(-\lambda t) $$ 其中,$\tau_0$为初始温度,$\lambda$为衰减系数。
2.3 easy-rl中的实现
在notebooks/Q-learning/Q-learning探索策略研究.ipynb
中,玻尔兹曼探索的代码实现如下:
def sample_action(self, state):
# 玻尔兹曼探索:计算动作概率
action_values = self.Q_table[int(state)]
action_probs = np.exp(action_values / self.epsilon) / np.sum(np.exp(action_values / self.epsilon))
action = np.random.choice(self.n_actions, p=action_probs)
return action
注:此处代码中
self.epsilon
实际作为温度参数$\tau$使用。
2.4 优缺点分析
优点 | 缺点 |
---|---|
探索更具“智能”,优先尝试高价值动作 | 计算复杂度高于ε-贪婪(指数运算) |
温度参数可动态调整 | 对温度衰减策略敏感 |
适用于连续动作空间 | 价值相近时概率分布趋于均匀,探索效率低 |
3. 两种策略的对比与实验分析
3.1 决策流程对比
3.2 实验对比:悬崖行走问题
在easy-rl的Q-learning探索策略研究.ipynb
中,两种策略在悬崖行走环境(CliffWalking-v0)中的实验结果如下:
3.2.1 奖励曲线对比
策略 | 收敛回合数 | 平均奖励 | 训练稳定性 |
---|---|---|---|
ε-greedy (ε=0.1) | 约150回合 | -13.0 | 中等 |
玻尔兹曼(τ=0.5) | 约120回合 | -12.5 | 较高 |
3.2.2 策略行为差异
- ε-greedy:初期频繁掉入悬崖(奖励-100),但通过衰减机制逐渐稳定至最优路径。
- 玻尔兹曼:初期探索更聚焦于高价值区域,悬崖掉落次数少,但温度衰减不足时易陷入局部最优。
3.3 适用场景总结
场景 | ε-greedy策略 | 玻尔兹曼策略 |
---|---|---|
动作空间维度 | 低维离散空间 | 高维连续空间 |
状态转移确定性 | 高(如网格世界) | 低(如随机环境) |
计算资源限制 | 优先选择(低复杂度) | 次选(高复杂度) |
调参便利性 | 需调ε_start/end/decay | 需调τ0/λ |
4. 探索策略的改进方向
4.1 自适应探索率调整
- ε-greedy改进:基于状态访问次数动态调整ε,如访问频繁的状态减小ε。
- 玻尔兹曼改进:根据Q值方差调整温度,方差大时增大τ(鼓励探索)。
4.2 结合启发式信息
- UCB(Upper Confidence Bound):利用动作价值的置信区间指导探索,适用于多臂选择问题。
- ** Thompson采样**:基于贝叶斯推断动态调整动作选择概率,平衡不确定性与收益。
4.3 easy-rl中的扩展实现
在Q-learning探索策略研究.ipynb
中,已实现混合策略(如ε-greedy+UCB),代码片段如下:
def _sp_ucb_policy(self, s):
# UCB策略:结合动作价值与访问次数
b_t = self.__softmax(self.Q_table[s]) + \
self.__softmax(np.sqrt(2 * np.log(self.ucb_cnt) / self.ucb_sa_visit_cnt_arr[s]))
a_final = np.argmax(b_t)
self.ucb_sa_visit_cnt_arr[s, a_final] += 1
return a_final
5. 结论与实践建议
5.1 核心结论
- ε-greedy是简单高效的探索策略,适合快速原型开发和资源受限场景,但需精细调参。
- 玻尔兹曼探索在复杂环境中表现更稳健,尤其适用于连续动作空间,但计算成本较高。
- 探索策略的选择应结合环境特性(确定性/随机性)、动作空间(离散/连续)和计算资源综合考量。
5.2 实践建议
- 新手入门:优先使用ε-greedy,设置ε_start=0.95, ε_end=0.01, decay=300。
- 追求性能:尝试玻尔兹曼探索,初始τ=1.0,按指数衰减至0.1。
- 复杂环境:考虑UCB或 Thompson采样,easy-rl的
special_ucb
策略可作为参考。
5.3 扩展阅读
- easy-rl文档:
docs/chapter3/chapter3.md
(表格型方法与探索策略) - 论文:《Playing Atari with Deep Reinforcement Learning》(DQN中的ε-greedy应用)
- 代码实践:
notebooks/PolicyGradient.ipynb
(策略梯度中的探索策略)
通过合理选择与调优探索策略,智能体能够更高效地平衡探索与利用,在未知环境中快速收敛至最优策略。easy-rl提供的丰富实验代码与可视化工具,为深入理解探索机制提供了绝佳实践平台。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考