在我们研究蒙特卡洛方法(这些方法从采样的经验片段中学习)时,一个基本问题出现了:我们究竟在学习哪种策略?答案区分了强化学习算法的两个主要类别:同策略学习和异策略学习。了解这一区别非常重要,因为它影响我们如何收集经验以及从中能学到什么。它会影响算法设计、稳定性及灵活性,尤其是在平衡试探(尝试新动作)和利用(使用已知好动作)时。同策略学习:边做边学在同策略方法中,智能体学习的是其当前遵循的价值函数或策略。可以将其理解为“边做边学”。用于生成交互数据(即片段)的策略与智能体试图评估和改进的策略是相同的。假设智能体遵循策略$\pi$。它根据$\pi$选择动作与环境交互。它收集像$(S_0, A_0, R_1, S_1, A_1, R_2, ..., S_T)$这样的片段。从这些片段中计算出的回报随后用于估计$V^\pi(s)$或$Q^\pi(s, a)$,即*针对此特定策略$\pi$*的价值函数。随后,$\pi$会根据这些更新的价值估计得到改进,例如通过使其对所学习到的动作价值更具贪婪性。下一批经验随后会利用这个改进后的策略生成。同策略学习的特点:直接经验: 直接从当前策略所采取动作的后果中学习。策略评估与改进: 正在评估和改进的策略与生成数据的策略是相同的。策略内的试探: 试探策略(如$\epsilon$-贪婪,即智能体以$\epsilon$的概率采取随机动作)通常必须是策略$\pi$本身的一部分,以确保对状态-动作空间有足够的覆盖。这意味着正在学习的策略本身通常具有试探性(例如,学习$\epsilon$-贪婪策略的价值)。简洁性: 直观;智能体从它所做的事情中学习。蒙特卡洛方法中的一个典型例子是同策略首次访问蒙特卡洛控制,我们稍后将详细说明。它使用由$\epsilon$-软策略生成的回报来改进同一个$\epsilon$-软策略。异策略学习:从他者经验中学习在异策略方法中,智能体利用遵循不同行为策略$\mu$生成的数据来学习目标策略$\pi$。可以将其理解为通过观察他人(可能技能较差或更具试探性,即$\mu$)执行任务来学习如何最优地执行任务(即$\pi$)。目标策略$\pi$通常是智能体最终想要学习的策略(例如,总是选择估计价值最高的动作的确定性贪婪策略)。然而,行为策略$\mu$是实际用于与环境交互并生成片段的策略。$\mu$可能比$\pi$更具试探性,以确保其收集到更广范围的动作和状态数据。为何使用异策略学习?边试探边学习最优策略: 智能体可以使用高度试探性的策略($\mu$)来收集多样的经验,同时利用这些经验来学习最优的、确定性策略($\pi$)。从历史数据中学习: 它允许从先前策略或甚至人类演示生成的数据中学习(其中行为策略$\mu$是人类或旧智能体遵循的策略)。灵活性: 将数据生成与学习的策略解耦。**面临的挑战:**由于数据来自$\mu$而非$\pi$,访问状态和采取动作的分布不能直接反映在策略$\pi$下会发生什么。$\pi$偏好的动作在$\mu$生成的数据中可能很少出现,反之亦然。直接平均来自$\mu$片段的回报将得到$V^\mu$或$Q^\mu$的估计值,而非$V^\pi$或$Q^\pi$。解决方案:异策略方法需要一种方法来纠正这种不匹配。它们常使用如重要性采样等技术,这涉及根据在目标策略$\pi$下与行为策略$\mu$下所经历轨迹的相对发生概率来加权观测到的回报。这会调整每个片段的贡献,以解释策略之间的差异。本章稍后我们将涉及异策略蒙特卡洛中的重要性采样。异策略学习的特点:间接经验: 使用由另一个策略生成的数据来学习一个策略。目标策略与行为策略分离: 需要区分正在学习的策略($\pi$)和生成数据的策略($\mu$)。需要校正: 需要机制(如重要性采样)来解释$\pi$与$\mu$之间的差异。潜在的更高方差: 重要性采样有时会导致价值估计中出现高方差,尤其是当策略$\pi$和$\mu$非常不同时。Q-学习,我们将在下一章关于时序差分学习中介绍,是一个著名的异策略算法。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif"]; edge [fontname="sans-serif"]; subgraph cluster_on { label = "同策略学习"; style=dashed; color="#adb5bd"; bgcolor="#f8f9fa"; on_policy [label="策略 \u03c0\n(例如,\u03b5-贪婪)"]; on_env [label="与环境交互"]; on_data [label="使用 \u03c0\n生成数据"]; on_eval [label="估计 V\u03c0 或 Q\u03c0"]; on_improve [label="改进 \u03c0"]; on_policy -> on_env [label=" 动作 ", color="#495057"]; on_env -> on_data [label=" 经验 ", color="#495057"]; on_data -> on_eval [label=" 回报 ", color="#1c7ed6"]; on_eval -> on_improve [label=" 价值 ", color="#1c7ed6"]; on_improve -> on_policy [label=" 更新 ", constraint=false, color="#37b24d"]; // 反馈循环 } subgraph cluster_off { label = "异策略学习"; style=dashed; color="#adb5bd"; bgcolor="#f8f9fa"; behavior_policy [label="行为策略 \u03bc\n(例如,试探性)", fillcolor="#ffec99", style=filled]; target_policy [label="目标策略 \u03c0\n(例如,贪婪)", fillcolor="#a5d8ff", style=filled]; off_env [label="与环境交互"]; off_data [label="使用 \u03bc\n生成数据"]; off_correct [label="校正 \u03bc \u2260 \u03c0\n(重要性采样)"]; off_eval [label="估计 V\u03c0 或 Q\u03c0"]; behavior_policy -> off_env [label=" 动作 ", color="#f59f00"]; off_env -> off_data [label=" 经验 ", color="#f59f00"]; off_data -> off_correct [label=" 回报 ", color="#fd7e14"]; off_correct -> off_eval [label=" 加权回报 ", color="#fd7e14"]; off_eval -> target_policy [label=" 更新 \u03c0 的估计值 ", color="#1c7ed6"]; } }同策略与异策略学习流程对比图。同策略使用相同的策略($\pi$)进行交互和学习。异策略使用行为策略($\mu$)进行交互,以学习一个不同的目标策略($\pi$),这需要一个校正步骤。总结表格特点同策略学习异策略学习数据来源正在学习的策略($\pi$)独立的行为策略($\mu$)目标策略正在学习的策略($\pi$)通常是不同的策略($\pi$,例如贪婪策略)试探内置于学习策略($\pi$)中由行为策略($\mu$)处理挑战平衡试探/利用校正策略不匹配(方差)灵活性较低(学习其所做之事)较高(可在试探的同时学习最优策略,利用历史数据)例子同策略蒙特卡洛,SARSA异策略蒙特卡洛,Q-学习总的来说,同策略和异策略方法的选择取决于问题需求。如果您需要学习所使用的特定行为策略(包括其试探性)的价值,同策略方法是合适的。如果您想学习一个最优策略,无论数据收集期间采用何种试探策略,或者您想从不同智能体或策略生成的数据中学习,异策略方法提供了必要的机制。随着我们继续蒙特卡洛控制,我们将看到这种区分如何在算法设计中体现。