使用强化学习训练神经网络

Posted

技术标签:

【中文标题】使用强化学习训练神经网络【英文标题】:Training a Neural Network with Reinforcement learning 【发布时间】:2012-05-30 03:02:14 【问题描述】:

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

例如,cart pole swing up 问题是我想用人工神经网络解决的问题。在那种情况下,我不知道应该做什么来控制钟摆,我只知道我离理想位置有多近。我需要让 ANN 基于奖励和惩罚来学习。因此,监督学习不是一种选择。

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

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

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

【问题讨论】:

好问题,我在想几乎完全相同的事情,在我的例子中,神经网络是循环的。一个关键点是你在谈论两种不同的学习算法。除非你有办法解决它们,否则你不能将两种不同的学习算法应用于同一个问题而不引起冲突。 【参考方案1】:

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

Efficient Reinforcement Learning Through Evolving Neural Network Topologies (2002) Reinforcement Learning Using Neural Networks, with Applications to Motor Control Reinforcement Learning Neural Network To The Problem Of Autonomous Mobile Robot Obstacle Avoidance

还有一些代码:

Code examples 用于神经网络强化学习。

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

【讨论】:

第三个链接提到了一些关于 Q-learning 的内容。这适用于推车杆问题吗? 这似乎是适用的,因为它允许您在没有环境模型的情况下比较可用操作的预期效用。因此,如果您正在用硬件解决实际的推车杆问题,那么它将很有帮助。有关 Q-learning 的更多详细信息,请参阅:applied-mathematics.net/qlearning/qlearning.html Q-learning 不涉及有限的动作集吗?理想的推车杆问题将有一组连续的动作。有问题吗? @ProQ 该链接包括一个前馈神经网络“train.c 是一个用于训练多层的 C 程序,前馈神经网络使用早期停止和交叉验证进行错误反向传播。 " @Lirik 啊,抱歉,我滚动得太远了。谢谢!【参考方案2】:

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

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

2) 对于负奖励-r,反向传播随机输出r 次,只要它与导致负奖励的不同。这不仅会加强理想的输出,还会分散或避免不良输出。

【讨论】:

有趣。我想知道这如何适用于延迟奖励。我猜将任何不是目标的东西都指定为小的负奖励会起作用。 @Kendall Frey:有关可以比普通神经网络更好地处理延迟的神经网络,请参阅Long short term memory (Youtube video),或参阅hierarchical temporal memory (Youtube video)。 为什么要像这样重新调整奖励?他们是否需要重新调整?这样一来,奖励rmin 在重新缩放后变为0,因此本应是奖励的内容将变得对网络没有强化效果。 绝妙的主意!!这很简单,但在我的情况下也非常有效! +1

以上是关于使用强化学习训练神经网络的主要内容,如果未能解决你的问题,请参考以下文章

轻松解决TSP问题之强化学习(BaseLine)

强化学习系列12:使用julia训练深度强化模型

强化学习笔记:self-attention + multi-agent RL(中心化训练)

详解图神经网络凸优化贝叶斯强化学习等 4 大主题!

百度正式发布PaddlePaddle深度强化学习框架PARL

无梯度强化学习:使用Numpy进行神经进化