健身评估和训练集实时模拟神经进化

时间:2014-09-06 10:00:30

标签: neural-network genetic-algorithm

我正在尝试训练神经网络来控制模拟2D环境中的简单实体,目前使用遗传算法。

也许由于缺乏对正确术语的熟悉,我的搜索在以下所有情况下都没有提供有关如何对待健身和训练的大量信息:

  • 给定输入的正确输出没有可用数据。
  • 只有在与环境进行长时间的交互后才能进行性能评估(使用连续的控制器输入/输出调用)。
  • 系统中存在固有的随机性。

目前我的方法如下:

  • NN输入是实体和环境状态的瞬时传感器读数。
  • 输出是其效应器的瞬时激活水平,例如,执行器的推力水平。
  • 我通过运行给定NN控制器的模拟来生成性能值,可以预设一段模拟时间,也可以直到达到某个系统状态。然后根据行为/最终状态的观察结果适当地分配性能值。
  • 为防止过度拟合,我使用系统的不同随机生成器种子重复上述次数,并使用某些指标(如平均/最低性能值)指定适应度。
  • 这是针对每一代人的每一个人。在给定的一代中,为了公平起见,每个人都将使用相同的随机种子集。

我有几个问题。

  1. 这是一个合理,标准的方法来解决这个问题吗?不出所料,这一切都加起来计算成本非常高昂。我想知道是否有任何方法可以避免每次产生适合度值时从头开始重新运行模拟。

  2. 如上所述,同一组随机种子用于一代中每个个体的模拟。从一代到下一代,这个集合应该保持静态,还是应该是不同的?我的本能是每代使用不同的种子以进一步避免过度拟合,并且这样做不会对选择力产生不利影响。但是,根据我的结果,我对此不确定。

1 个答案:

答案 0 :(得分:2)

这是一种合理的方法,但遗传算法并不是非常快/有效。尝试爬山,看看是否更快。还有许多其他优化方法,但如果您认为该功能是一个只能从中采样的黑盒子,那么没有什么是好的。强化学习可能有效。

使用随机种子可以防止过度拟合,但可能没有必要,这取决于静态测试的平均代表性,以及过度拟合是多么容易。