Q-learning是一种经典的无模型、基于价值的算法,它通过迭代更新状态-动作对的Q值,最终找到最优策略。
一 Q-learning的核心思想
1.1目标
学习一个状态-动作价值函数 ,表示在状态 s 下执行动作 a 并遵循最优策略后的最大累积奖励。
的核心目标是为智能体(Agent)在复杂的动态环境中提供数据驱动的决策依据,使得它能够通过量化的方式评估每个动作的长期价值,进而逐步逼近最优策略。
Q值像一张“价值地图”,指导每一步的最佳方向。
1.2核心特征
(1)离线策略(Off-policy):更新Q值时使用最大预期奖励(最优策略),而实际行动可能采用探索策略(如ε-greedy:贪婪策略)。
探索策略:智能体在训练过程中主动尝试未知或低价值状态-动作对的策略,目的是打破当前对环境的认知局限,发现潜在的更高回报路径。可以避免局部最优和应对非平稳环境。
ε-greedy(贪婪策略):以概率 随机选择一个动作(探索),以概率
选择当前最高Q值的动作(利用)。初始时
较大,鼓励充分探索未知区域,随着训练逐步降低
,后期倾向于利用学到的知识。
def epsilon_greedy(Q, state, epsilon):if np.random.rand() < epsilon:action = np.random.choice(possible_actions) # 随机探索else:action = np.argmax(Q[state]) # 选择最优动作return action
(2)表格方法:适用于离散、有限的状态和动作空间,通过表格记录所有。
二 算法原理
贝尔曼方程与Q值更新
Q-learning的目标是使Q值收敛到贝尔曼最优方程:
在每次交互中,通过时序差分(TD)学习逐步逼近最优Q值:
:学习率(控制更新步长,通常0 < α ≤ 1)
:折扣因子(权衡即时奖励与未来奖励,通常0 ≤ γ < 1)
新Q值=旧Q值+α⋅(TD目标−旧Q值)
TD目标结合了当前奖励和对未来奖励的最优估计,推动Q值向更优方向调整。
三 算法流程
输入:环境(状态集合 S,动作集合 A),学习率α,折扣率γ,探索率ϵ。
输出:最优Q值表
初始化Q表为全零或随机值
for episode in 1 to Max_Episodes:初始化状态swhile 状态s非终止状态:# 选择动作(平衡探索与利用)if random() < ε:随机选择动作aelse:a = argmax_a Q(s, a)# 执行动作,获得奖励和新状态s', r, done = env.step(a)# 更新Q值Q(s, a) = Q(s, a) + α * [r + γ * max(Q(s', a')) - Q(s, a)]# 进入下一状态s = s'# 可选:逐步降低ε(如ε = ε * 0.99)
四 参数设置
参数 | 作用 | 典型值/策略 |
---|---|---|
学习率α | 控制Q值更新步长 | 初期较高(如0.1~0.5),后期降低(如0.01) |
折扣因子γ | 设定未来奖励的重要性 | 接近1(长期考虑,如0.9~0.99) |
探索率ε | 平衡探索与利用 | 初始高值(如1.0),逐步衰减至0.01~0.1 |
收敛条件:
(1)每个状态-动作对被无限次访问(充分覆盖)
(2)学习率需满足:
五 DQN(Deep Q-Network):Q-learning+深度学习
Q-learning的局限性:
传统Q-learning基于表格存储Q值,不适用于高维或连续状态空间(如视频游戏画面)的复杂任务。
深度神经网络的引入:
使用神经网络参数化Q值函数: ,输入状态 s ,输出所有动作的 Q 值。神经网络能够拟合复杂状态表示。
稳定性挑战:
直接更新Q网络会导致目标值频繁变化(Q值依赖自身参数),造成训练震荡。DQN通过以下两个关键技术解决这一问题:
(1)目标网络(Target Network):使用独立的目标网络计算目标Q值,参数定期同步,降低相关性。
(2)经验回放(Experience Replay):将交互数据存入经验池,随机采样训练,打破样本间相关性。
特性 | Q-learning | DQN |
---|---|---|
Q值存储方式 | 表格 | 深度神经网络拟合 |
状态空间适应性 | 仅限离散、低维 | 可处理高维、连续状态(如图像输入) |
稳定性增强技术 | 无 | 经验回放 + 目标网络 |
应用场景 | 简单环境(如网格世界) | 复杂环境(如Atari游戏、机器人控制) |
六 应用场景
(1)简单游戏AI(如棋牌类、迷宫导航)。
(2)库存管理(优化补货策略)。
(3)交通信号灯控制(平衡车辆通行效率)。
Q-learning作为强化学习的基石,通过贝尔曼最优方程不断优化动作价值,适用于小规模离散问题。尽管在复杂场景中被深度方法(如DQN)取代,理解Q-learning仍是掌握先进算法(如DQN、Actor-Critic)的重要前提。对于实际应用,需根据问题规模选择Q-learning或升级至深度版本。