Merge branch 'master' of github.com:datawhalechina/leedeeprl-notes

This commit is contained in:
qiwang067
2021-02-08 08:47:01 +08:00
2 changed files with 79 additions and 0 deletions

View File

@@ -20,3 +20,31 @@
- 要输出离散动作的话最后的output的激活函数使用 softmax 就可以实现。其可以保证输出是的动作概率,而且所有的动作概率加和为 1。 - 要输出离散动作的话最后的output的激活函数使用 softmax 就可以实现。其可以保证输出是的动作概率,而且所有的动作概率加和为 1。
- 要输出连续的动作的话,可以在输出层这里加一层 tanh激活函数。其作用可以把输出限制到 [-1,1] 之间。我们拿到这个输出后,就可以根据实际动作的一个范围再做一下缩放,然后再输出给环境。比如神经网络输出一个浮点数是 2.8,然后经过 tanh 之后,它就可以被限制在 [-1,1] 之间,它输出 0.99。然后假设说小车的一个速度的那个动作范围是 [-2,2] 之间,那我们就按比例从 [-1,1] 扩放到 [-2,2]0.99 乘 2最终输出的就是1.98,作为小车的速度或者说推小车的力输出给环境。 - 要输出连续的动作的话,可以在输出层这里加一层 tanh激活函数。其作用可以把输出限制到 [-1,1] 之间。我们拿到这个输出后,就可以根据实际动作的一个范围再做一下缩放,然后再输出给环境。比如神经网络输出一个浮点数是 2.8,然后经过 tanh 之后,它就可以被限制在 [-1,1] 之间,它输出 0.99。然后假设说小车的一个速度的那个动作范围是 [-2,2] 之间,那我们就按比例从 [-1,1] 扩放到 [-2,2]0.99 乘 2最终输出的就是1.98,作为小车的速度或者说推小车的力输出给环境。
## 3 Something About Interview
- 高冷的面试官请简述一下DDPG算法
答:深度确定性策略梯度(Deep Deterministic Policy Gradient简称 DDPG) 使用 Actor Critic 结构,但是输出的不是行为的概率,而是具体的行为用于连续动作的预测。优化的目的是为了将DQN扩展到连续的动作空间。另外其字如其名
- Deep 是因为用了神经网络;
- Deterministic 表示 DDPG 输出的是一个确定性的动作,可以用于连续动作的一个环境;
- Policy Gradient 代表的是它用到的是策略网络。REINFORCE 算法每隔一个 episode 就更新一次,但 DDPG 网络是每个 step 都会更新一次 policy 网络,也就是说它是一个单步更新的 policy 网络。
- 高冷的面试官你好请问DDPG是on-policy还是off-policy原因是什么呀
off-policy。解释方法一DDPG是优化的DQN其使用了经验回放所以为off-policy方法解释方法二因为DDPG为了保证一定的探索对于输出动作加了一定的噪音也就是说行为策略不再是优化的策略。
- 高冷的面试官你是否了解过D4PG算法呢描述一下吧。
分布的分布式DDPGDistributed Distributional DDPG ,简称 D4PG)相对于DDPG其优化部分为
- 分布式 critic: 不再只估计Q值的期望值而是去估计期望Q值的分布, 即将期望Q值作为一个随机变量来进行估计。
- N步累计回报: 当计算TD误差时D4PG计算的是N步的TD目标值而不仅仅只有一步这样就可以考虑未来更多步骤的回报。
- 多个分布式并行actorD4PG使用K个独立的演员并行收集训练样本并存储到同一个replay buffer中。
- 优先经验回放Prioritized Experience ReplayPER使用一个非均匀概率 $\pi$ 从replay buffer中采样。

View File

