用强化学习训练神经网络

时间:2012-05-23 14:27:55

标签: algorithm language-agnostic machine-learning neural-network reinforcement-learning

我知道前馈神经网络的基础知识,以及如何使用反向传播算法对它们进行训练,但我正在寻找一种算法,而不是我可以用来通过强化学习在线训练ANN。

例如,cart pole swing up问题是我想用ANN解决的问题。在那种情况下,我不知道应该怎样做才能控制钟摆,我只知道我与理想位置有多接近。我需要根据奖励和惩罚来学习ANN。因此,监督学习不是一种选择。

另一种情况类似于snake game,其中反馈被延迟,并且仅限于目标和反目标,而不是奖励。

我可以为第一种情况考虑一些算法,例如爬山或遗传算法,但我猜他们都会很慢。它们也可能适用于第二种情况,但速度极慢,不利于在线学习。

我的问题很简单:是否有一种简单的算法来训练具有强化学习的人工神经网络?我主要对实时奖励情况感兴趣,但是如果算法是基于目标的情况可用,甚至更好。

2 个答案:

答案 0 :(得分:26)

有一些关于这个主题的研究论文:

还有一些代码:

这些只是该主题的一些顶级谷歌搜索结果。前几篇论文看起来很不错,虽然我没有亲自阅读。如果您在Google学术搜索中快速搜索,我想您会发现有关强化学习的神经网络的更多信息。

答案 1 :(得分:7)

如果导致奖励r的输出反向传播到网络r次,您将按比例增加网络奖励。这不能直接适用于负面奖励,但我可以想到两种产生不同效果的解决方案:

1)如果您在rmin-rmax范围内有一组奖励,请将它们重新调整为0-(rmax-rmin),以便它们都是非负数。奖励越大,所创造的强化就越强。

2)对于否定奖励-r,反向传播随机输出r次,只要它与导致负面奖励的那个不同。这不仅可以增强理想的产出,还可以扩散或避免不良产出。