deep-learning - DQN的奖励函数设计原理是什么?
问题描述
我正在设计 DQN 模型的奖励函数,这是深度强化学习部分中最棘手的部分。我参考了几个案例,并注意到通常奖励将设置在 [-1, 1] 中。考虑到如果负奖励被触发的次数更少,与正奖励相比更“稀疏”,正奖励可能低于 1。
我想知道为什么我要设置总是尝试将奖励设置在这个范围内(有时可以是[0,1],其他时候可能是[-1,0]或简单地-1)?范围背后的理论或原理是什么?
我经历了这个答案;它提到将 500 设置为正奖励,将 -1 设置为负奖励将破坏网络。但它会如何破坏模型呢?
我可以模糊地理解它与梯度下降相关,实际上它是奖励之间的差距,而不是符号或绝对值。但我仍然没有明确提示它如何破坏,以及为什么在这样的范围内。
此外,我什么时候应该使用像 [0,1] 这样的奖励或只使用负奖励?我的意思是,在给定的时间步长内,这两种方法似乎都可以推动代理找到最高的总奖励。只有在我想让代理尽快到达终点的情况下,负奖励似乎比正奖励更合适。
是否有衡量奖励设计合理的标准?就像使用Sum the Q value of good action和bad action一样,它是对称的,最终的Q应该在零附近,这意味着它会收敛吗?
解决方案
我想知道为什么我要设置总是尝试将奖励设置在这个范围内(有时可以是[0,1],其他时候可能是[-1,0]或简单地-1)?
如果您在 [0,1] 或 [-1,0] 范围内定义奖励函数,本质上是相同的。它只会导致你的动作值是正的或负的,但不会影响你的神经网络的收敛性。
我经历了这个答案;它提到将 500 设置为正奖励,将 -1 设置为负奖励将破坏网络。但它会如何破坏模型呢?
我不会真的同意这个答案。这样的奖励函数不会“破坏”模型,但是它无法为代理的行为提供平衡的正负奖励。它为代理不崩溃提供了激励,但不鼓励它切断对手。
此外,我什么时候应该使用像 [0,1] 这样的奖励或只使用负奖励?
如前所述,使用正面或负面奖励并不重要。重要的是你的奖励的相对性。例如,正如您所说,如果您希望代理尽快达到终端状态,从而引入负奖励,则只有在情节期间没有正奖励时才会起作用。如果代理可以在剧集中途获得积极奖励,则不会激励它尽快结束剧集。因此,重要的是相对性。
推荐阅读
- git - Git Push 每次都失败
- python - 使用 python boto3 在 aws 中创建一个新文件夹
- excel - excel 2016 vba非易失性用户定义函数重新计算意外
- firebase - Firebase,不安全的规则
- elasticsearch - Elasticsearch .NET 在文档的多个字段中搜索字段值的完全匹配
- android - 如何创建模拟 Json API 来测试 android 应用程序?
- javascript - 将状态对象反应到数字
- javascript - element.tagName 返回未定义
- design-patterns - 下面的代码中使用了哪种设计模式
- c++ - OpenCV C++如何使用mouseclickleft存储坐标和画圆