# 监督学习在Aliens游戏中的探究尝试
**摘要**: 监督学习是指:利用一组已知类别的样本调整的,使其达到所要求性能的过程,也称为训练或有教师学习。
关键词: 特征提取、监督学习、朴素贝叶斯、逻辑斯蒂、随机森林
# 一、基于现有特征提取方法的实验
## 1.1 现有特征提取的理解
Recorder.java提供了特征提取的入口。其中invoke为记录函数,它调用featureExtract函数来生成当前状态的观测,并在末尾追加当前做出的动作,以此形成一条完整记录,用filewriter写入文件。FeatureExtract函数是特征提取的重点,目前我们提取的特征有:32*14=448个格子中的物体,4个游戏相关属性,1个动作,总共453个值。其中448个格子记录物体的编号,是一个int类型,4个游戏相关属性直接调用obsversation的4个get个方法得到(需要注意的是源代码里给448赋值了4次,实际上只存了AvatarType,其他的都被取代了)。
![](https://www.writebug.com/myres/static/uploads/2022/6/15/2b35347cdcfd283c48560f21becd6914.writebug)
在invoke函数中对于4个动作的整数化表示如下:
![](https://www.writebug.com/myres/static/uploads/2022/6/15/67d8f61bd3ef6a11c066d15a23db15f8.writebug)
## 1.2 不同模型的介绍与训练结果分析
为了充分比较不同监督学习模型的游戏性能,这里直接选择了最高难度的游戏,并且控制变量,使用相同的训练数据与训练轮数,只改变训练模型。
### 1.2.1 朴素贝叶斯
**简介**:
朴素贝叶斯算法是一种基于概率的分类方法,它的主要依据是如下图的 条件概率公式,即假定给定目标值时属性之间相互条件独立,在X=Xi的情况下将输入样本分类到某一类的概率可以由这一类出现的概率乘此类中输入为Xi出现的条件概率再除以X=Xi的概率得出。以此种方法计算不同分类的概率,并返回最大值所指向的分类,就完成了朴素贝叶斯分类。需要注意的是,P(X=Xi)可以通过全概率公式得出,也可以直接统计计算。
![](https://www.writebug.com/myres/static/uploads/2022/6/15/eff6afd0a1afe212b8fb36730b7b8db4.writebug)
朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。[4]
朴素贝叶斯算法的优点是,对小规模的数据表现很好,适合多分类任务,适合增量式训练。同时它的缺点在于,对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。[3]
**训练结果**:
训练数据显示总的分类准确率为40%左右,相对较低。
分析详细准确性数据,可以发现NIL的精确率很高,但是召回率非常低,可以预见agent将比人类进行更少的停滞动作。USE两项均很低,可以想见agent将不太倾向于发射子弹,且正确发射的概率也相应较低。而left和right两项虽然虽然精确率不高但是召回率较高,因而agent将进行比人类更多的左右移动动作。
再看混淆矩阵,各项被分到正确类的概率还是最高的,同时错误分类到其他3项的概率大致相当且较高。因而agent的行为没有特别明显的偏好特征,但总的来说错误的比例是较高的,预计结果不会特别好。
![](https://www.writebug.com/myres/static/uploads/2022/6/15/d20850dbcda6ac4cbf6b66f6a30cf8a9.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/15/a0861a273092e65c455e7dce93fab0cd.writebug)
游戏结果来看,在test的一开始,表现十分正常,命中率较高,很快就把外星人的数量减少到减少到5个以下,但在仅剩一个外星人的时候开始一动不动,最终失败。
**小结**:
个人认为,在我们的特征数据提取所提供的X向量其维数相当大,而相对来说总的记录数量相对较小,这导致了统计X=Xi的概率始终处在一个非常小的值附近,而难以产生有价值的判断依据,甚至常常需要进行拉普拉斯平滑。因而朴素贝叶斯算法在这里不太容易产生良好的测试效果。
### 1.2.2 逻辑斯蒂回归
**简介**:
逻辑斯蒂回归的本质是极大似然估计,其分类方法是对输入样本高维空间用超平面进行分割。
经典的逻辑斯蒂回归模型是一种二分类模型,在进行多分类时,通过累次进行二分类(p与除p以外的类)来达到效果。实际操作中,不同类别对应的logistic函数实际上表示的是分为此类的概率,最终返回概率最大的类别,以此来实现多分类的目标。
简单看一下二分类逻辑斯蒂回归的算法,期中调参拟合的过程由weka实现,这里只叙述分类部分。
基本的线性回归形式为:
![](https://www.writebug.com/myres/static/uploads/2022/6/15/4d6ab0de6ba01075c1d9722debd0a5a4.writebug)
Sigmoid函数:![](https://www.writebug.com/myres/static/uploads/2022/6/15/a474a0713e3306f2252d00ed15e457c4.writebug),可以把输入规范化到0,1之间。
将线性回归表达式套上sigmoid函数,得到:![](https://www.writebug.com/myres/static/uploads/2022/6/15/c863d07d53c5bb4a3ea2a818b1ed8947.writebug)这样就把线性回归表达式的实值输出结果压缩成了一个0-1之间。但这样还是没有实现分类的效果,我们需要加一个“门槛“,若输出值大于这个门槛,那么就将其结果判断为1,反之判断为0,一般这个“门槛“都是0.5。
可以看出,逻辑斯蒂回归的输出其实表征的是当前测试样本被分到1类的概率,即[5]
![](https://www.writebug.com/myres/static/uploads/2022/6/15/abf8fd4a4ba31f0e5fbf5f8885ec824b.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/15/26062ba5efc5eea967d562257df0079d.writebug)
虽然逻辑回归能够用于分类,不过其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。然而,正是这个简单的逻辑函数,使得逻辑回归模型成为了机器学习领域一颗耀眼的明星。
这主要是由于线性回归在整个实数域内敏感度一致,而分类范围,只需要在[0,1]之内。而逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型。逻辑曲线在z=0时,十分敏感,在z>>0或z<<0处,都不敏感,将预测值限定为[0,1]。[6]
**训练结果**:
总体来看准确率达到了62%,相比朴素贝叶斯有了较大提升。
具体来看准确性,可以发现NIL的精确率与召回率均较高,推测agent学习人类停止动作的学习效果应当不错。而USE在精确率与召回率方面都较低,推测agent正确发射子弹可能会有困难。
再看混淆矩阵,反映了同样的情况,USE被误判为NIL的概率相当大,几乎和正确判断相当,可以预见agent将比人类玩家停止更多时间,同时发射更少的子弹。而左右平移表现相对正常。
![](https://www.writebug.com/myres/static/uploads/2022/6/15/4f8d5b3b743b50f635f79d91f1cd82b2.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/6/15/81b01ca31921f9abd329f5658ca27e00.writebug)
从游戏测试来看,虽然从一开始就频繁发射,但发射命中率始终较低,从最开始就miss了一堆外星人,长时间未能有效减少外星人数量,最终碰到炸弹失败。
##
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:lunwen文档+源码 监督学习是指:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。旧版的特征提取中直接使用了448个方格内的物体属性作为特征来进行学习。这样做虽然最大化了特征的完整性,但是过于具体,缺乏抽象性,可能不具备良好的学习性质。同时游戏状态是不会重复的,因而收集到的特征参数也不尽相同,这样的朴素知识获取方法,近一步降低了训练模型的抽象性与泛化能力,非常容易出现过拟合情况。因而我们特征提取方法的改进就是,通过人为方法提取一些更加“抽象”同时自认为“有用”的特征,让机器根据这些我们人类组织出来的经验进行学习,以期望获得更好的学习成果。详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125313555
资源推荐
资源详情
资源评论
收起资源包目录
Java实现监督学习在Aliens游戏中的探究尝试.zip (269个子文件)
AliensRecorder.arff 1.15MB
Java实现监督学习在Aliens游戏中的探究尝试 论文.doc 727KB
gvgai-assignment3.iml 559B
weka.jar 6.28MB
Game.java 55KB
ArcadeMachine.java 34KB
ForwardModel.java 31KB
VGDLSprite.java 25KB
Chromosome.java 21KB
LevelGenerator.java 19KB
StateObservation.java 19KB
SingleTreeNode.java 16KB
VGDLFactory.java 16KB
GameAnalyzer.java 15KB
VGDLParser.java 13KB
LevelGenerator.java 11KB
SingleMCTSPlayer.java 10KB
GameDescription.java 9KB
SingleTreeNode.java 9KB
SingleTreeNode.java 9KB
SingleTreeNode.java 8KB
Vector2d.java 7KB
AStar.java 7KB
LevelGenerator.java 6KB
Agent.java 6KB
Recorder.java 6KB
BasicGame.java 6KB
LevelData.java 6KB
MovingAvatar.java 5KB
Agent.java 5KB
AlternateChaser.java 5KB
Types.java 5KB
Agent.java 5KB
Utils.java 5KB
Chaser.java 5KB
StatSummary.java 4KB
ShootAvatar.java 4KB
SpriteGroup.java 4KB
FlakAvatar.java 4KB
TimeEffect.java 4KB
TransformToSingleton.java 4KB
LevelMapping.java 4KB
PathChaser.java 4KB
Event.java 4KB
Agent.java 4KB
AbstractPlayer.java 4KB
Node.java 4KB
VGDLRegistry.java 4KB
PathAltChaser.java 4KB
SharedData.java 3KB
SpriteContent.java 3KB
PathFinder.java 3KB
VGDLViewer.java 3KB
Observation.java 3KB
TransformTo.java 3KB
InteractionContent.java 3KB
SimpleStateHeuristic.java 3KB
SpawnPoint.java 3KB
ElapsedCpuTimer.java 3KB
Agent.java 3KB
ContinuousPhysics.java 3KB
CompetitionParameters.java 3KB
OrientedAvatar.java 2KB
OngoingAvatar.java 2KB
GridPhysics.java 2KB
TreeNode.java 2KB
PullWithIt.java 2KB
Agent.java 2KB
Spreader.java 2KB
StepBack.java 2KB
Agent.java 2KB
Agent.java 2KB
RandomNPC.java 2KB
TransformToAll.java 2KB
Agent.java 2KB
WallStop.java 2KB
AddTimer.java 2KB
Effect.java 2KB
StepController.java 2KB
HorizontalAvatar.java 2KB
MissileAvatar.java 2KB
Resource.java 2KB
MultiSpriteCounter.java 2KB
UndoAll.java 2KB
Portal.java 2KB
RandomPathAltChaser.java 2KB
RandomAltChaser.java 2KB
CollectResourceIfHeld.java 2KB
CombinedConstraints.java 2KB
GameContent.java 2KB
AttractGaze.java 2KB
Agent.java 2KB
RandomBomber.java 2KB
MappingContent.java 2KB
KeyPulse.java 2KB
Agent.java 1KB
SingleMCTSPlayer.java 1KB
Agent.java 1KB
SingleMCTSPlayer.java 1KB
TerminationContent.java 1KB
共 269 条
- 1
- 2
- 3
资源评论
- zzqqds2023-11-29资源不错,内容挺好的,有一定的使用价值,值得借鉴,感谢分享。
shejizuopin
- 粉丝: 1w+
- 资源: 1300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【Unity 动画插件】DOTween Pro 可以在短时间内实现复杂的动画逻辑,极大提升了游戏开发的效率
- Skia-macOS-Release-arm64.zip
- 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展 现已开放源代码并接入多家公司线上产品线,开箱即用
- 【地级市数据集】1999-2020年全国31省300多个地级市直辖市常住人口面板数据(万人)
- java项目,课程设计-ssm大学生兼职信息系统.zip
- Aseprite-v1.2.40-Source.zip
- 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的
- 微聚云科数字人源码,供学习交流
- 【Unity UI 插件】Ultimate Clean GUI Pack 快速搭建精美的 UI
- 重新编译的pepk.jar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功