On-Policy 强化学习与 Off-Policy 强化学习

On-Policy 强化学习与 Off-Policy 强化学习

强化学习是机器学习的一种范式,它关注的是智能体(Agent)如何在与环境的交互中学习到一个策略(Policy),以便在未来的决策中最大化累积奖励。在强化学习中,有两种主要的学习方法:On-Policy(同轨)学习和 Off-Policy(异轨)学习。这两种方法的核心区别在于智能体学习策略的方式。本文将详细介绍 On-Policy 和 Off-Policy 学习的概念、特点、算法示例以及它们之间的区别。

1. On-Policy 强化学习

1.1 概念

On-Policy 强化学习是指智能体在学习过程中遵循当前策略进行动作选择,并根据这些经验来更新策略。换句话说,智能体在学习时使用的策略与实际执行的策略是相同的。

1.2 特点

  • 智能体在学习和执行时使用相同的策略。
  • 需要在探索(Exploration)和利用(Exploitation)之间进行权衡,以便发现更好的策略。
  • 更新策略时使用的数据是实时生成的,因此可能受到噪声和偏差的影响。

1.3 算法示例

典型的 On-Policy 强化学习算法包括 SARSA(State-Action-Reward-State-Action)算法。SARSA 算法是一种基于值函数的强化学习算法,它通过学习动作值函数 Q(s, a) 来确定最优策略。SARSA 使用贝尔曼方程进行迭代更新,通过不断探索和更新 Q 值,最终收敛到最优策略。

# SARSA 算法示例
def sarsa(env, num_episodes, alpha, gamma, epsilon):
    # 初始化 Q 值表
    Q = defaultdict(lambda: np.zeros(env.action_space.n))
    for episode in range(num_episodes):
        state = env.reset()
        action = epsilon_greedy_policy(Q, state, env.action_space.n, epsilon)
        while True:
            next_state, reward, done, _ = env.step(action)
            next_action = epsilon_greedy_policy(Q, next_state, env.action_space.n, epsilon)
            # 更新 Q 值
            Q[state][action] += alpha * (reward + gamma * Q[next_state][next_action] - Q[state][action])
            state = next_state
            action = next_action
            if done:
                break
    return Q

# ε-贪婪策略
def epsilon_gre

edy_policy(Q, state, n_actions, epsilon):
    # 初始化动作概率
    action_probs = np.ones(n_actions) * epsilon / n_actions
    # 获取最佳动作
    best_action = np.argmax(Q[state])
    # 为最佳动作分配更高的概率
    action_probs[best_action] += (1.0 - epsilon)
    # 使用概率分布选择动作
    action = np.random.choice(np.arange(n_actions), p=action_probs)
    return action

2. Off-Policy 强化学习

2.1 概念

Off-Policy 强化学习是指智能体在学习过程中使用一种策略(行为策略)进行动作选择,而更新策略时使用另一种策略(目标策略)。换句话说,智能体在学习时使用的策略与实际执行的策略是不同的。

2.2 特点

  • 智能体在学习和执行时使用不同的策略。
  • 可以使用历史数据进行学习,不受实时数据的限制。
  • 更容易实现高效的探索,因为行为策略可以专注于探索,而目标策略专注于性能。

2.3 算法示例

典型的 Off-Policy 强化学习算法包括 Q-Learning 算法。Q-Learning 算法也是一种基于值函数的强化学习算法,它通过学习动作值函数 Q(s, a) 来确定最优策略。Q-Learning 使用贝尔曼方程进行迭代更新,通过不断探索和更新 Q 值,最终收敛到最优策略。

# Q-Learning 算法示例
def q_learning(env, num_episodes, alpha, gamma, epsilon):
    # 初始化 Q 值表
    Q = defaultdict(lambda: np.zeros(env.action_space.n))
    for episode in range(num_episodes):
        state = env.reset()
        while True:
            action = epsilon_greedy_policy(Q, state, env.action_space.n, epsilon)
            next_state, reward, done, _ = env.step(action)
            # 更新 Q 值
            Q[state][action] += alpha * (reward + gamma * np.max(Q[next_state]) - Q[state][action])
            state = next_state
            if done:
                break
    return Q

3. On-Policy 与 Off-Policy 的区别

  1. 学习与执行策略的关系:On-Policy 学习使用相同的策略进行学习和执行,而 Off-Policy 学习使用不同的策略进行学习和执行。

  2. 数据来源:On-Policy 学习通常使用实时生成的数据进行学习,而 Off-Policy 学习可以使用历史数据进行学习。

  3. 探索与利用的权衡:On-Policy学习需要在探索和利用之间进行权衡,以便发现更好的策略。而 Off-Policy 学习可以通过行为策略进行大量探索,而目标策略则关注性能优化。

  4. 算法示例:典型的 On-Policy 算法有 SARSA 算法,而典型的 Off-Policy 算法有 Q-Learning 算法。

  5. 应用场景:On-Policy 学习适用于实时交互的环境,例如在线学习和实时决策。Off-Policy 学习适用于可以利用历史数据的场景,例如离线学习和批量学习。

4. 示例

为了更好地理解 On-Policy 和 Off-Policy 学习的区别,我们可以考虑一个简单的迷宫环境。在这个环境中,智能体需要从起点到达终点,中间可能会遇到奖励和惩罚。智能体的目标是找到一条最优路径,以便获得最大的累积奖励。

4.1 On-Policy 学习示例

