On-Policy 和 Off-Policy 究竟有什么区别?一文看懂

1. 感性认识

强化学习中的 on-policyoff-policy 是两种不同的策略学习方式,它们的区别在于:

  • 如何从环境中采样数据(行为策略)
  • 以及如何使用这些数据来优化策略(目标策略)
On-Policy(基于当前策略的数据学习)
  • 感性描述
    • on-policy 方法直接依赖当前策略(行为策略)生成的数据,并用这些数据来更新当前策略本身。
    • 例如,一个人在驾驶汽车的过程中不断调整自己的驾驶方式(策略),并从自己的驾驶行为中学习改进当前驾驶风格。
  • 特点
    • 数据和策略绑定:只能从当前策略生成的数据中学习。
    • 示例算法:SARSA(State-Action-Reward-State-Action)。
    • 优点:学习过程稳定,因为学习目标与采样数据来自同一个策略。
    • 缺点:探索效率较低,数据利用率差,因为只能使用“当前策略”的数据。
Off-Policy(基于其他策略的数据学习)
  • 感性描述
    • off-policy 方法允许从其他策略(行为策略)生成的数据中学习,并用这些数据来更新目标策略(通常是最优策略)。
    • 例如,一个人观看别人驾驶汽车(行为策略),从中学习驾驶技巧,并优化自己的驾驶方式(目标策略)。
  • 特点
    • 数据和策略解耦:可以使用来自其他策略(甚至随机策略)的数据来更新目标策略。
    • 示例算法:Q-learning(基于最大 Q 值)。
    • 优点:数据利用率高,可以复用来自过去或其他策略的数据。
    • 缺点:学习过程可能不稳定,因为行为策略与目标策略不同。

2. 数学原理

在强化学习中,策略学习的核心任务是估计动作价值函数(Q-function)或状态价值函数(V-function),并根据这些函数优化策略。两种方法的数学区别如下:

On-Policy
  • 目标

    • 学习当前策略 π θ \pi_\theta πθ 的动作价值函数 Q π θ ( s , a ) Q_{\pi_\theta}(s, a) Qπθ(s,a),即当前策略下执行动作 a a a 的期望回报。
  • 更新公式(以 SARSA 为例):
    Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right] Q(st,at)Q(st,at)+α[rt+γQ(st+1,at+1)Q(st,at)]

    • a t + 1 a_{t+1} at+1 是根据当前行为策略(通常是 ϵ \epsilon ϵ-greedy 策略)选择的动作。
    • 核心:更新目标是行为策略 π θ \pi_\theta πθ 的期望回报。
  • 特点

    • 更新目标和采样数据来自同一个策略 π θ \pi_\theta πθ
    • 学到的 Q 值 Q π θ ( s , a ) Q_{\pi_\theta}(s, a) Qπθ(s,a) 对应于当前策略的价值。
Off-Policy
  • 目标

    • 学习目标策略 π ∗ \pi^* π 的动作价值函数 Q π ∗ ( s , a ) Q_{\pi^*}(s, a) Qπ(s,a),即最优策略下执行动作 a a a 的期望回报。
  • 更新公式(以 Q-learning 为例):
    Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ max ⁡ a Q ( s t + 1 , a ) − Q ( s t , a t ) ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma \max_a Q(s_{t+1}, a) - Q(s_t, a_t) \right] Q(st,at)Q(st,at)+α[rt+γamaxQ(st+1,a)Q(st,at)]

    • max ⁡ a Q ( s t + 1 , a ) \max_a Q(s_{t+1}, a) maxaQ(st+1,a) 是目标策略(最优策略)的最大可能回报。
    • 核心:更新目标是最优策略 π ∗ \pi^* π 的期望回报。
  • 特点

    • 更新目标基于目标策略 π ∗ \pi^* π,而采样数据可以来自其他行为策略 π b \pi_b πb
    • 学到的 Q 值 Q π ∗ ( s , a ) Q_{\pi^*}(s, a) Qπ(s,a) 对应于最优策略的价值。
