强化学习(四)—— Actor-Critic

强化学习(四)—— Actor-Critic

  • 1. 网络结构
  • 2. 网络函数
  • 2. 策略网络的更新-策略梯度
  • 3. 价值网络的更新-时序差分(TD)
  • 4. 网络训练流程
  • 3. 案例

强化学习(四)—— Actor-Critic_第1张图片

1. 网络结构

  • 状态价值函数:
    V π ( s t ) = ∑ a Q π ( s t , a ) ⋅ π ( a ∣ s t ) V_\pi(s_t)=\sum_aQ_\pi(s_t,a)\cdot\pi(a|s_t) Vπ(st)=aQπ(st,a)π(ast)

  • 通过策略网络近似策略函数:
    π ( a ∣ s ) ≈ π ( a ∣ s ; θ ) \pi(a|s)\approx\pi(a|s;\theta) π(as)π(as;θ)
    强化学习(四)—— Actor-Critic_第2张图片

  • 通过价值网络近似动作价值函数:
    q ( s , a ; W ) ≈ Q ( s , a ) q(s,a;W)\approx Q(s,a) q(s,a;W)Q(s,a)
    强化学习(四)—— Actor-Critic_第3张图片

  • 神经网络近似后的状态价值函数:
    V ( s ; θ , W ) = ∑ a q ( s , a ; W ) ∗ π ( a ∣ s ; θ ) V(s;\theta ,W)=\sum_aq(s,a;W)*\pi(a|s;\theta) V(s;θ,W)=aq(s,a;W)π(as;θ)

  • 通过对策略网络不断更新以增加状态价值函数值。

  • 通过对价值网络不断更新来更好的预测所获得的回报。

2. 网络函数

Policy Network

  • 通过策略网络近似策略函数
    π ( a ∣ s t ) ≈ π ( a ∣ s t ; θ ) π(a|s_t)≈π(a|s_t;\theta) π(ast)π(ast;θ)
  • 状态价值函数及其近似
    V π ( s t ) = ∑ a π ( a ∣ s t ) Q π ( s t , a ) V_π(s_t)=\sum_aπ(a|s_t)Q_π(s_t,a) Vπ(st)=aπ(ast)Qπ(st,a)
    V ( s t ; θ ) = ∑ a π ( a ∣ s t ; θ ) ⋅ Q π ( s t , a ) V(s_t;\theta)=\sum_aπ(a|s_t;\theta)·Q_π(s_t,a) V(st;θ)=aπ(ast;θ)Qπ(st,a)
  • 策略学习最大化的目标函数
    J ( θ ) = E S [ V ( S ; θ ) ] J(\theta)=E_S[V(S;\theta)] J(θ)=ES[V(S;θ)]
  • 依据策略梯度上升进行
    θ ← θ + β ⋅ ∂ V ( s ; θ ) ∂ θ \theta\gets\theta+\beta·\frac{\partial V(s;\theta)}{\partial \theta} θθ+βθV(s;θ)

2. 策略网络的更新-策略梯度

Policy Network

  • 策略梯度为:
    g ( a , θ ) = ∂ l n π ( a ∣ s ; θ ) ∂ θ ⋅ q ( s , a ; W ) ∂ V ( s ; θ , W ) ∂ θ = E [ g ( A , θ ) ] g(a,\theta)=\frac{\partial ln\pi(a|s;\theta)}{\partial \theta}\cdot q(s,a;W)\\\frac{\partial V(s;\theta,W)}{\partial \theta}=E[g(A,\theta)] g(a,θ)=θlnπ(as;θ)q(s,a;W)θV(s;θ,W)=E[g(A,θ)]
  • 可采用随机策略梯度,(无偏估计)
    a ∼ π ( ⋅ ∣ s t ; θ ) θ t + 1 = θ t + β ⋅ g ( a , θ t ) a\sim \pi(\cdot|s_t;\theta)\\\theta_{t+1}=\theta_t+\beta·g(a,\theta_t) aπ(st;θ)θt+1=θt+βg(a,θt)

