Sil*_*ear 5 artificial-intelligence neural-network q-learning encog deep-learning
我正在尝试为乒乓球游戏实现Deep q学习算法。我已经使用表格作为Q函数实现了Q学习。它工作得很好,并学会了如何在10分钟内击败天真的AI。但是我无法使用神经网络作为Q函数逼近器来使其工作。
我想知道自己是否走在正确的轨道上,所以以下是我在做什么的摘要:
学习时,随机选择32个后续经验。然后,我为所有当前状态和操作Q(s,a)计算目标q值。
forall Experience e in batch
if e == endOfEpisode
target = e.getReward
else
target = e.getReward + discountFactor*qMaxPostState
end
现在,我有一组32个目标Q值,我正在使用批梯度下降法用这些值训练神经网络。我只是在做1个训练步骤。我应该怎么做?
我正在用Java编程,并将Encog用于多层感知器实现。问题在于培训非常缓慢,性能很弱。我想我缺少了一些东西,但是找不到。我希望至少会有一个不错的结果,因为表格方法没有问题。
我使用多层感知器作为 Q 函数,其中包含 1 个隐藏层和 512 个隐藏单元。
可能太大了。取决于您的输入/输出维度和问题。你尝试少了吗?
网络能够学习必要的功能吗?
收集真实输入/输出。以受监督的方式拟合网络。它能提供所需的输出吗?
一个常见的错误是最后一个激活函数出了问题。大多数时候,您会需要一个线性激活函数(正如您所拥有的)。然后你希望网络尽可能小,因为强化学习非常不稳定:你可以在不起作用的地方运行 99 次,在起作用的地方运行 1 次。
我探索得够多吗?
检查你探索了多少。也许您需要更多探索,尤其是在开始时?
归档时间: |
|
查看次数: |
369 次 |
最近记录: |