Files
easy-rl/docs/chapter8/chapter8_questions&keywords.md
2022-09-21 16:31:11 +08:00

24 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第八章 DQN (连续动作)
## 习题
**8-1** 深度Q网络相比基于策略梯度的方法为什么训练效果更好、更平稳
在深度Q网络中只要能够估计出Q函数就可以找到一个比较好的策略。同样地只要能够估计出Q函数就可以增强对应的策略。因为估计Q函数是一个比较容易的回归问题在这个回归问题中我们可以时刻观察模型训练的效果是不是越来越好一般情况下我们只需要关注回归的损失有没有下降就可以判断模型学习得好不好所以估计Q函数相较于学习一个策略来说是比较容易的。只需要估计Q函数就可以保证现在一定会得到比较好的策略同样其也比较容易操作。对比来说策略梯度方法中的优化目标是最大化总回报但是我们很难找到一个明确的损失函数来进行优化其本质上是一个策略搜索问题也就是一个无约束的优化问题。
**8-2** 深度Q网络在处理连续动作时存在什么样的问题呢对应的解决方法有哪些呢
我们在日常生活中常见的问题大都是包含连续动作的例如智能体要进行自动驾驶其就需要决定方向盘要左转几度或右转几度这就是连续的动作假设智能体是一个机器人它身上有50个关节它的每一个动作就对应到这50个关节的角度这些角度也是连续的。
然而在使用深度Q网络时很重要的一步是要求能够解决对应的优化问题。当我们预估出Q函数 $Q(s,a)$ 以后,必须要找到一个动作,它可以让 $Q(s,a)$ 最大。假设动作是离散的,那么动作 $a$ 的可能性是有限的。但如果动作是连续的,我们就不能像对离散的动作一样,穷举所有可能的动作了。
为了解决这个问题,有以下几种方案。
1第一个方案我们可以使用采样方法即随机采样出$N$个可能的动作然后一个一个代入Q函数中计算对应的$N$个Q值并比较哪一个最大。但是这个方案因为使用采样方法所以不会非常精确。
2第二个方案我们将这个连续动作问题建模为一个优化问题从而可以用梯度上升去最大化我们的目标函数。具体地我们将动作视为变量使用梯度上升更新动作对应的Q值。但是这个方案通常时间花销比较大因为其需要迭代计算。
3第三个方案设计一个特别的网络架构即设计一个特别的Q函数使得求解让Q函数最大化的动作 $a$ 变得非常容易。也就是这里的Q函数不是一个广义的Q函数我们可以使用特殊方法设计Q函数使得寻找让这个Q函数最大的动作 $a$ 非常容易。但是这个方案的Q函数不能随意设计其必须有一些额外的限制。
4第四个方案不用深度Q网络毕竟用其处理连续动作比较麻烦。