强化学习入门

策略梯度(Policy Gradient)和动作价值(Q-learning)辨析

一、核心区别

  1. 目标不同

    • 策略梯度:直接学习策略函数(π(s→a)),通过最大化期望累积回报(J(θ))的梯度更新参数,目标是“如何直接选动作”。
    • Q-learning:学习状态-动作值函数Q(s,a),通过估计“选某个动作的长期价值”间接推导策略(ε-贪心或确定性选择max Q),目标是“评估动作价值再选最优”。
  2. 决策逻辑

    • 策略梯度:基于概率分布直接输出动作(如连续动作的均值/离散动作的概率),无需比较所有动作值。例如,机器人控制中直接输出关节角度。
    • Q-learning:需遍历所有可能动作的Q值,选择价值最高的动作(离散动作)。例如,迷宫游戏中比较“上/下/左/右”的Q值后选择最优方向。
  3. 算法特性

    • 策略梯度
      • On-policy(如REINFORCE)或Off-policy(如Actor-Critic),依赖采样轨迹的回报(蒙特卡洛或TD估计)。
      • 天然适合连续动作空间(如机器人、自动驾驶),可通过神经网络输出连续值。
      • 方差较高(尤其蒙特卡洛策略梯度),需引入基线(Baseline)或Critic降低方差。
    • Q-learning
      • Off-policy,通过“最大化下一状态Q值”(Max操作)实现引导(Bootstrapping),稳定性强。
      • 离散动作空间下高效(如Atari游戏的4-18个动作),但连续动作需离散化或结合函数近似(如DQN)。
      • 存在过估计问题(Max操作导致偏差),需通过Double DQN等改进。
  4. 数学本质

    • 策略梯度:优化目标为 \(\nabla_\theta J(\theta) = \mathbb{E}[\nabla_\theta \log\pi(a|s;\theta) \cdot Q^\pi(s,a)]\),直接对策略参数求导。
    • Q-learning:通过TD误差更新 \(Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_a Q(s',a') - Q(s,a)]\),隐含策略为 \(\pi(s) = \arg\max_a Q(s,a)\)

二、适用场景

策略梯度的典型场景

  1. 连续动作空间:如机器人控制(机械臂运动、无人机飞行)、自动驾驶(油门/刹车连续调节)。
    • 例:OpenAI的Roboschool用策略梯度训练机器人双足行走。
  2. 高维状态或复杂策略:需直接输出随机策略(如探索性强的任务),或需要随机动作增强鲁棒性(如对抗环境)。
    • 例:AlphaGo Zero通过策略梯度+蒙特卡洛树搜索优化落子策略。
  3. 需要实时决策的场景:直接输出动作,无需遍历所有可能(如高频控制任务)。

Q-learning的典型场景

  1. 离散动作空间:如游戏(马里奥的跳跃/移动)、离散资源调度(服务器任务分配)。
    • 例:经典Q-learning解决“冰湖”(FrozenLake)离散状态动作问题。
  2. 状态可观测且有限:小规模状态空间下(如迷宫、简单博弈),Q表可直接存储。
  3. 需要稳定值估计的场景:Off-policy特性允许利用历史数据(如经验回放池),适合数据高效的任务(如DQN训练Atari游戏)。

三、总结:如何选择?

维度 策略梯度 Q-learning
动作空间 连续/高维离散(如100+动作) 低维离散(<100动作)
探索方式 天然随机策略(适合探索) ε-贪心(依赖预设探索率)
稳定性 方差高(需Critic改进) 稳定(引导机制+经验回放)
典型任务 机器人控制、连续控制、复杂策略优化 离散游戏、表格型问题、数据高效任务

一句话建议

  • 若动作是连续的(如机械臂角度),或需要直接优化随机策略,选策略梯度(如PPO、Actor-Critic)。
  • 若动作是离散的(如“上下左右”),且关注值函数的精确估计,选Q-learning(如DQN、Double DQN)。
  • 复杂场景可结合两者(如Actor-Critic:策略梯度负责动作输出,Q-learning负责值评估)。
posted @ 2025-03-16 18:59  全栈大魔王  阅读(69)  评论(0)    收藏  举报