强化学习打卡之DQN与Actor-Critic

强化学习打卡之DQN

DQN为了解决动作空间过大造成维数灾难问题在Q-learning的基础上引入了神经网络。DQN 主要是把 Q 函数通过价值函数近似方法转换为一个深度神经网络。神经网络输入的是状态,输出每个动作的Q值。

前面学过Q-learning 是一种value-based的方法,不是学习策略,而是说有一个critic通过MC based的方法或者TD based的方法得出状态值函数 V π(s)进行 Policy Evaluation(策略评估)。

MC VS.TD

强化学习打卡之DQN与Actor-Critic_第1张图片由上图MC和TD的更新公式可知两者各有优劣,MC是一个episode得到的累计奖励值,所以偏差较大,但是方差较大;而TD是每走一步就learn一下,更新的公式中的r是个随机量,会可能带来大的估计偏差,但是方差较小。

Q function

1.第一种写法:input 是 state 跟 action,output 就是一个 scalar
2.第二种写法:input 是一个 state s,output 就是好几个 value(仅对离散的action)
强化学习打卡之DQN与Actor-Critic_第2张图片强化学习打卡之DQN与Actor-Critic_第3张图片上图说明了Q-learning本质的问题是要找到一个策略π使得Q函数能取到最大值,而这个策略是用Q function推出来的,具体怎么推,先留个坑。

三个tips

1.Target Network
在这里插入图片描述由TD-based的Qfunction更新公式可知随着t的变化式子左右两边的值一起变化,会导致训练不稳定,所以可以把右边这个 Q-network 固定住。训练的时候只 update 左边这个 Q-network 的参数,而右边这个 Q-network 的参数会被固定住
2.Exploration

3.Experience Replay

Actor-Critic

强化学习打卡之DQN与Actor-Critic_第4张图片Actor-Critic是一种结合策略梯度和时序差分学习的强化学习方法,更新公式也是结合了Q-learning和reinforce这两种方法。值得质疑的是这里baseline值得选择以及Q函数的定义:在某一个 state s,采取某一个 action a,假设 policy 就是π 的情况下会得到的 accumulated reward 的期望值有多大,而这个东西就是 G 的期望值,由这个定义得到可以用 Q函数代替原式中的Gt的期望值。
在这里插入图片描述
但是又出现了一个问题,现在要estimate Q这个network和V 这个network,估计两个网络可能带来更大的估计偏差,所以用 V 的值来表示 Q 的值
在这里插入图片描述课程中说可以把期望拿掉是因为实验中这么做的效果最好,所以大家就都用这个(emmm所以理论上式无法解释的么?)
所以actor-critic算法流程就大概是,给agent一个初始的action和策略π,然后不断地跟环境交互用TD或者MC方法得到Q函数,再根据Q函数去更新策略π循环以上流程直到episode 结束。
强化学习打卡之DQN与Actor-Critic_第5张图片关于使用Actor-Critic的两个tips:
1.我们需要估测V network和policy network这两个网络,可以共享前面的网络参数
2.有一个常见的 exploration 的方法是你会对你的 \piπ 的 output 的 distribution 下一个 constrain。这个 constrain 是希望这个 distribution 的 entropy 不要太小,希望这个 distribution 的 entropy 可以大一点,也就是希望不同的 action 它的被采用的机率平均一点。这样在 testing 的时候,它才会多尝试各种不同的 action,才会把这个环境探索的比较好,才会得到比较好的结果。

A3C

Asynchronous(异步的) Advantage Actor-Critic用来解决策略梯度计算慢的问题,相当于火影中鸣人用影分身同时进行修炼的方法。A3C 这个方法就是同时开很多个 worker,那每一个 worker 其实就是一个影分身。那最后这些影分身会把所有的经验,通通集合在一起(需要多个cpu)
强化学习打卡之DQN与Actor-Critic_第6张图片还有另外一个可以看成是 Q-learning 解 continuous action 的一种特别的方法,也可以看成是一种特别的 Actor-Critic 的方法,叫做Pathwise Derivative Policy Gradient。另外 learn 一个 network 来解这个 optimization problem,这个东西就是 actor,原来的 actor-critic 的问题是 critic 并没有给 actor 足够的信息,它只告诉它好或不好,没有告诉它说什么样叫好,那现在有新的方法可以直接告诉 actor 说,什么样叫做好。

你可能感兴趣的:(强化学习打卡之DQN与Actor-Critic)