基于神经网络和遗传算法的飞鹦鹉机器学习(代码片段)

Violent-Ayang Violent-Ayang     2022-12-30     666

关键词:

这是一个HTML5项目的源代码,该项目使用神经网络和遗传算法在Flappy Bird视频游戏中实现机器学习算法。该程序教一只小鸟如何以最佳方式拍打,以便尽可能长时间地安全地飞过障碍物。

所有代码都是用HTML5编写的,使用Phaser框架和Synaptic Neural Network库来实现神经网络。

项目运行

在此之前需要安装http-server用于启动服务

npm install -g http-server

安装完在项目根目录启动http-server


打开8080端口

点击source

神经网络架构

为了玩游戏,每个单元(鸟)都有自己的神经网络,由接下来的 3 层组成:

  1. 具有 2 个神经元的输入层,呈现鸟所看到的内容:

    1)鸟与鸟之间的水平距离最近的间隙
    2)鸟的高度差与最近的空隙
    
  2. 具有 6 个神经元的隐藏层

  3. 具有 1 个神经元的输出层,用于提供如下操作:

    if output > 0.5 then flap else do nothing
    

使用Synaptic神经网络库来实现整个人工神经网络,而不是从头开始创建一个新的神经网络。

机器学习的主要概念

该程序中实现的机器学习的主要概念是基于神经进化形式。它使用遗传算法等进化算法来训练人工神经网络。以下是主要步骤:

使用随机神经网络创建一个 10 个单位(鸟类)的新种群

让所有单位使用自己的神经网络同时玩游戏

对于每个单位,计算其适应度函数以衡量其质量,如下所示:

fitness = total travelled distance - distance to the closest gap

当所有单位都被杀死时,使用遗传算法运算符(选择、交叉和突变)评估当前种群到下一个种群,如下所示:

  1. 对当前人口的单位进行排序,按它们的适合度排名降序排列
  2. 选择前4个单位,并将其标记为当前人口的获胜者
    3.4个获胜者直接传递给下一个种群
  3. 为了填充下一个种群的剩余部分,创建6个后代,如下所示:
  • 1个后代由两个最佳优胜者交叉产生
  • 3个后代由两个随机获胜者交叉产生
  • 2个后代是两个随机获胜者的直接副本
  1. 为了增加一些变异,对每个后代应用随机突变。

实现要求

由于该程序是使用Phaser框架和Synaptic Neural Network库用HTML5编写的,因此需要这些文件:

  • phaser.min.js
  • synaptic.min.js

gameplay.js

整个游戏逻辑在 gameplay.js 文件中实现。它由以下类组成:

App.Main,具有以下基本功能的主要例程:

  • preload() 预加载所有资产

  • create() 创建所有对象并初始化新的遗传算法对象

  • update() 运行主循环,其中使用 AI 神经网络玩 Flappy Bird 游戏,并使用遗传算法进化种群

  • drawStatus() 显示所有单位的信息

  • TreeGroup Class,扩展了相位器组类以表示移动障碍。此组包含一个顶部和一个底部树精灵。

  • Tree Class,扩展相位器精灵类以表示树精灵。

  • Bird Class,扩展相位器精灵类以表示鸟精灵。

  • Text Class、用于绘制文本的扩展相位器位图文本类。

genetic.js

遗传算法在遗传.js文件中实现,该文件由以下类组成:

GeneticAlgorithm Class,处理所有遗传算法操作的主类。它需要两个参数:max_units设置人口中的单位总数,top_units设置用于进化人口的顶级单位(入选者)数量。以下是它的基本功能:

  • reset() 以重置遗传算法参数
  • createPopulation() 以创建新人口
  • 激活Brain()激活单元的AI神经网络,并根据输入获取其输出动作
  • evolvePopulation() 通过使用遗传运算符(选择、交叉和突变)进化种群
  • selection() 从当前人口中选择最佳单位
  • crossOver() 在两个父级之间执行单点交叉
  • 突变()对后代执行随机突变