在 On-Policy 学习中,智能体会遵循当前策略进行动作选择,并根据实时经验更新策略。例如,智能体可以使用 ε-贪婪策略进行动作选择,即以 ε 的概率随机选择动作,以 1-ε 的概率选择当前最优动作。智能体会根据实时奖励和下一状态的 Q 值更新当前状态动作对应的 Q 值。

4.2 Off-Policy 学习示例

在 Off-Policy 学习中,智能体可以使用一种探索性的策略进行动作选择,例如完全随机选择动作。然而,在更新策略时,智能体会使用另一种策略,例如贪婪策略。这意味着智能体会根据最优动作的 Q 值更新当前状态动作对应的 Q 值,而不是实际执行的动作的 Q 值。

5. 总结

On-Policy 强化学习和 Off-Policy 强化学习是强化学习中两种重要的学习方法。它们的主要区别在于智能体学习策略的方式。On-Policy 学习遵循当前策略进行学习和执行,而 Off-Policy 学习则使用不同的策略进行学习和执行。这两种方法各有优缺点,适用于不同的应用场景。

无论是 On-Policy 还是 Off-Policy 学习,强

化学习的目标都是找到一个最优策略,使得智能体在长期内能够获得最大的累积奖励。在实际应用中,选择合适的强化学习算法需要考虑任务的特点、状态空间、动作空间、奖励设置等因素。

6. 数学公式

在强化学习中,我们通常使用贝尔曼方程来描述状态值函数和动作值函数的关系。以下是贝尔曼方程的形式:

状态值函数的贝尔曼方程:
V ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ( s ′ ) ) V(s) = \sum_{a \in A} \pi(a|s) \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V(s') \right) V(s)=aAπ(as)(R(s,a)+γsSP(ss,a)V(s))

动作值函数的贝尔曼方程:
Q ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q ( s ′ , a ′ ) Q(s,a) = R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) \sum_{a' \in A} \pi(a'|s') Q(s',a') Q(s,a)=R(s,a)+γsSP(ss,a)aAπ(as)Q(s,a)

其中:

  • ( V(s) ) 表示状态 ( s ) 的值函数。
  • ( Q(s,a) ) 表示在状态 ( s ) 下选择动作 ( a ) 的动作值函数。
  • ( \pi(a|s) ) 表示在状态 ( s ) 下选择动作 ( a ) 的策略概率。
  • ( R(s,a) ) 表示在状态 ( s ) 下选择动作 ( a ) 获得的即时奖励。
  • ( \gamma ) 表示折扣因子,用于调整未来奖励的重要性。
  • ( P(s’|s,a) ) 表示在状态 ( s ) 下选择动作 ( a ) 转移到状态 ( s’ ) 的转移概率。
  • ( S ) 表示状态空间。
  • ( A ) 表示动作空间。

7. 示例

为了进一步说明 On-Policy 和 Off-Policy 学习的区别,我们可以考虑一个简单的格子世界环境。在这个环境中,智能体需要从起点 A 到达终点 B,中间可能会遇到奖励和惩罚。智能体的目标是找到一条最优路径,以便获得最大的累积奖励。

假设我们使用 On-Policy 学习算法 SARSA,智能体会根据当前策略选择动作,并根据实时经验更新策略。智能体可能会尝试不同的路径,逐渐学习到一条最优路径。

而如果我们使用 Off-Policy 学习算法 Q-Learning,智能体可以使用一种探索性的策略进行动作选择,例如完全随机选择动作。然而,在更新策略时,智能体会使用贪

婪策略,即根据最优动作的 Q 值更新当前状态动作对应的 Q 值。这样,智能体可以更快地发现最优路径,并避免陷入次优解。

以下是一个简单的示例,展示了智能体在格子世界中的行为:

+---+---+---+---+
| A |   |   |   |
+---+---+---+---+
|   | # |   |   |
+---+---+---+---+
|   |   |   | B |
+---+---+---+---+
  • 智能体从起点 A 出发,目标是到达终点 B。
  • 智能体可以向上、下、左、右移动。
  • 格子中的 “#” 表示障碍物,智能体无法穿越。
  • 到达终点 B 时获得奖励 +1,撞到障碍物时获得惩罚 -1。

7.1 On-Policy 学习示例

假设我们使用 SARSA 算法进行 On-Policy 学习,智能体会根据 ε-贪婪策略选择动作,并根据实时经验更新 Q 值。智能体可能会尝试不同的路径,逐渐学习到一条最优路径。

智能体的行为可能如下:

1. A → → ↓ B (奖励 +1)
2. A → ↓ → B (奖励 +1)
3. A → ↑ → ↓ B (奖励 +1)
4. A → ↓ # → B (奖励 -1 +1)
...

智能体会不断探索和学习,最终找到一条最优路径。

7.2 Off-Policy 学习示例

假设我们使用 Q-Learning 算法进行 Off-Policy 学习,智能体可以使用完全随机的策略进行动作选择。然而,在更新策略时,智能体会使用贪婪策略,即根据最优动作的 Q 值更新当前状态动作对应的 Q 值。

智能体的行为可能如下:

1. A → ↓ # → B (奖励 -1 +1)
2. A → → ↓ B (奖励 +1)
3. A → ↓ → B (奖励 +1)
4. A → ↑ → ↓ B (奖励 +1)
...

智能体可以更快地发现最优路径,并避免陷入次优解。

8. 总结

On-Policy 强化学习和 Off-Policy 强化学习是强化学习中两种重要的学习方法。它们的主要区别在于智能体学习策略的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值