【强化学习入门-2】深入理解策略优化和值函数估计

【强化学习入门-2】深入理解策略优化和值函数估计


昨天的内容详细阐述了策略函数和价值函数的内容,今天的文章将再昨天内容的基础上再深入一些,首先将再对策略和价值做一个更深入的解释,然后将深入区分并理解策略优化于值函数估计。


基于概率or基于价值?

抉择

抉择

  • 基于概率的强化学习将生成对应的每个动作可能的可能性,但是对于最终的选择可能不一定会选择概率最高的动作。
  • 基于价值的强化学习则会直接生成每个动作的价值,然后选择价值最高的动作。

空间

空间

  • 基于概率的强化学习在连续的空间中可以生成动作的概率。
  • 基于价值的强化学习难以在连续空间中进行操作。

算法

算法

1. 策略优化 (Policy Optimization)

1.1 策略的定义

策略 π ( a ∣ s ) \pi(a|s) π(as) 是一个函数,定义在状态 s s s 下采取动作 a a a 的概率分布。它可以是 随机策略确定性策略

  • 随机策略: π ( a ∣ s ; θ ) \pi(a|s; \theta) π(as;θ) 输出动作概率分布,动作通过采样获得。
  • 确定性策略: μ ( s ; θ ) \mu(s; \theta) μ(s;θ) 输出具体动作。

目标是通过优化策略的参数 θ \theta θ,找到能够 最大化累积奖励 的最优策略。

1.2 策略的目标

强化学习的目标是最大化某个策略下的预期累积奖励 J ( π ) J(\pi) J(π)
J ( π ) = E π [ ∑ t = 0 ∞ γ t r ( s t , a t ) ] J(\pi) = \mathbb{E}_{\pi} \left[ \sum_{t=0}^\infty \gamma^t r(s_t, a_t) \right] J(π)=Eπ[t=0γtr(st,at)]

1.3 策略梯度

策略梯度方法通过计算目标函数 J ( π ) J(\pi) J(π) 对策略参数 θ \theta θ 的梯度,从而优化策略:
∇ θ J ( π ) = E π [ ∇ θ log ⁡ π ( a ∣ s ; θ ) Q π ( s , a ) ] \nabla_{\theta} J(\pi) = \mathbb{E}_{\pi} \left[ \nabla_{\theta} \log \pi(a|s; \theta) Q^\pi(s, a) \right] θJ(π)=Eπ[θlogπ(as;θ)Qπ(s,a)]

公式解释:
  1. log ⁡ π ( a ∣ s ; θ ) \log \pi(a|s; \theta) logπ(as;θ):
    • 策略的对数概率,表示在状态 s s s 下选择动作 a a a 的倾向性。
  2. Q π ( s , a ) Q^\pi(s, a) Qπ(s,a):
    • 评估当前动作 a a a 的“好坏”。
  3. 梯度的作用:
    • 如果 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 大(动作 a a a 的回报高),则增大其概率 π ( a ∣ s ; θ ) \pi(a|s; \theta) π(as;θ)
    • 如果 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 小,则减少其概率。

1.4 策略优化的关键

  • 策略梯度方法直接优化策略,但需要一个外部信号(例如值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 或优势函数 A ( s , a ) A(s, a) A(s,a))来指导优化过程。
  • 优化过程需要平衡 探索开发(即既要尝试新策略,也要利用现有策略)。

2. 值函数估计 (Value Function Approximation)

2.1 值函数的定义