总结数学区别
  • On-Policy 学习目标是 Q π θ ( s , a ) Q_{\pi_\theta}(s, a) Qπθ(s,a),即当前策略 π θ \pi_\theta πθ 下的价值。
  • Off-Policy 学习目标是 Q π ∗ ( s , a ) Q_{\pi^*}(s, a) Qπ(s,a),即最优策略 π ∗ \pi^* π 下的价值。

3. 代码实现

以下分别展示 SARSA(on-policy)和 Q-learning(off-policy)的代码实现,并对两者的核心区别进行分析。

On-Policy(SARSA)代码
import numpy as np

# 初始化 Q 表
Q = np.zeros((n_states, n_actions))
alpha = 0.1  # 学习率
gamma = 0.99  # 折扣因子

for episode in range(n_episodes):
    state = env.reset()
    action = epsilon_greedy_policy(Q[state])  # 根据当前行为策略选择动作

    done = False
    while not done:
        next_state, reward, done, _ = env.step(action)  # 采样当前策略下的数据
        next_action = epsilon_greedy_policy(Q[next_state])  # 根据当前策略选择下一步动作
        
        # SARSA更新公式
        Q[state, action] += alpha * (reward + gamma * Q[next_state, next_action] - Q[state, action])
        
        # 更新状态和动作
        state, action = next_state, next_action
Off-Policy(Q-learning)代码
import numpy as np

# 初始化 Q 表
Q = np.zeros((n_states, n_actions))
alpha = 0.1  # 学习率
gamma = 0.99  # 折扣因子

for episode in range(n_episodes):
    state = env.reset()

    done = False
    while not done:
        action = epsilon_greedy_policy(Q[state])  # 根据行为策略选择动作(可能是 ε-greedy 策略)
        next_state, reward, done, _ = env.step(action)  # 采样行为策略下的数据
        
        # Q-learning更新公式
        Q[state, action] += alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action])
        
        # 更新状态
        state = next_state
代码实现关键区别
  1. 更新目标的动作选择

    • SARSA:下一步动作 a t + 1 a_{t+1} at+1 是基于当前策略 π θ \pi_\theta πθ 选择的(epsilon_greedy_policy(Q[next_state]))。
    • Q-learning:下一步动作是基于最优策略 π ∗ \pi^* π 选择的(np.max(Q[next_state]))。
  2. 采样数据的使用

    • SARSA:只能使用来自当前策略的数据,更新目标和行为策略一致。
    • Q-learning:采样数据可以来自其他策略,但更新目标基于最优策略。
  3. 探索和利用

    • SARSA:更加依赖行为策略,探索更加直接。
    • Q-learning:可以利用离线数据(来自不同策略的采样)。

4. 本质区别总结

从之前的分析可以总结出,on-policy 和 off-policy 的本质区别在于学习目标和数据来源的不同:

学习目标
  • On-Policy 学习的是 当前策略 的价值函数 Q π θ ( s , a ) Q_{\pi_\theta}(s, a) Qπθ(s,a)
  • Off-Policy 学习的是 目标策略(通常是最优策略) 的价值函数 Q π ∗ ( s , a ) Q_{\pi^*}(s, a) Qπ(s,a)
数据来源
  • On-Policy:只能从当前策略 π θ \pi_\theta πθ 生成的数据中学习,采样和更新目标一致。
  • Off-Policy:可以从其他策略(行为策略 π b \pi_b πb)生成的数据中学习,采样和更新目标不同。
举例对比
  • On-Policy(SARSA):直接从当前策略 π θ \pi_\theta πθ 的行为中学习和改进。
  • Off-Policy(Q-learning):从行为策略(可能是随机或历史策略)中学习,但更新目标是最优策略 π ∗ \pi^* π

5. 关键理解

归根结底:

  • On-Policy 学习的是 Q π θ ( s , a ) Q_{\pi_\theta}(s, a) Qπθ(s,a),即当前策略 π θ \pi_\theta πθ 下的动作价值。
  • Off-Policy 学习的是 Q π ∗ ( s , a ) Q_{\pi^*}(s, a) Qπ(s,a),即最优策略 π ∗ \pi^* π 下的动作价值。

这两种方法的区别本质在于:行为策略和目标策略是否一致,以及是否使用“最大 Q 值”(off-policy)作为目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值