李宏毅教授A3C课程笔记总结
A3C (Asynchronous Advantage Actor-Critic)
远优于DQN
Alpha go用到了model-based的方法
On-policy:学习的agent和与环境互动的agent是同一个
Off-policy:学习的agent和与环境互动的agent是不同的
注意学习的agent和交互的agent之间的差别不能太大
Actor:是一个神经网络,输入是观察observation,输出是action
可以为连续值
衡量actor:expected total reward期望回报累加值(因为即使是相同的actor,每次得到的回报还是不同:①面对同样的画面,随机策略会导致结果不同;②即使是确定性策略,环境也有可能是随机的)
Actor的梯度更新:提升正向回报的几率,降低负值回报的几率,这里的回报值采用的是累计回报值而不是即时回报
Critic:评估actor π的好坏
MC方法/TD方法
MC比TD的方差更大,MC是无偏估计,TD是有偏估计
示例:
如果环境有马尔科夫特性,即为不受前一状态影响,那么TD比较准确,否则MC比较准确
Advantage actor-critic:
将等到回合结束后累计的回报值改为用critic进行估计
Actor和critic训练技巧:
- Actor和critic部分网络参数可以共享
- 输出的熵可以尽量大->输出的分布偏向于平滑而不是集中->actor可以增加探索的机会
Asynchronous:
具有共同的参数θ1,每个worker都有actor和critic,多个actor和critic的pair在和环境做互动,加速累积经验
学习过程:
- 复制全局参数θ1
- 采样数据,每个worker和环境做交互
- 计算梯度
- 更新全局模型θ1+ηΔθ
Pathwise Derivative Policy Gradient
Critic不止会评价actor的好坏,并给予建议
原始actor-critic缺点:没有采样到的action,那么永远无法探索到这种情况,尤其是在连续空间中
Q-learning:由于已知Q函数的参数,因此可以知道比a要更好的action
对于better的定义:
但其不适用于连续动作的情况,因为要对每个action都做梯度上升
使用TD估计Qπ(s,a):
若同时使用梯度下降学习两个Qπ那么结果会非常不稳定,因此固定其中一个Qπ当作是目标,调整另一个Qπ,当这个Qπ学习好以后,再将其参数复制给之前固定住的Qπ
因为,所以通常倾向于高估Q值
解决方法:double DQN
在原始Q-learning中,决定采取action和计算Q值都是同一个Q函数
而在double DQN中采用两个Q函数Q和Q’,其中Q决定采用哪个action,Q’用于计算Q值来防止高估的问题
两个Q函数会互相制衡
Dueling DQN:在网络最后分为两个部分,一个部分是标量V(s),另一个是A(s,a),两者相加等于Q(s,a)
这种方法通常会由于传统DQN,同时利于可视化
Pathwise Derivative Policy Gradient
将actor π的输出作为Qπ的输入,将其整合为一个大的网络,在训练时先固定Qπ,再用梯度上升调actor的参数,让整个网络的值上升
与GAN类似,将G和D连接一起,固定D的参数,调G的参数,使得D的值越大越好
训练技巧:
- 加上replay buffer使得训练更加稳定
- 如果策略是确定性,则需要加入噪声来帮助actor进行探索
DDPG
属于Pathwise Derivative Policy Gradient
Target网络更新比较慢会使得训练更加稳定
*GAN和AC的对比:
(论文启发)