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

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

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

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

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

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

【问题讨论】:

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

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


【解决方案1】:

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

还有一些代码:

这些只是关于该主题的一些顶级谷歌搜索结果。前几篇论文看起来还不错,虽然我没有亲自阅读过。如果您在 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
猜你喜欢
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2014-10-21
相关资源
最近更新 更多