17 强化学习之Q学习:探索与利用的权衡
系列进度
强化学习入门 · 第 17 / 28 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
强化学习的核心是智能体在环境中试错,学习时要同时看状态、动作、奖励和策略更新。阅读时可以按「探索与利用的概念 -> 探索策略 -> ε-greedy 策略 -> Decaying ε-greedy 策略」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「探索与利用的概念」,再查「探索策略」。
在上一篇中,我们详细探讨了Q学习的基本原理和算法流程。本篇将重点讨论Q学习中的一个重要思想——探索与利用的权衡。在强化学习中,智能体必须在探索新策略和利用已知最佳策略之间进行权衡,合理的权衡机制对于学习策略的收敛速度和最终性能至关重要。
探索与利用的概念
在任何强化学习任务中,智能体面临两个主要任务:
理解探索与利用权衡时,先看 epsilon-greedy、奖励波动、状态覆盖、策略收敛和训练早晚阶段差异。
- 探索:尝试新的行动以获取更多信息,发现潜在的更优策略。
- 利用:选择已知的最佳行动,从而采用目前最优的策略以最大化奖励。
探索和利用的矛盾可以用下述公式来表示:
理想的策略应该同时兼顾这两者,然而在实际应用中,总会存在某种程度的取舍。
探索策略
ε-greedy 策略
学习《强化学习之Q学习:探索与利用的权衡》不必一口气吃完所有细节。先挑一个能动手验证的小问题,再顺着图和正文补齐概念。
最常用的探索策略之一是 ε-greedy 策略。该策略以概率 ε 选择一个随机动作(探索),以概率 1 - ε 选择目前的最佳动作(利用)。
例如,假设我们定义 ε = 0.1,这意味着在10%的时间里,智能体会随机选择一个行动,而在90%的时间里,选择当前Q值最高的行动。
import numpy as np
def epsilon_greedy_action(Q, state, epsilon):
if np.random.rand() < epsilon:
return np.random.choice(range(len(Q[state]))) # 随机选择一个动作
else:
return np.argmax(Q[state]) # 选择当前Q值最高的动作
Decaying ε-greedy 策略
随着训练的进行,逐步减少 ε 的值可以更加有效地平衡探索和利用。这称为 Decaying ε-greedy 策略。初期较高的探索率可以帮助智能体较好地了解环境,而后期较低的探索率则能使其更专注于利用已学得的知识。
epsilon = 1.0 # 初始 epsilon
epsilon_min = 0.01 # 最小 epsilon
decay_rate = 0.995 # 衰减速率
while training:
action = epsilon_greedy_action(Q, state, epsilon)
# 执行动作并更新Q值
# ...
epsilon = max(epsilon_min, epsilon * decay_rate) # 衰减 epsilon
Softmax 策略
另一种探索机制是 Softmax 策略,其中每个动作被分配了一个概率,概率与其Q值成正比。这种方法允许所有动作都有一定的概率被选择,有助于避免过早收敛于次优策略。
其中 τ 是温度参数,控制探索的程度。当 τ 较大时,所有动作概率趋于均匀,增强探索;当 τ 较小时,更偏向于利用。
探索与利用的权衡案例
假设我们在一个简单的格子世界中,智能体的目标是找到从起点(0, 0)到终点(4, 4)的路径。原因是环境较为复杂,Q值更新需要良好的探索。
使用 ε-greedy 策略的案例
在这个例子中,我们使用Q学习和ε-greedy策略来求解问题:
import numpy as np
grid_size = 5 # 5x5的格子
Q = np.zeros((grid_size, grid_size, 4)) # 状态数和动作数
# 动作 [上, 下, 左, 右]
num_episodes = 1000
epsilon = 1.0
for episode in range(num_episodes):
state = (0, 0) # 每个episode从起点开始
done = False
while not done:
action = epsilon_greedy_action(Q, state, epsilon)
# 执行动作并获取新状态和奖励
# (
# new_state, reward, done
# ) = environment.step(state, action) # 这是伪代码
# 更新Q值
q_max = np.max(Q[new_state]) # 下一状态的最大Q值
Q[state][action] += alpha * (reward + gamma * q_max - Q[state][action])
state = new_state # 移动到新状态
epsilon = max(epsilon_min, epsilon * decay_rate) # 衰减epsilon
通过上述代码和方法,智能体将逐渐学会在格子世界中找到最佳路径和行动策略。
复习《强化学习之Q学习:探索与利用的权衡》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《强化学习之Q学习:探索与利用的权衡》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
总结
在Q学习中,探索与利用的权衡是极其重要的。选择合适的探索策略可以有效地帮助智能体学习更优的策略,而不同的环境和任务可能需要不同的探索机制。在下一篇中,我们将探索“近似Q学习”,并讨论如何在高维状态空间中应用Q学习以解决实际问题。通过不断理解和优化探索与利用的方式,我们可以使智能体的学习过程更加高效和准确。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
强化学习之Q学习:探索与利用的权衡适合谁读?
这是 强化学习入门 系列第 17 / 28 篇,适合正在学习强化学习入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇强化学习入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读