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∑π(a∣st)⋅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∑π(a∣st)⋅Qπ(st,a)≈a∑π(a∣st;θ)⋅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π(a∣s;θ)⋅q(s,a;w)
我们如何来通过上式更新参数
θ
,
w
\pmb{\theta, w}
θ,w呢? ——控制变量法
- 当我们固定策略 θ \pmb{\theta} θ时,调整价值网络 w \pmb{w} w来使得critic评估尽量接近真实值
- 当我们固定价值 w \pmb{w} w时,调整策略 θ \pmb{\theta} θ,来最大化回报。
3. 所以伪代码为
- 观测当下状态 s t s_t st
- 根据现有策略随机抽样 a t a_t at
- 执行 a t a_t at并观测下一个状态 s t + 1 s_{t+1} st+1和立即回报 r t r_t rt
- 使用时间差分法更新价值网络参数 w \pmb{w} w
- 使用梯度上升更新策略网络参数 θ \pmb{\theta} θ
步骤4详细:
- 先根据现有策略随机抽取下一次动作 a t + 1 a_{t+1} at+1,其实并不执行,为了后续计算使用
- 使用现有的评价网络得到: 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)
- 计算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)
- 计算神经网络梯度: 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
- 更新价值神经网络参数: 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−α⋅δt⋅dw,t
步骤5详细:
- 计算策略网络梯度: 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π(at∣st,θ)∣θ=θt
- 更新策略网络: θ 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+β⋅δt⋅dθ,t