(6-1-01)Actor-Critic算法:Actor-Critic原理(1)

Actor-Critic是一种强化学习算法,结合了策略梯度方法和价值函数估计。其中,“Actor”负责根据当前策略选择动作,而“Critic”则对策略进行评估,提供价值函数估计。通过“Critic”对“Actor”策略的反馈来更新策略,使智能体在环境中获得更高回报。这种方法既利用了策略梯度的直接性,又借助了价值函数的稳定性,适用于复杂环境中的决策优化,是强化学习中一种高效且广泛应用的算法。

6.1  Actor-Critic原理

Actor-Critic(演员-评论家)算法是一种强化学习算法,用于解决马尔可夫决策过程(MDP)中的连续动作空间问题。Actor-Critic结合了两个重要的组件:演员(Actor)和评论家(Critic),每个组件有不同的角色和功能。

6.1.1  策略梯度与值函数结合的动机

在强化学习中,策略梯度方法和值函数方法是两种主要的优化策略。然而,它们各自存在一些局限性,而Actor-Critic算法通过结合两者的优点,克服了这些局限性。

1. 策略梯度方法的局限性

  1. 样本效率低:策略梯度方法直接优化策略,通过采样来估计策略梯度。然而,采样过程可能非常低效,尤其是在动作空间较大或环境复杂时,需要大量的样本才能获得准确的梯度估计。
  2. 方差较大:策略梯度的更新依赖于奖励信号,而奖励信号可能具有很高的方差。这可能导致学习过程不稳定,收敛速度较慢。
  3. 缺乏价值函数的指导:策略梯度方法直接优化策略,但缺乏对状态价值的估计。这意味着它无法有效利用价值函数来指导策略更新,从而无法充分利用环境的结构信息。

2. 值函数方法的局限性

  1. 难以处理连续动作空间:传统的值函数方法(如Q-learning)通常需要对动作空间进行离散化,这在连续动作空间中是不切实际的。连续动作空间的复杂性使得值函数方法难以直接应用。
  2. 缺乏直接的策略更新:值函数方法主要关注状态或状态-动作对的价值,但并不直接提供策略更新的机制。虽然可以通过ε-greedy等方法选择动作,但这种方法可能不够灵活,难以适应复杂的决策场景。

3. 结合策略梯度与值函数的动机

  1. 提高样本效率:通过引入值函数,可以对策略的性能进行更准确的评估。值函数提供了对状态价值的估计,这可以作为策略更新的基准,从而减少样本的浪费,提高学习效率。
  2. 降低方差:值函数可以作为基线(baseline)来减少策略梯度的方差。通过从奖励信号中减去状态价值,可以降低梯度估计的波动,使学习过程更加稳定。
  3. 充分利用环境信息:值函数能够捕捉到环境的结构信息,例如哪些状态更有价值。结合策略梯度方法,可以利用这些信息来指导策略的优化,从而更好地适应复杂的环境。
  4. 适应连续动作空间:Actor-Critic算法通过参数化策略函数(如使用神经网络)来处理连续动作空间,同时利用值函数来评估策略的性能。这种结合方式使得算法能够有效地处理连续动作空间问题,而无需对动作空间进行离散化。

总之,将策略梯度与值函数结合的动机在于克服单一方法的局限性,通过两者的协同作用,提高强化学习算法的效率、稳定性和适应性,使其能够更好地应用于复杂的决策问题。

6.1.2  Actor与Critic的角色分工

在Actor-Critic算法中,Actor和Critic是两个核心组件,它们各自承担不同的角色和功能,通过协同工作来优化智能体的策略。

1. Actor(演员)的角色

  1. 定义策略:Actor负责定义和更新策略函数(Policy Function),即根据当前状态 s 输出一个动作 a 的概率分布或直接输出一个动作。策略函数通常用参数化的方式表示,例如通过神经网络来实现。
  2. 选择动作:在每个时间步,Actor根据当前策略从状态 s 中选择一个动作 a。这个动作决定了智能体在环境中的下一步行为。
  3. 策略更新:Actor的目标是优化策略,使其能够最大化累积奖励。它通过接收Critic的反馈(即价值函数的估计)来调整策略参数。具体来说,Actor根据策略梯度方法更新策略,利用Critic提供的价值函数作为基线来减少梯度估计的方差。