值函数是强化学习中用于评估状态或动作“好坏”的工具,分为以下两种:

  1. 状态值函数 V π ( s ) V^\pi(s) Vπ(s):

    • 表示从状态 s s s 开始,按照策略 π \pi π 行动的期望累积奖励:
      V π ( s ) = E π [ ∑ t = 0 ∞ γ t r ( s t , a t ) ∣ s 0 = s ] V^\pi(s) = \mathbb{E}_{\pi} \left[ \sum_{t=0}^\infty \gamma^t r(s_t, a_t) \mid s_0 = s \right] Vπ(s)=Eπ[t=0γtr(st,at)s0=s]
  2. 状态-动作值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a):

    • 表示在状态 s s s 下执行动作 a a a,然后按照策略 π \pi π 行动的期望累积奖励:
      Q π ( s , a ) = E π [ r ( s , a ) + γ V π ( s ′ ) ] Q^\pi(s, a) = \mathbb{E}_{\pi} \left[ r(s, a) + \gamma V^\pi(s') \right] Qπ(s,a)=Eπ[r(s,a)+γVπ(s)]

2.2 值函数的作用

  • 值函数提供对当前策略的评估。
  • 强化学习算法通过估计值函数来指导策略优化。
值函数在算法中的用法
  1. 评估策略的好坏:
    • V π ( s ) V^\pi(s) Vπ(s) Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 衡量当前策略的表现。
  2. 指导动作选择:
    • 通过值函数,策略可以选择使 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) 最大化的动作。

2.3 值函数的更新方法

值函数基于 贝尔曼方程 进行更新:

  1. 贝尔曼方程:

    • 状态值函数:
      V π ( s ) = E π [ r ( s , a ) + γ V π ( s ′ ) ] V^\pi(s) = \mathbb{E}_{\pi} \left[ r(s, a) + \gamma V^\pi(s') \right] Vπ(s)=Eπ[r(s,a)+γVπ(s)]
    • 状态-动作值函数:
      Q π ( s , a ) = r ( s , a ) + γ E a ′ ∼ π [ Q π ( s ′ , a ′ ) ] Q^\pi(s, a) = r(s, a) + \gamma \mathbb{E}_{a' \sim \pi} [Q^\pi(s', a')] Qπ(s,a)=r(s,a)+γEaπ[Qπ(s,a)]
  2. 迭代更新:

    • 使用 时序差分(Temporal Difference, TD)学习 来更新值函数。
    • 目标是最小化预测值与目标值的误差,例如:
      L ( θ v ) = E ( s , a , r , s ′ ) [ ( Q target − Q ( s , a ; θ v ) ) 2 ] L(\theta^v) = \mathbb{E}_{(s, a, r, s')} \left[ \left( Q^\text{target} - Q(s, a; \theta^v) \right)^2 \right] L(θv)=E(s,a,r,s)[(QtargetQ(s,a;θv))2]
    • 目标值:
      Q target = r + γ Q ( s ′ , a ′ ; θ v ) Q^\text{target} = r + \gamma Q(s', a'; \theta^v) Qtarget=r+γQ(s,a;θv)

3. 策略优化与值函数估计的结合

策略优化和值函数估计是强化学习的两大支柱。Actor-Critic 方法将两者结合:

  1. Actor(策略网络):
    • 负责优化策略 π ( a ∣ s ; θ π ) \pi(a|s; \theta^\pi) π(as;θπ),直接输出动作概率。
  2. Critic(值函数网络):
    • 负责评估策略,估计 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) V π ( s ) V^\pi(s) Vπ(s)
结合方法
  • Critic 提供一个信号(如 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a))给 Actor,用于计算策略梯度:
    ∇ θ π J = E π [ ∇ θ π log ⁡ π ( a ∣ s ; θ π ) Q π ( s , a ) ] \nabla_{\theta^\pi} J = \mathbb{E}_{\pi} \left[ \nabla_{\theta^\pi} \log \pi(a|s; \theta^\pi) Q^\pi(s, a) \right] θπJ=Eπ[θπlogπ(as;θπ)Qπ(s,a)]
  • Actor 优化策略,而 Critic 用于引导 Actor。

4. 举例:策略优化和值函数估计的实际流程

以一个机器人控制任务为例:

  1. 初始策略:
    • 策略 π ( a ∣ s ; θ ) \pi(a|s; \theta) π(as;θ) 是一个神经网络,输出给定状态 s s s 下的动作分布。
  2. 与环境交互:
    • 使用策略 π \pi π 选择动作 a a a,执行后获得奖励 r r r 和新状态 s ′ s' s
  3. 值函数估计:
    • 使用 Critic 网络估计 Q ( s , a ) Q(s, a) Q(s,a) V ( s ) V(s) V(s)
    • 计算 TD 误差:
      δ = r + γ V ( s ′ ) − V ( s ) \delta = r + \gamma V(s') - V(s) δ=r+γV(s)V(s)
    • 更新 Critic 网络参数以最小化误差。
  4. 策略更新:
    • 使用 Critic 提供的 Q ( s , a ) Q(s, a) Q(s,a) 或优势函数 A ( s , a ) A(s, a) A(s,a) 更新策略:
      ∇ θ π J = ∇ θ π log ⁡ π ( a ∣ s ; θ π ) A ( s , a ) \nabla_{\theta^\pi} J = \nabla_{\theta^\pi} \log \pi(a|s; \theta^\pi) A(s, a) θπJ=θπlogπ(as;θπ)A(s,a)

5. 总结

  • 策略优化:
    • 直接优化策略,使其产生更高的累计奖励。
    • 核心公式:策略梯度 ∇ θ π J = ∇ θ π log ⁡ π ( a ∣ s ; θ π ) Q π ( s , a ) \nabla_{\theta^\pi} J = \nabla_{\theta^\pi} \log \pi(a|s; \theta^\pi) Q^\pi(s, a) θπJ=θπlogπ(as;θπ)Qπ(s,a)
  • 值函数估计:
    • 评估当前策略,用于指导优化。
    • 核心公式:基于贝尔曼方程学习 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a) V π ( s ) V^\pi(s) Vπ(s)

在理解了策略优化和值函数估计后,可以更好的理解强化学习中的 Actor-Critic 方法,以及其他基于策略和值函数的深度强化学习算法。

PS:图片来自b站莫凡python强化学习课程。很好的教程推荐希望了解并学习的初学者观看:链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值