3. 价值网络的更新-时序差分(TD)

  • TD的目标:
    y t = r t + γ q ( s t + 1 , a t + 1 ; W t ) y_t= r_t+\gamma q(s_{t+1},a_{t+1};W_t) yt=rt+γq(st+1,at+1;Wt)
  • 损失函数为:
    l o s s = 1 2 [ q ( s t , a t ; W t ) − y t ] 2 loss = \frac{1}{2}[q(s_t,a_t;W_t)-y_t]^2 loss=21[q(st,at;Wt)yt]2
  • 采用梯度下降进行更新:
    W t + 1 = W t − α ⋅ ∂ l o s s ∂ W ∣ W = W t W_{t+1}=W_t-\alpha\cdot\frac{\partial loss}{\partial W}|_{W=W_t} Wt+1=WtαWlossW=Wt

4. 网络训练流程

一次更新中,Agent执行一次动作,获得一次奖励。

  1. 获得状态st并随机采样动作: a t ∼ π ( ⋅ ∣ s t ; θ ) a_t \sim\pi(\cdot|s_t;\theta) atπ(st;θ)
  2. Agent执行动作,并获得环境的新状态和奖励: s t + 1 r t s_{t+1}\\r_t st+1rt
  3. 依据新状态再次随机采样动作(该动作在本次迭代中并不执行): a ~ t + 1 ∼ π ( ⋅ ∣ s t + 1 ; θ ) \tilde{a}_{t+1}\sim\pi(\cdot|s_{t+1};\theta) a~t+1π(st+1;θ)
  4. 依据价值网络,分别计算两个动作和状态的价值: q t = q ( s t , a t ; W t ) q t + 1 = q ( s t + 1 , a ~ t + 1 ; W t ) q_t=q(s_t,a_t;W_t)\\q_{t+1}=q(s_{t+1},\tilde{a}_{t+1};W_t) qt=q(st,at;Wt)qt+1=q(st+1,a~t+1;Wt)
  5. 计算TD误差: δ t = q t − ( r t + γ q t + 1 ) \delta_t=q_t-(r_t+\gamma q_{t+1}) δt=qt(rt+γqt+1)
  6. 计算价值网络的导数: d W , t = ∂ q ( s t , a t ; W ) ∂ W ∣ W = W t d_{W,t}=\frac{\partial q(s_t,a_t;W)}{\partial W}|_{W=W_t} dW,t=Wq(st,at;W)W=Wt
  7. 对价值网络进行梯度更新: W t + 1 = W t − α ⋅ δ t ⋅ d W , t W_{t+1}=W_t-\alpha\cdot\delta_t\cdot d_{W,t} Wt+1=WtαδtdW,t
  8. 计算策略网络的梯度: d θ , t = ∂ l n [ π ( ⋅ ∣ s t ; θ ) ] ∂ θ ∣ θ = θ t d_{\theta,t}=\frac{\partial ln[\pi(\cdot|s_t;\theta)]}{\partial\theta}|_{\theta=\theta_t} dθ,t=θln[π(st;θ)]θ=θt
  9. 对策略网络进行梯度更新,式(2)为式(1)对动作价值函数值使用了baseline,目标函数的期望一致,但是方差减小,网络更容易收敛。 θ t + 1 = θ + β ⋅ q t ⋅ d θ , t θ t + 1 = θ + β ⋅ δ t ⋅ d θ , t \theta_{t+1}=\theta+\beta\cdot q_t\cdot d_{\theta,t}\\\theta_{t+1}=\theta+\beta\cdot \delta_t\cdot d_{\theta,t} θt+1=θ+βqtdθ,tθt+1=θ+βδtdθ,t

3. 案例

目前没有好的方法近似动作价值函数,则未撰写案例。

本文部分内容为参考B站学习视频书写的笔记!

by CyrusMay 2022 03 29

你可能感兴趣的:(强化学习,python,强化学习,人工智能,算法,Actor-Critic)