2. Critic(评论家)的角色

  1. 评估策略:Critic负责评估当前策略的性能。它通过学习状态价值函数 V(s) 或状态-动作价值函数 Q(s,a) 来估计在当前策略下,从状态 s 开始的预期累积奖励。
  2. 提供反馈:Critic通过计算价值函数的估计值来为Actor提供反馈。这些反馈信息用于指导Actor的策略更新。例如,Critic可以计算状态价值函数 V(s) 或优势函数 A(s,a),并将其作为信号传递给Actor。
  3. 价值函数更新:Critic通过学习算法(如TD学习或Q学习)来更新价值函数的参数。它根据环境提供的奖励信号和状态转移信息,逐步逼近真实的价值函数。Critic的目标是尽可能准确地估计价值函数,从而为Actor提供可靠的反馈。

3. 协同工作

  1. Actor与Critic的交互:Actor根据Critic提供的价值函数估计来更新策略,而Critic则根据Actor的策略来评估其性能。这种交互形成了一个闭环反馈系统,使得两者能够协同优化。
  2. 策略优化与价值评估的分离:通过将策略优化和价值评估分开,Actor-Critic算法能够更高效地利用计算资源。Actor专注于策略的改进,而Critic专注于价值函数的估计,两者相互促进,共同推动智能体的学习过程。
  3. 动态调整:在学习过程中,Actor和Critic的参数会不断更新。Actor根据Critic的反馈调整策略,而Critic则根据新的策略重新评估价值函数。这种动态调整机制使得算法能够适应环境的变化,并逐步收敛到最优策略。

总而言之,在Actor-Critic算法中,Actor负责定义和更新策略,选择动作并根据Critic的反馈优化策略;Critic则负责评估策略的性能,提供价值函数估计作为反馈,并更新价值函数。两者的协同工作使得算法能够高效地优化策略,同时降低学习过程中的方差,提高样本效率。这种分工明确的架构是Actor-Critic算法的核心优势之一。

6.1.3  策略评估与策略改进的闭环

在Actor-Critic算法中,策略评估与策略改进形成了一个闭环反馈系统,这是算法能够不断优化智能体行为的关键机制。以下是该闭环的具体工作原理和作用。

