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

On-PolicyvsOff-Policy强化学习:概念、算法与比较
本文详细介绍了强化学习中的On-Policy和Off-Policy学习方法,包括它们的概念、特点和典型算法如SARSA和Q-Learning。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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值