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

标签 neural-network genetic-algorithm reinforcement-learning

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

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

你如何结合遗传算法和神经网络来做到这一点?
在这种情况下,人们又如何知道用于反向传播和更新权重并训练网络的错误?以及您认为视频中的程序如何计算其适应度函数?我猜视频中的程序肯定会发生突变,但是交叉呢?

谢谢!

最佳答案

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

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

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

来源

关于neural-network - 神经网络如何使用遗传算法和反向传播来玩游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553205/

相关文章:

Python/Tensorflow - 我训练了卷积神经网络,如何测试它?

python - 神经网络对具有不同特征的不同实例做出相同的预测

java - 寻找进化音乐示例代码

algorithm - 寻找合适的优化算法

machine-learning - SARSA-Lambda 实现中各事件之间的资格跟踪重新初始化

machine-learning - 强化学习和深度强化学习有什么区别?

tensorflow - 在tensorflow中加载图像文件夹

python - 属性错误:模块 'tensorflow' 没有属性 'RunOptions'

java - AI 如何为战舰建模遗传编程

neural-network - 使用 Q-Learning 和函数逼近求解 GridWorld