@@ -36,3 +36,54 @@
2. 另外,原本是要计算在 $s_{i+1}$ 时对应的 policy 采取的 action a 会得到多少的 Q value那你会采取让 $\hat{Q}$ 最大的那个 action a。现在因为我们不需要再解argmax 的问题。所以现在我们就直接把 $s_{i+1}$ 代入到 policy $\pi$ 里面,直接就会得到在 $s_{i+1}$ 下,哪一个 action 会给我们最大的 Q value那你在这边就会 take 那一个 action。在 Q-function 里面,有两个 Q network一个是真正的 Q network另外一个是 target Q network。那实际上你在 implement 这个 algorithm 的时候,你也会有两个 actor你会有一个真正要 learn 的 actor $\pi$,你会有一个 target actor $\hat{\pi}$ 。但现在因为哪一个 action a 可以让 $\hat{Q}$ 最大这件事情已经被用那个 policy 取代掉了,所以我们要知道哪一个 action a 可以让 $\hat{Q}$ 最大,就直接把那个 state 带到 $\hat{\pi}$ 里面,看它得到哪一个 a就用那一个 a其也就是会让 $\hat{Q}(s,a)$ 的值最大的那个 a 。 2. 另外,原本是要计算在 $s_{i+1}$ 时对应的 policy 采取的 action a 会得到多少的 Q value那你会采取让 $\hat{Q}$ 最大的那个 action a。现在因为我们不需要再解argmax 的问题。所以现在我们就直接把 $s_{i+1}$ 代入到 policy $\pi$ 里面,直接就会得到在 $s_{i+1}$ 下,哪一个 action 会给我们最大的 Q value那你在这边就会 take 那一个 action。在 Q-function 里面,有两个 Q network一个是真正的 Q network另外一个是 target Q network。那实际上你在 implement 这个 algorithm 的时候,你也会有两个 actor你会有一个真正要 learn 的 actor $\pi$,你会有一个 target actor $\hat{\pi}$ 。但现在因为哪一个 action a 可以让 $\hat{Q}$ 最大这件事情已经被用那个 policy 取代掉了,所以我们要知道哪一个 action a 可以让 $\hat{Q}$ 最大,就直接把那个 state 带到 $\hat{\pi}$ 里面,看它得到哪一个 a就用那一个 a其也就是会让 $\hat{Q}(s,a)$ 的值最大的那个 a 。
3. 还有,之前只要 learn Q现在你多 learn 一个 $\pi$其目的在于maximize Q-function希望你得到的这个 actor它可以让你的 Q-function output 越大越好,这个跟 learn GAN 里面的 generator 的概念类似。 3. 还有,之前只要 learn Q现在你多 learn 一个 $\pi$其目的在于maximize Q-function希望你得到的这个 actor它可以让你的 Q-function output 越大越好,这个跟 learn GAN 里面的 generator 的概念类似。
4. 最后,与原来的 Q-function 一样。我们要把 target 的 Q-network 取代掉,你现在也要把 target policy 取代掉。 4. 最后,与原来的 Q-function 一样。我们要把 target 的 Q-network 取代掉,你现在也要把 target policy 取代掉。
## 3 Something About Interview
- 高冷的面试官请简述一下A3C算法吧另外A3C是on-policy还是off-policy呀
A3C就是异步优势演员-评论家方法Asynchronous Advantage Actor-Critic评论家学习值函数同时有多个actor并行训练并且不时与全局参数同步。A3C旨在用于并行训练是 on-policy 的方法。
- 高冷的面试官请问Actor - Critic有何优点呢
答:
- 相比以值函数为中心的算法Actor - Critic应用了策略梯度的做法这能让它在连续动作或者高维动作空间中选取合适的动作而 Q-learning 做这件事会很困难甚至瘫痪。
- 相比单纯策略梯度Actor - Critic应用了Q-learning或其他策略评估的做法使得Actor Critic能进行单步更新而不是回合更新比单纯的Policy Gradient的效率要高。
- 高冷的面试官请问A3C算法具体是如何异步更新的
答:下面是算法大纲:
- 定义全局参数 $\theta$ 和 $w$ 以及特定线程参数 $θ′$ 和 $w$。
- 初始化时间步 $t=1$。
- 当 $T<=T_{max}$
- 重置梯度:$dθ=0$ 并且 $dw=0$。
- 将特定于线程的参数与全局参数同步:$θ′=θ$ 以及 $w=w$。
- 令 $t_{start} =t$ 并且随机采样一个初始状态 $s_t$。
-$s_t!=$ 终止状态)并$tt_{start}<=t_{max}$
- 根据当前线程的策略选择当前执行的动作 $a_tπ_{θ′}(a_t|s_t)$,执行动作后接收回报$r_t$然后转移到下一个状态st+1。
- 更新 t 以及 Tt=t+1 并且 T=T+1。
- 初始化保存累积回报估计值的变量
- 对于 $i=t_1,…,t_{start}$
- r←γr+ri这里 r 是 Gi 的蒙特卡洛估计。
- 累积关于参数 θ′的梯度:$dθ←dθ+∇θlogπθ(ai|si)(rVw(si))$;
- 累积关于参数 w 的梯度:$dw←dw+2(rVw(si))∇w(rVw(si))$.
- 分别使用 dθ以及 dw异步更新 θ以及 w。
- 高冷的面试官Actor-Critic两者的区别是什么
Actor是策略模块输出动作critic是判别器用来计算值函数。
- 高冷的面试官actor-critic框架中的critic起了什么作用
critic表示了对于当前决策好坏的衡量。结合策略模块当critic判别某个动作的选择时有益的策略就更新参数以增大该动作出现的概率反之降低动作出现的概率。
- 高冷的面试官简述A3C的优势函数
答:$A(s,a)=Q(s,a)-V(s)$是为了解决value-based方法具有高变异性。它代表着与该状态下采取的平均行动相比所取得的进步。
- 如果 A(s,a)>0: 梯度被推向了该方向
- 如果 A(s,a)<0: (我们的action比该state下的平均值还差) 梯度被推向了反方
但是这样就需要两套 value function所以可以使用TD error 做估计:$A(s,a)=r+\gamma V(s')-V(s)$。