强化学习4-actor-critic 方法

Actor-Critic方法是一种强化学习算法,它结合了策略网络和价值网络。状态值函数由这两个网络近似表示,策略网络选择动作,而价值网络评估动作的效果。在训练过程中,通过固定一个网络更新另一个,交替优化策略和价值函数。具体步骤包括使用TD误差更新价值网络参数,然后根据策略梯度更新策略网络。
摘要由CSDN通过智能技术生成

Actor-Critic Methods

1. 状态值函数的近似

现在我们直到状态值函数:
V π ( s t ) = ∑ a π ( a ∣ s t ) ⋅ Q π ( s t , a ) . V_{\pi}(s_t) = \sum_a\pi (a|s_t)\cdot Q_\pi (s_t, a). Vπ(st)=aπ(ast)Qπ(st,a).

等式右边有两个函数,一个是策略函数,一个是价值函数,策略用来给出动作的概率,价值用来给出动作的回报,遍历所有动作,即得到该状态下的状态值函数。

我们现在的方案是将策略函数价值函数用两个神经网络来代替:

V π ( s t ) = ∑ a π ( a ∣ s t ) ⋅ Q π ( s t , a ) ≈ ∑ a π ( a ∣ s t ; θ ) ⋅ Q π ( s t , a ; w ) V_{\pi}(s_t) = \sum_a\pi (a|s_t)\cdot Q_\pi (s_t, a) \approx \sum_a\pi (a|s_t; \pmb{\theta})\cdot Q_\pi (s_t, a;\pmb{w}) Vπ(st)=aπ(ast)Qπ(st,a)aπ(ast;θ)Qπ(st,a;w)

其中 θ \pmb{\theta} θ , w \pmb{w} w表示两个神经网络的参数(用来训练)。
请添加图片描述

策略网络控制动作, 而价值网络评价动作的好坏。

2. 训练网路

现在我们得到了一个状态值函数的表达式:
V ( s ; θ , w ) = ∑ a π ( a ∣ s ; θ ) ⋅ q ( s , a ; w ) V(s;\pmb{\theta, w}) = \sum_a\pi(a|s;\pmb{\theta}) \cdot q(s,a;\pmb{w}) V(s;θ,w)=aπ(as;θ)q(s,a;w)
我们如何来通过上式更新参数 θ , w \pmb{\theta, w} θ,w呢? ——控制变量法

  1. 当我们固定策略 θ \pmb{\theta} θ时,调整价值网络 w \pmb{w} w来使得critic评估尽量接近真实值
  2. 当我们固定价值 w \pmb{w} w时,调整策略 θ \pmb{\theta} θ,来最大化回报。

3. 所以伪代码为

  1. 观测当下状态 s t s_t st
  2. 根据现有策略随机抽样 a t a_t at
  3. 执行 a t a_t at并观测下一个状态 s t + 1 s_{t+1} st+1和立即回报 r t r_t rt
  4. 使用时间差分法更新价值网络参数 w \pmb{w} w
  5. 使用梯度上升更新策略网络参数 θ \pmb{\theta} θ

步骤4详细:

  1. 先根据现有策略随机抽取下一次动作 a t + 1 a_{t+1} at+1,其实并不执行,为了后续计算使用
  2. 使用现有的评价网络得到: q t = q ( s t , a t ; w t ) q_t=q(s_t, a_t; \pmb{w_t}) qt=q(st,at;wt) q t + 1 = q ( s t + 1 , a t + 1 ; w t ) q_{t+1} = q(s_{t+1}, a_{t+1}; \pmb{w_t}) qt+1=q(st+1,at+1;wt)
  3. 计算TD error: δ t = q t − ( r t + γ ⋅ q t + 1 ) \delta_t = q_t - (r_t + \gamma \cdot q_{t+1}) δt=qt(rt+γqt+1)
  4. 计算神经网络梯度: d w , t = δ q ( s t , a t ; w ) δ w ∣ w = w t d_{w, t}= \frac{\delta q(s_t, a_t; \pmb{w})}{\delta \pmb{w}} |_{\pmb{w=w_t}} dw,t=δwδq(st,at;w)w=wt
  5. 更新价值神经网络参数: w t + 1 = w t − α ⋅ δ t ⋅ d w , t \pmb{w_{t+1} }= \pmb{w_t} - \alpha \cdot \delta_t \cdot \pmb{d_{w, t}} wt+1=wtαδtdw,t

步骤5详细:

  1. 计算策略网络梯度: d θ , t = δ l o g π ( a t ∣ s t , θ ) δ θ ∣ θ = θ t \pmb{d_{\theta,t}} = \frac{\delta log\pi(a_t|s_t,\pmb{\theta)}}{\delta \theta} |_{\pmb{\theta = \theta_t}} dθ,t=δθδlogπ(atst,θ)θ=θt
  2. 更新策略网络: θ t + 1 = θ t + β ⋅ δ t ⋅ d θ , t \pmb{\theta_{t+1}} = \pmb{\theta_t}+\beta\cdot\pmb{\delta_t \cdot d_{\theta, t}} θt+1=θt+βδtdθ,t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值