强化学习、策略梯度、baseline技术、A2C方法
读论文的时候感受到了强化学习的有趣之处,记录一下学习A2C方法时的一些理解。网上有很多相关博客,这里不做数学推导和原理分析。更细节的建议看莫烦python。
背景
: state,状态
: action,动作
: reward,奖励,表示在状态执行动作的即时奖励
: policy,策略,或,在状态时选择执行
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
训练有三个部分(当前状态,当前选择的动作,执行后的reward,执行后的状态):
Advantage: baseline技术,降低方差,加速收敛。baseline函数target只需与a无关,可以是任意函数
- critic
- ->actor_target->
- MSELoss
- actor
- soft update
- actor_target和critic_target用下式更新参数:
- target_params = target_params (1-) + params
浙公网安备 33010602011771号