neat算法——本质就是遗传算法用于神经网络的自动构建

简介:

基于NEAT算法的马里奥AI实现

所谓NEAT算法即通过增强拓扑的进化神经网络(Evolving Neural Networks through Augmenting Topologies),算法不同于我们之前讨论的传统神经网络,它不仅会训练和修改网络的权值,同时会修改网络的拓扑结构,包括新增节点和删除节点等操作。
NEAT算法几个核心的概念是:

  • 基因:网络中的连接
  • 基因组:基因的集合
  • 物种:一批具有相似性基因组的集合
  • Fitness:有点类似于增强学习中的reward函数
  • generation:进行一组训练的基因组集合,每一代训练结束后,会根据fitness淘汰基因组,并且通过无性繁殖和有性繁殖来新增新的基因组
  • 基因变异:发生在新生成基因组的过程中,可能会出现改变网络的权重,增加突出连接或者神经元,也有可能禁用突触或者启用突触

下图我们展示了算法从最一开始简单的神经网络,一直训练到后期的网络

利用NEAT算法实现马里奥的只能通关的基本思想便是,利用上面NEAT算法的基本观点,从游戏内存中获取实时的游戏数据,判断马里奥是否死忙、计算Fitness值、判断马里奥是否通关等,从而将这些作为神经网络的输入,最后输出对马里奥的操作,包括上下左右跳跃等操作,如下图:

大多数该算法实现马里奥的智能通关都依赖于模拟器,运用lua语言编写相应脚本,获取游戏数据并操作马里奥。NeuroEvolution with MarI/O。实现效果图如下:

基于Deep Reinforcement Learning的马里奥AI实现

NEAT算法是相对提出较早的算法,在2013年大名鼎鼎的DeepMind提出了一种深度增强学习的算法,该算法主要结合了我们上面讨论的CNN和Q-Learning两种算法,DeepMind的研究人员将该算法应用在Atari游戏机中的多种小游戏中进行AI通关。
其基本算法核心便是我们之前介绍的CNN和增强学习的Q-Learning,游戏智能通关的基本流程如下图:

利用CNN来识别游戏总马里奥的状态,并利用增强学习算法做出动作选择,然后根据新的返回状态和历史状态来计算reward函数从而反馈给Q函数进行迭代,不断的训练直到游戏能够通关。研究人员在训练了一个游戏后,将相同的参数用在别的游戏中发现也是适用的,说明该算法具有一定的普遍性。下图反映了一个学习的过程

而同样的方法,将DRL应用在马里奥上,github上有一个开源的实现方式:aleju/mario-ai
其最终的实现效果图如下:

我们发现在CNN识别过程中,每4帧图像,才会进行一次CNN识别,这是识别速率的问题,图中曲线反映了直接回报函数和简介回报函数。

 

摘自:http://www.cnblogs.com/Leo_wl/p/5852010.html












本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7725264.html,如需转载请自行联系原作者





相关文章
|
2月前
|
机器学习/深度学习 缓存 算法
《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
在深度学习领域,神经网络的核心驱动力依赖于高效的反向传播算法,而自动微分技术是其实现的关键。尤其在C++环境中,面对内存管理和性能优化的挑战,通过计算图、对象池、多线程等技术实现高效自动微分,支持神经网络的训练,对促进AI技术的发展具有重要意义。
|
8月前
|
机器学习/深度学习 算法 调度
深度学习|改进两阶段鲁棒优化算法i-ccg
深度学习|改进两阶段鲁棒优化算法i-ccg
|
4月前
|
机器学习/深度学习 自然语言处理
如何让等变神经网络可解释性更强?试试将它分解成简单表示
【9月更文挑战第19天】等变神经网络在图像识别和自然语言处理中表现出色,但其复杂结构使其可解释性成为一个挑战。论文《等变神经网络和分段线性表示论》由Joel Gibson、Daniel Tubbenhauer和Geordie Williamson撰写,提出了一种基于群表示论的方法,将等变神经网络分解成简单表示,从而提升其可解释性。简单表示被视为群表示的“原子”,通过这一分解方法,可以更好地理解网络结构与功能。论文还展示了非线性激活函数如何产生分段线性映射,为解释等变神经网络提供了新工具。然而,该方法需要大量计算资源,并且可能无法完全揭示网络行为。
48 1
|
5月前
|
机器学习/深度学习 人工智能 算法
人人都能搞定的大模型原理 - 神经网络
从1950年人工智能初现雏形至今,感知机作为神经网络的基石,引领了从单层到深层神经网络的技术飞跃。20世纪50年代末,弗兰克·罗森布拉特受人脑神经元启发,提出了感知机模型,它能够通过学习调整权重与阈值来识别模式,如手写数字。随着技术进步,感知机演变成更为复杂的层级和卷积神经网络。直至2022年ChatGPT的问世,人工智能的应用进入了公众视野。感知机的学习机制基于监督学习,通过不断调整权重和阈值来提高识别准确性。这种“亚符号”派的技术逐渐发展为拥有数十亿参数的大模型,展示了强大的智能涌现能力。随着AI技术的不断发展,我们正步入一个人机共生的新时代。
|
7月前
|
机器学习/深度学习 算法 搜索推荐
神经网络中的优化方法
摘要: 这篇内容介绍了梯度下降优化算法在机器学习中的挑战,如平缓区域、鞍点和局部最小值,以及如何通过改进策略来克服这些问题。文章提到了几种优化方法,包括Momentum、AdaGrad、RMSprop和Adam。Momentum通过累积历史梯度信息来调整参数更新,帮助模型在训练过程中更快地收敛。AdaGrad和RMSprop解决了AdaGrad学习率过早衰减的问题,RMSprop结合了Momentum和AdaGrad的优势,通过一阶矩估计和二阶矩估计动态调整学习率,尤其适用于大规模数据集和复杂模型。Adam是RMSprop的一个变种,是深度学习中最常用的优化器之一。
|
机器学习/深度学习 算法 人机交互
基于粒子群优化和引力搜索混合优化算法改进的前馈神经网络(Matlab代码实现)
基于粒子群优化和引力搜索混合优化算法改进的前馈神经网络(Matlab代码实现)
136 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能
定义两组具有不同分布的模拟数据,使用神经网络的MINE的方法计算两个数据分布之间的互信息
406 0
|
机器学习/深度学习 存储 算法
【Pytorch神经网络基础理论篇】 07 线性回归 + 基础优化算法
回归是指一类为一个或多个自变量与因变量之间关系建模的方法。在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。 在机器学习领域中的大多数任务通常都与预测(prediction)有关。
364 0
|
机器学习/深度学习
神经网络拟合能力的提升之路(Pyhton)
本文侧重于模型拟合能力的探讨。过拟合及泛化能力方面下期文章会专题讨论。 原理上讲,神经网络模型的训练过程其实就是拟合一个数据分布(x)可以映射到输出(y)的数学函数 f(x),而拟合效果的好坏取决于数据及模型。 那对于如何提升拟合能力呢?我们首先从著名的单层神经网络为啥拟合不了XOR函数说起。
|
机器学习/深度学习 资源调度 Python
机器学习:深入理解局部加权线性回归+源码实现
机器学习:深入理解局部加权线性回归+源码实现
446 0
机器学习:深入理解局部加权线性回归+源码实现