神经网络如何使用遗传算法和反向传播来玩游戏



我在YouTube上看到了一段关于遗传算法的有趣视频。

正如你在视频中看到的,机器人学会了战斗
现在,我已经研究神经网络一段时间了,我想开始学习遗传算法。。这在某种程度上结合了两者。

如何将遗传算法和神经网络相结合来做到这一点
此外,在这种情况下,如何知道用于反向传播、更新权重和训练网络的错误?你认为视频中的程序是如何计算其健身功能的?我想视频中的节目肯定会发生突变,但交叉呢?

谢谢!

这是一个强化学习问题,其中神经网络的输出是键盘上的,以便最大化适应度函数给出的分数。使用遗传算法(GA),从最初的神经网络架构开始,GA倾向于找到一个更好的架构,迭代地最大化适应度函数。GA通过繁殖不同的体系结构,然后将它们用于任务(玩游戏),选择得分较高的体系结构(使用适应度函数)。下一次遗传算法使用最佳架构候选(遗传算法术语中的亲本)进行繁殖,并再次重复生成新种群(架构)的过程。当然,育种也包括突变。

这个过程一直持续到满足终止标准(适合度函数的特定值或生成多个群体)。你可能会注意到,遗传算法的计算量非常大,因此在大规模问题中有点被抛弃了。当然,当生成一个体系结构时,它是使用反向传播或任何其他适用的优化技术(包括GA)进行训练的。

例如,这段视频展示了遗传算法如何帮助选择"最佳"架构来玩马里奥,而且做得很好!然而,请注意,如果GA选择了一个架构来在一个级别中很好地扮演马里奥,那么该架构在下一个级别中将不一定会像另一个视频中所示的那样表现良好。在我看来,这是因为遗传算法和反向传播都倾向于找到局部极小值。所以还有很长的路要走。。。

来源

  • 遗传算法
  • 健身功能
  • 通过扩充拓扑进化神经网络

您可以使用通用算法作为优化神经网络的另一种方法。您可以使用遗传算法优化权重,而不是使用反向传播(这是默认算法,也是迄今为止使用最多的算法)。

请看一下这张纸。在那里,我们提出了一种叫做神经进化的算法,它是神经网络和一种叫做差分进化的遗传算法的结合。它被用来让人形机器人检测人类的情绪并据此进行互动。关于这件事也有广泛的最新技术。希望能有所帮助。

如何将遗传算法和神经网络相结合来做到这一点?

神经网络可以用遗传算法和反向传播算法的组合来训练,也可以用反向传播算法训练一批网络,并使用遗传算法选择你认为最有前途的一批。

还有,在这种情况下,人们如何知道你用来反向传播和更新你的体重并训练网?

误差计算可能因算法而异,但通常情况下,如果您使用监督学习方法,则必须将误差计算为距离所需学习目标一定距离。

我建议看看(目前)最先进的遗传算法之一是NEAT。

最新更新