1. 策略评估(Policy Evaluation

策略评估是Critic的主要职责,其目标是评估当前策略 π 的性能。具体来说,Critic通过学习价值函数来量化在当前策略下,从某个状态或状态-动作对开始的预期累积奖励。常见的价值函数包括:

  1. 状态价值函数 ​(s):表示在策略 π 下,从状态 s 开始的预期累积奖励。
  2. 状态-动作价值函数 ​(s,a):表示在策略 π 下,从状态 s 采取动作 a 后的预期累积奖励。
  3. 优势函数 ​(s,a):表示在策略 π 下,采取动作 a 相对于当前策略的平均动作的额外价值,即:

Critic通过时间差分(TD)学习或其他方法来更新价值函数的参数,逐步逼近真实的价值函数。策略评估的目的是为策略改进提供准确的反馈信息。

2. 策略改进(Policy Improvement

策略改进是Actor的主要职责,其目标是根据Critic提供的价值函数估计来优化策略 π。具体来说,Actor通过以下步骤进行策略改进:

  1. 计算策略梯度:Actor利用Critic提供的价值函数估计(如 ​(s) 或 ​(s,a))来计算策略梯度。策略梯度方法通过最大化期望累积奖励来更新策略参数。例如,使用策略梯度定理:

其中,θ 是策略参数,是参数化的策略是优势函数估计。

  1. 更新策略参数:Actor根据计算得到的策略梯度更新策略参数 θ,使策略朝着提高累积奖励的方向改进。

3. 闭环反馈机制

策略评估与策略改进形成了一个闭环反馈系统,具体实现过程如下所示。

(1)初始策略:从一个初始策略π0​开始。

(2)策略评估:Critic评估当前策略 π 的性能,计算价值函数​(s)或​(s,a)。

(3)策略改进:Actor根据Critic提供的价值函数估计,计算策略梯度并更新策略参数,得到新的策略 π′。

(4)迭代更新:将新的策略 π′ 作为当前策略,重复步骤(2)和(3),直到策略收敛到最优策略 π∗。

总之,在Actor-Critic算法中,策略评估与策略改进形成了一个闭环反馈系统。Critic负责评估当前策略的性能,提供价值函数估计;Actor根据这些估计计算策略梯度并更新策略。这种闭环机制使得算法能够动态调整策略,降低学习过程中的方差,并高效地优化策略,最终逼近最优策略。

6.1.4  经典AC算法流程

经典的Actor-Critic算法是一种结合了策略梯度和价值函数估计的强化学习方法。它通过Actor(演员)和Critic(评论家)的协同工作来优化策略,以下是其详细的算法流程:

1. 初始化

  1. 策略函数:初始化参数化的策略函数πθ​(as),通常使用神经网络来表示。策略函数的参数为 θ
  2. 价值函数:初始化参数化的价值函数​(s),通常也使用神经网络来表示。价值函数的参数为 ϕ
  3. 学习率:设置策略更新的学习率αθ​ 和价值函数更新的学习率αϕ​。
  4. 其他参数:设置折扣因子γ和其他超参数(如探索率等)。

2. 主循环

重复以下步骤,直到策略收敛或达到最大迭代次数:

(1)样交互

  1. 选择动作:在当前状态 st​ 下,使用策略函数 πθ​(ast​) 选择一个动作 at​。
  2. 执行动作:在环境中执行动作 at​,观察环境返回的下一个状态 st+1​ 和奖励 rt​。

(2)Critic评估策略

  1. 计算目标价值:使用贝尔曼方程计算目标价值:

其中,是Critic对下一个状态的价值估计。

  1. 更新价值函数:通过最小化均方误差来更新价值函数的参数 ϕ

具体来说,计算梯度:

然后更新参数:

(3)Actor改进策略

  1. 计算优势函数:计算优势函数 At​,可以使用以下公式:

优势函数表示当前动作相对于平均动作的额外价值。

  1. 更新策略函数:通过策略梯度方法更新策略函数的参数 θ

其中,是策略函数的梯度,At是优势函数。

(4)状态更新

  1. 更新状态:将当前状态更新为下一个状态:

  1. 检查终止条件:如果达到终止条件(如完成一个episode或达到最大时间步),则重置环境,开始新的episode。

3. 算法终止

(1)检查收敛:在每个episode结束后,检查策略是否收敛。可以使用策略的参数变化或平均奖励的变化来判断。

(2)保存结果:保存最终的策略参数 θ 和价值函数参数 ϕ

下面是经典的Actor-Critic算法的伪代码:

初始化策略函数 π_θ(a|s) 和价值函数 V_ϕ(s)
设置学习率 α_θ, α_ϕ, 折扣因子 γ

while 未达到终止条件 do
    初始化状态 s_t
    while 未到达终止状态 do
        选择动作 a_t ~ π_θ(a|s_t)
        执行动作 a_t,观察 s_{t+1} 和 r_t
        
        计算目标价值 y_t = r_t + γ V_ϕ(s_{t+1})
        更新价值函数参数 ϕ:
            ϕ ← ϕ + α_ϕ (y_t - V_ϕ(s_t)) ∇_ϕ V_ϕ(s_t)
        
        计算优势函数 A_t = y_t - V_ϕ(s_t)
        更新策略函数参数 θ:
            θ ← θ + α_θ ∇_θ log π_θ(a_t | s_t) A_t
        
        更新状态 s_t ← s_{t+1}
    end while
end while

总之,经典的Actor-Critic算法通过Critic评估当前策略的价值,并通过Actor根据这些价值信息改进策略。这种闭环机制使得算法能够高效地优化策略,同时降低学习过程中的方差。通过不断迭代策略评估和策略改进,最终可以逼近最优策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值