Add files via upload

This commit is contained in:
David Young
2020-09-08 09:46:39 +08:00
committed by GitHub
parent befe5d568e
commit e672066b8c

View File

@@ -0,0 +1,20 @@
# Chapter8 Q-learning for Continuous Actions
## 思考题
- Q-learning相比于policy gradient based方法为什么训练起来效果更好更平稳
答:在 Q-learning 中,只要能够 estimate 出Q-function就可以保证找到一个比较好的 policy同样的只要能够 estimate 出 Q-function就保证可以 improve 对应的 policy。而因为 estimate Q-function 作为一个回归问题,是比较容易的。在这个回归问题中, 我们可以时刻观察我们的模型训练的效果是不是越来越好,一般情况下我们只需要关注 regression 的 loss 有没有下降,你就知道你的 model learn 的好不好。所以 estimate Q-function 相较于 learn 一个 policy 是比较容易的。你只要 estimate Q-function就可以保证说现在一定会得到比较好的 policy同样其也比较容易操作。
- Q-learning在处理continuous action时存在什么样的问题呢
在日常的问题中我们的问题都是continuous action的例如我们的 agent 要做的事情是开自驾车,它要决定说它方向盘要左转几度, 右转几度,这就是 continuous 的;假设我们的 agent 是一个机器人,假设它身上有 50 个关节,它的每一个 action 就对应到它身上的这 50 个关节的角度,而那些角度也是 continuous 的。
然而在解决Q-learning问题时很重要的一步是要求能够解对应的优化问题。当我们 estimate 出Q-function $Q(s,a)$ 以后,必须要找到一个 action它可以让 $Q(s,a)$ 最大。假设 action 是 discrete 的,那 a 的可能性都是有限的。但如果action是continuous的情况下我们就不能像离散的action一样穷举所有可能的continuous action了。
为了解决这个问题有以下几种solutions
- 第一个解决方法我们可以使用所谓的sample方法即随机sample出N个可能的action然后一个一个带到我们的Q-function中计算对应的N个Q value比较哪一个的值最大。但是这个方法因为是sample所以不会非常的精确。
- 第二个解决方法我们将这个continuous action问题看为一个优化问题从而自然而然地想到了可以用gradient ascend去最大化我们的目标函数。具体地我们将action看为我们的变量使用gradient ascend方法去update action对应的Q-value。但是这个方法通常的时间花销比较大因为是需要迭代运算的。
- 第三个解决方法设计一个特别的network架构设计一个特别的Q-function使得解我们 argmax Q-value的问题变得非常容易。也就是这边的 Q-function 不是一个 general 的 Q-function特别设计一下它的样子让你要找让这个 Q-function 最大的 a 的时候非常容易。但是这个方法的function不能随意乱设其必须有一些额外的限制。具体的设计方法可以我们的chapter8的详细教程。
- 第四个解决方法不用Q-learning毕竟用其处理continuous的action比较麻烦。