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

时间:2016-01-01 02:59:14

标签: neural-network genetic-algorithm reinforcement-learning

我遇到了this interesting video on YouTube on genetic algorithms

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

如何将遗传算法和神经网络结合起来呢? 还有一个人如何知道在这种情况下你用来反向传播和更新你的权重并训练网络的错误?而且您认为视频中的节目如何计算其适应度函数?我想突变肯定发生在视频节目中,但是交叉呢?

谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

例如,this video显示了遗传算法如何帮助选择" 最佳"建造马里奥的建筑,它做得非常好!但请注意,如果GA选择一个架构来在一个级别上很好地玩Mario,那么该架构在下一个级别中不一定表现良好,如another video所示。在我看来,这是因为遗传算法和反向传播都倾向于找到局部最小值。所以还有很长的路要走......

<强>来源

  

答案 1 :(得分:0)

  

如何将遗传算法和神经网络结合起来呢?

神经网络可以通过遗传算法和反向传播算法的组合进行训练,或者您可以使用反向传播算法训练一批网络,并使用遗传算法选择您认为最有希望的一种形式的批处理。

  

还有一个人知道你在这种情况下使用的错误   反向传播和更新你的权重并训练网络?

错误计算可能因算法而异,但一般来说,如果您使用有监督的学习方法,则必须将误差计算与所需的学习目标保持一定距离。

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

答案 2 :(得分:0)

您可以使用通用算法作为优化神经网络的另一种方法。您可以使用遗传算法优化权重,而不是使用默认算法的反向传播和最常用的反向传播。

请查看此this repo。在那里,我们提出了一种称为神经进化的算法,它是神经网络与称为差分进化的遗传算法的组合。它用于使人形机器人检测人类情感并按照相互作用。关于此事,还有广泛的技术发展水平。希望它有所帮助。