我最近对强化学习感兴趣,目前我正在研究一个侧面项目,我正在考虑使用基于“内在动机”的特定类型的奖励来看看我是否可以在一个简单的玩具系统中获得有趣的行为 . 我的设计 .

Here is an image的基本设置(我设计的是当代理能够移动靠近它的许多块时它应该是最大的,所以我认为应该可以用这个来学习正确的行为 .

问题在于,我用来训练神经网络的Q学习算法似乎并不是非常稳定,虽然它最初开始改善并且稍后获得更多奖励但是它停止这样做并且似乎变得更糟 . 神经网络的输入是针对6x6个方格中的每一个,有4个输入(0或1)表示方块是否被玩家占用,没有,灰色块或黑色块以及时间步数(标准化)所以最大值是1) . 我做的第一件事是切换到使用Double DQN,即使用更新:

Q(s,a) - > r GAMMA * Q_target(s',argmax a'Q(s',a'))

而不是通常的Q(s,a) - > r GAMMA * argmax a'Q_target(s',a') .

这绝对有帮助,但还不够 . Here是在训练期间每集累积的总奖励的情节(每集在50-60步之间,因此这总共是1,000,000个训练步骤) . 你可以看到它最初开始学习一些有希望的东西,但它似乎最终被撤消 . 如果你看一下how the Q-values随着时间的推移演变为刚刚在初始状态下可用的动作(所有剧集都以相同的状态开始,代理在左下角 - 这三个动作向右移动,向上移动,什么也不做) 't seem to be unstable but they just keep growing well beyond what sensible values are based on the total reward that'在剧集中获得 . 我也可以查看每个训练批次上的average error,这也最终会增加(大概是因为Q函数的估计变得太大了!)

作为参考我正在使用的参数是:

学习率:0.00025

GAMMA:0.98

重放记忆体大小:100,000

批量大小:32

更新目标网络每个:10,000步

到目前为止1,000,000个培训步骤 . EPSILON(勘探)参数在200,000步骤中从1降至0.1退火 . 这是一个相当缓慢的训练过程,主要是因为在每一步产生内在的奖励信号是一个非常缓慢的操作,并且考虑到我现在没有太多的计算能力,我现在还不能做一个详细的超参数搜索(虽然我玩过一点) .

另一个要说的是内在奖励信号是随机的,因此在每个州都不会总是相同,但是不同的州将给予不同的平均奖励 . 也许这会使事情变得不稳定?

无论如何,我对Q学习(或一般的强化学习)没有多少经验,所以我想我会问是否有任何东西跳出来作为可能导致这种行为的东西?