强化学习纲要(周博磊) | 4、价值函数近似

Introduction on function approximation

问题引入:大规模的MDP问题如何估计价值函数?

答:在面对大规模 MDP 问题时,要避免用table去表示特征(Q-tabel等),而是采用带参数的函数近似的方式去近似估计V、Q、π

image-20210921145142172

image-20210921145217985

如果我们获得了实际的价值函数(Oracle),就可以用梯度下降方法更新 w 参数

image-20210921145315519

Value function approximation for prediction

如果已知Oracle/Ground Truth/Vπ (s):

image-20210921145901816

如果已知实际V funciton是线性的:

image-20210921145609983

随机梯度下降收敛到全局最优。 因为在线性情况下,只有一个最优解,因此局部最优解为自动收敛到或接近全局最优。

如果用one-hot编码,Table Lookup Feature

image-20210921150034818

拟合出的价值函数就是等于Wk

如果没有Oracle/Ground Truth/Vπ (s)

采用之前的model-free prediction的方法

image-20210921150522472

image-20210921150442272

蒙特卡罗 MC 预测用于价值函数

image-20210921150620499

MC return的Gt特点:无偏估计、但是有很大噪声(采很多次样才能得出结果)

时域差分 TD 预测用于值函数

image-20210921150656254

TD target特点:有偏估计(取期望时包含了正在优化的W)

semi-gradient:

Q function(Action-Value function)估计(类似V function)

image-20210921151027331

如果已知实际Q函数

可通过计算MSE和梯度下降的方法估计Q函数:

image-20210921151424790

如果Q函数为线性的

image-20210921151540189

Value function approximation for control

如果没有获得真正的Groundtruth的Q函数,用Gt或TD target代替oracle,从而更新Q函数近似函数的参数。

image-20210921151656743

其中Sarsa for VFA Control:

image-20210921151818725

讨论VFA Control的收敛问题:

image-20210921152524430

TD在使用off-policy或使用非线性函数拟合时会发散(难以收敛):

  • TD with VFA 得出来目标函数的梯度是不准确的(gradient本身包含了正在优化的参数)
  • update包含了Bellman backup的近似和价值函数的近似
  • off-policy的behavior policy(采取数据的策略) and target policy(优化的策略)不完全相同,因此价值估计函数难以收敛

强化学习的死亡三角(强化学习不确定不稳定的因素)

  1. Function approximation:近似V或者Q会引入误差

  2. Bootstrapping:TD基于之前来估计当前函数会引入噪声,使得网络过拟合;MC用了实际的return,而且是无偏的,所以稍微好些(如果足够多会近似真值)

  3. Off-policy training:采用behavior policy来采取数据,但优化的是target policy,导致采集的数据和优化的函数是不一样的

控制算法的收敛性问题

image-20210921153815048

Batch优化

之前单步优化效率低,Batch-based方法优化batch中所有样本,

目标:求D数据库中pair的最小均方差

image-20210921154255819

如果数据集太大,每次随机采样部分样本,计算梯度并优化函数,不断迭代。

Deep Q-Networks

当环境更加复杂时,使用非线性函数(以神经网络举例)拟合V、Q函数会有更好的效果。

image-20210921154903840

image-20210921155043934

在训练DQN时出现的问题以及解决方法

问题1:样本之间具有相关性

解决办法:Experience replay

image-20210921155308200

使用一个容器,存了很多游戏环节里的sample,得到transition tuple(St,at,rt,St+1)并打乱, 采集数据时会将数据存在容器中,优化函数时从容器中随机采样从而获得相关度较低的tuple。

问题2:不稳定的目标

解决办法:Fixed Q targets

image-20210921155314754

在计算loss时,我们是通过计算TD target(Q_target)和当前Q value(Q的估计)的差来得到的。

image-20210921160335280

但是其实对于真实的TD target,我们是不知道的,没有概念的。我们也是需要预测的。使用Bellman 方程,我们发现TD target仅仅是当前动作的reward加上通过衰减的下一个state的最高Q value。

image-20210921160410578

问题是我们使用同样的参数(网络权重)来估计target和Q value。这就使得网络权重和TD target具有很强的相关性。
因此,这就意味着训练的每一步,我们的Q value偏移了,同时Q target也偏移了。

  • 所以我们将使用一个单独的固定参数的网络(w-)来预测TD target

image-20210921160540264

结果及demo

image-20210921155418200

  • Demo of Breakout by DQN:

https://www.youtube.com/watch?v=V1eYniJ0Rnk

  • Demo of Flappy Bird by DQN:

https://www.youtube.com/watch?v=xM62SpKAZHU

  • Code of DQN in PyTorch:

https://github.com/cuhkrlcourse/DeepRL-Tutorials/blob/master/01.DQN.ipynb

  • Code of Flappy Bird:

https://github.com/xmfbit/DQN-FlappyBird

参考:

N in PyTorch:

https://github.com/cuhkrlcourse/DeepRL-Tutorials/blob/master/01.DQN.ipynb

  • Code of Flappy Bird:

https://github.com/xmfbit/DQN-FlappyBird

参考:

https://blog.csdn.net/mike112223/article/details/90796992

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nosimper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值