是AI就躲个飞机-纯Python实现人工智能

很久以前微信流行过一个小游戏:打飞机,这个游戏简单又无聊。在2017年来临之际,我就实现一个超级弱智的人工智能(AI),这货可以躲避从屏幕上方飞来的飞机。本帖只使用纯Python实现,不依赖任何高级库。

本文的AI基于neuro-evolution,首先简单科普一下neuro-evolution。从neuro-evolution这个名字就可以看出它由两部分组成-neuro and evolution,它是使用进化算法(遗传算法是进化算法的一种)提升人工神经网络的机器学习技术,其实就是用进化算法改进并选出最优的神经网络。

neuro-evolution

定义一些变量:

定义神经网络:

遗传算法:

NeuroEvolution:

是AI就躲个飞机

AI的工作逻辑

假设你是AI,你首先繁殖一个种群(50个个体),开始的个体大都是歪瓜裂枣(上来就被敌机撞)。但是,即使是歪瓜裂枣也有表现好的,在下一代,你会使用这些表现好的再繁殖一个种群,经过代代相传,存活下来的个体会越来越优秀。其实就是仿达尔文进化论,种群->自然选择->优秀个体->杂交、变异->种群->循环n世代。

ai开始时候的表现:

是AI就躲个飞机 - 纯Python实现人工智能
图片被拉扁了 sorry

经过几百代之后,ai开始娱乐的躲飞机:

是AI就躲个飞机 - 纯Python实现人工智能

ps.祝大家新年快乐,感觉我又浪费了一年。

如要转载,请保持本文完整,并注明作者@斗大的熊猫和本文原始地址: http://blog.topspeedsnail.com/archives/10952

相关文章

《是AI就躲个飞机-纯Python实现人工智能》有2个想法

  1. “遗传算法”栏代码第26行
    data = genome1写错了, 交配的时候把反而把自己污染了。
    改成
    data = Genome(0, {‘weights’:genome1.network_weights[‘weights’][:],
    ‘network’:genome1.network_weights[‘network’][:]})
    算法收敛会快很多。

发表评论

电子邮件地址不会被公开。 必填项已用*标注