我遇到了this interesting video on YouTube on genetic algorithms .
正如你在视频中看到的那样,机器人学会了战斗 .
现在,我已经研究了一段时间的神经网络,我想开始学习遗传算法 . 这种方式结合了两者 .
你如何结合遗传算法和神经网络来做到这一点?
还有一个人如何知道在这种情况下你用来反向传播和更新你的权重并训练网络的错误?而且您认为视频中的节目如何计算其适应度函数?我想突变肯定发生在视频节目中,但是交叉呢?
谢谢!
我遇到了this interesting video on YouTube on genetic algorithms .
正如你在视频中看到的那样,机器人学会了战斗 .
现在,我已经研究了一段时间的神经网络,我想开始学习遗传算法 . 这种方式结合了两者 .
你如何结合遗传算法和神经网络来做到这一点?
还有一个人如何知道在这种情况下你用来反向传播和更新你的权重并训练网络的错误?而且您认为视频中的节目如何计算其适应度函数?我想突变肯定发生在视频节目中,但是交叉呢?
谢谢!
3 回答
这是一个强化问题,其中神经网络的输出是要按下的键盘上的键,以便最大化由适应度函数给出的分数 . 使用遗传算法(GA)并从最初的神经网络架构开始,GA倾向于找到一种更好的架构,迭代地最大化适应度函数 . GA通过繁殖它们来生成不同的体系结构,然后将它们用于任务(玩游戏),选择产生更高分数的结构(使用适应度函数) . 下次GA使用最佳架构候选者(GA术语中的父母)用于育种,并再次重复产生新种群(架构)的过程 . 当然,育种也包括突变 .
该过程持续到满足终止标准(适应度函数的特定值或产生多个群体) . 您可能会注意到,遗传算法计算量很大,因此对于大规模问题是遗弃算法 . 当然,当生成体系结构时,使用反向传播或任何其他适用的优化技术(包括GA)来训练体系结构 .
例如,this video展示了遗传算法如何帮助选择“最佳”架构来玩马里奥,而且它做得非常好!但请注意,如果GA选择一个架构来在一个级别上很好地播放Mario,那么该架构在下一个级别中不一定表现良好,如another video所示 . 在我看来,这是因为遗传算法和反向传播都倾向于找到局部最小值 . 所以还有很长的路要走......
Sources
您可以使用通用算法作为优化神经网络的另一种方法 . 您可以使用遗传算法优化权重,而不是使用默认算法的反向传播和最常用的反向传播 .
请看一下这个paper . 在那里,我们提出了一种称为神经进化的算法,它是神经网络与称为差分进化的遗传算法的组合 . 它用于使人形机器人检测人类的情感并按照相互作用 . 关于此事,还有广泛的技术发展水平 . 希望能帮助到你 .
神经网络可以通过遗传算法和反向传播算法的组合进行训练,或者您可以使用反向传播算法训练一批网络,并使用遗传算法选择您认为最有希望的一种形式的批次 .
误差计算可能因算法而异,但通常情况下,如果使用监督学习方法,则必须将误差计算与所需的学习目标保持一定距离 .
我建议看一下最先进的(目前)遗传算法是NEAT .