svm分类基于遗传算法优化实现svm数据分类matlab源码(代码片段)

   一、神经网络-支持向量机支持向量机(SupportVectorMachine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。1数学... 查看详情

svm分类基于遗传算法优化实现svm数据分类matlab源码(代码片段)

  一、神经网络-支持向量机支持向量机(SupportVectorMachine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。1数学部... 查看详情

预测模型基于遗传算法改进核极限学习机(kelm)分类算法matlab源码(代码片段)

...具有学习速率快、泛化性能好等优点。典型的单隐层前馈神经网络如上图所示 查看详情

预测模型基于遗传算法改进核极限学习机(kelm)分类算法matlab源码(代码片段)

...具有学习速率快、泛化性能好等优点。典型的单隐层前馈神经网络如上图所示 查看详情

优化预测基于matlab遗传算法优化bp神经网络预测含matlab源码1376期(代码片段)

....6遗传算法的改进方向3遗传算法流程4关键参数说明二、BP神经网络简介1BP神经网络概述BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland为首的科研小组提出,参见他们发表在Nature上的论文Learningrepresentationsbyback-pro... 查看详情

elm预测基于遗传算法改进极限学习机elm实现数据预测matlab源码(代码片段)

...xtremeLearningMachine)ELM,是由黄广斌提出来的求解单隐层神经网络的算法。    ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网络(SLFNs),在保证学习精度的前提下比传统的学习算法速度更快。二、极限... 查看详情

elm预测基于遗传算法改进极限学习机elm实现数据预测matlab源码(代码片段)

...xtremeLearningMachine)ELM,是由黄广斌提出来的求解单隐层神经网络的算法。    ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网络(SLFNs),在保证学习精度的前提下比传统的学习算法速度更快。二、极限... 查看详情

优化预测基于matlab遗传算法优化极限学习机elm预测含matlab源码1673期(代码片段)

一、ELM神经网络简介1引言极限学习机不是一个新的东西,只是在算法(方法)上有新的内容。在神经网络结构上,就是一个前向传播的神经网络,和之前几篇博文讲的意义。2ELM最大的创新点1)输入层和隐... 查看详情

路径规划基于matlabgui改进的遗传算法机器人避障路径规划含matlab703期(代码片段)

一、简介1遗传算法概述遗传算法(GeneticAlgorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法简单、通用,鲁棒性强,适... 查看详情

机器学习---算法---神经网络入门(代码片段)

...热门的技术,绝对是人工智能。人工智能的底层模型是"神经网络"(neuralnetwork)。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于它。学习人工智能,一定是从它开始。什么是神经网络呢?网上... 查看详情

电力负荷预测基于matlab遗传算法优化bp神经网络电力负荷预测含matlab源码1524期(代码片段)

....6遗传算法的改进方向3遗传算法流程4关键参数说明二、BP神经网络简介1BP神经网络预测原理简介BP神经网络是一种多层前馈神经网络,常用的为输入层-单隐含层-输出层的三层结构,如下图所示。BP神经网络训练的主要思... 查看详情

bp预测基于遗传算法改进bp神经网络实现数据预测(代码片段)

  一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络... 查看详情

bp预测基于遗传算法改进bp神经网络实现数据预测(代码片段)

   一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

基于遗传算法的bp神经网络在汇率预测中的应用研究(matlab代码实现)(代码片段)

目录1遗传算法2 实数编码的遗传算法与神经网络的结合3Matlab代码及详细文章4运行结果 5参考文献6写在最后1遗传算法(1)遗传算法(GeneticAlgorithms,GA)是一种全局寻优搜索算法,它通过将问题编码为由基因组... 查看详情

机器学习的相关算法了解和总结(代码片段)

...习的一般步骤2、相关算法3、决策树4、支持向量机SVM5、神经网络6、随机森林算法机器学习的相关算法了解和总结1、机器学习的一般步骤训练集训练->提取特征向量->结合一定的算法(比如决策树、KNN)->得到结果机器学习... 查看详情

基于负相关学习多神经网络集成的目标识别算法matlab仿真(代码片段)

...机器学习及其应用过程中所面临的三个关键性挑战问题。神经网络集成学习通过训练多个神经网络并将其结果进行合成,显著地提高了学习系统的泛化能力,成为近年来机器学习领域一个重要的研究方向。在分析神经网络集成方法... 查看详情

bp预测基于遗传算法优化bp神经网络实现数据预测matlab源码(代码片段)

    一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

bp预测基于遗传算法优化bp神经网络实现数据预测matlab源码(代码片段)

   一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情