强化学习、策略梯度、baseline技术、A2C方法

读论文的时候感受到了强化学习的有趣之处,记录一下学习A2C方法时的一些理解。网上有很多相关博客,这里不做数学推导和原理分析。更细节的建议看莫烦python

背景

s: state,状态
a: action,动作
r: reward,奖励,r(s,a)表示在s状态执行a动作的即时奖励
π: policy,策略,a=π(s)π(a|s)=P[a|s],在状态s时选择执行a

agent观察environment,根据当前的state,选择要执行的action,得到对应的reward。

  • 基于概率的方法:计算每个动作的概率,根据概率选(Policy Gradient)->Actor
  • 基于价值的方法:计算每个动作的价值,选最高的(Q-learning、SARSA、DQN)->Critic
  • 混合的方法(Actor Critic、A2C、A3C)

策略梯度方法将策略policy表示为连续的函数,通过梯度上升进行优化。然而计算策略梯度需要在环境中采样来产生大量样本,直接计算很慢。

Actor和Critic同时使用,Critic可以单步更新,由Critic指导Actor优化,实现单步更新。

实现

Actor: s -> Actor -> a
Critic: s,a -> Critic -> v

训练有三个部分(s0当前状态,a0当前选择的动作,r1执行后的reward,s1执行后的状态):

Advantage: baseline技术,降低方差,加速收敛。baseline函数target只需与a无关,可以是任意函数

  • critic
    • s1->actor_target->a1
    • ytrue=r1+γcritic_target(s1,a1)
    • ypred=critic(s0,a0)
    • MSELoss
  • actor
    • loss = critic(s0,actor(s0))
  • soft update
    • actor_target和critic_target用下式更新参数:
    • target_params = target_params (1-τ) + params τ
posted @ 2022-07-08 17:25  iFzh  阅读(345)  评论(0)    收藏  举报