( Back to course page )

Edit

作业总览

本次作业的目的是使用监督学习来模仿玩家进行游戏时的动作。

首先,下载本次作业程序包: (点击下载ZIP)

在本次作业中,你需要收集游戏数据、提取特征、训练监督学习模型,并测试模型在游戏中的表现。

Edit

收集数据

在 play.py 中已经准备好了收集数据的运行入口。 运行 play.py 进行游戏时,程序将记录每一时刻的游戏画面以及玩家按下的按键(左、右、上)。

请注意,监督学习主要用于模仿训练数据中的行为。 如果采集数据时包含大量错误操作,模型通常也会学习这些错误行为。 得到的数据文件将保存在 logs 目录中。

Edit

训练模型

learn.py 是提取特征和训练模型的主要代码:
  • extract_features 函数负责提取特征。已有的简单实现会记录屏幕上各个位置的信息。
  • 完成特征提取后,玩家按键信息将作为类别标签,与特征共同构成监督学习数据集。
  • 训练完成的模型将保存在 logs 目录中。
可以修改特征提取方法以及训练数据的加载路径,然后运行 learn.py 训练模型。

作业框架默认使用 sklearn 中的 RandomForestClassifier 训练模型。你还需要尝试其他监督学习方法,并比较不同方法的性能。

Edit

测试模型

修改 test.py 中要加载的模型路径后运行程序。 程序将自动开始游戏并输出测试结果。

测试时应尽量采用一致的实验设置,并记录评价指标、运行结果和失败案例,以便公平比较不同模型及特征提取方法。

Edit

作业内容

  1. 使用现有的特征提取方法收集训练数据,尝试至少三种监督学习方法; 在报告中介绍这些学习方法,并比较它们的测试性能。
  2. 修改或重新设计特征提取方法,并通过对比实验分析新特征是否改善了模型表现。

Edit

作业报告

本次作业需要提交实验报告和源码。实验报告应至少包括以下内容:
  • 训练数据的采集方式、数据规模以及数据质量分析;
  • 至少三种监督学习方法的原理介绍、参数设置和性能比较;
  • 对原有特征提取方法所做的修改及其设计理由;
  • 模型测试方式、评价指标和实验结果;
  • 模型的典型成功案例和失败案例分析;
  • 最终采用的模型及选择该模型的理由。
使用 实验报告模板(点击下载) 撰写实验报告。

Edit

作业提交

请按照以下要求提交作业:
  1. 将实验报告保存为PDF文件,并以学号命名,例如: 231221001.pdf。
  2. 将实验报告和相应源码打包成ZIP文件,并以学号命名,例如: 231221001.zip。
  3. ZIP文件中只需包含实验报告和必要源码。 请勿包含虚拟环境、依赖库、缓存目录、大型训练数据、训练模型或运行日志。
  4. 将ZIP文件作为邮件附件发送至: lamda_introai@126.com 。
  5. 邮件主题必须使用以下格式:
    [作业3] 学号 姓名
    例如: [作业3] 231221001 张三
系统收到作业后,将根据提交的实验报告和源码生成三个考核问题。 考核分为三轮,每轮围绕一个主问题进行:
  • 请直接回复系统发送的问题邮件,不要新建邮件;
  • 请保留邮件主题中的提交编号,例如: IAI-XXXXXXXX;
  • 系统可能针对当前问题继续追问;
  • 当前问题考核结束后,系统会自动发送下一轮问题;
  • 第三轮结束后,系统会发送本次作业考核完成通知。
如需修改已经提交的作业,请重新发送包含完整实验报告和源码的ZIP文件, 并在文件名后添加版本号,例如: 231221001-1.zip。

重新提交时请新建邮件,并继续使用规定的邮件主题格式。 不要将新版作业作为问答邮件的附件发送。

请确保邮件附件不超过20MB。 如果必要源码超过限制,请联系课程助教。 请勿通过邮件提交大型训练数据、训练模型、虚拟环境或第三方依赖库。

注意:作业严禁抄袭!

The end