飞机大战告尾

参考

PPO算法逐行代码详解

链接

通过网盘分享的文件:PlaneWar

链接: https://pan.baidu.com/s/1cbLKTcBxL6Aem3WkyDtPzg?pwd=1234 提取码: 1234

10.17关于博客发了又改这件事

悲催的事

今天训练了一早上ppo模型,满怀期待的检测成果时发现一点长进都没有。结果查出来一件悲催的事,模型一直都在输出静止指令!昨晚只训练了一会,刚好看到有个得了200分的模型,还以为ok了的。

现在想想,不知道我是运气好还是不好,那个飞机就靠着随机数(dqn遗留下来的,我没删)拿了个200分,还把我骗过去了...只能说游戏特性造就了它,静止时没子弹打他,随机数又帮它躲子弹和拿buff,要是在贪吃蛇,活不过一秒

修改

连续换了几个关键词,总算在github上找到了使用ppo的游戏ai。

这次就快很多了,一顿cv,甚至都不用怎么改(开源万岁!),因为它是用pygame实现游戏的。

这次不敢怎么改了,太多坑了。但是不改的话,ai只能决定移动方向,过于死板。人类玩的时候可以通过按钮的点击时长来控制飞机速度,而ai只能一点点挪动。因此,我将输出值由之前的4变成了13(不够还可以再加),即4*3+1。

0 -> 静止

1 5 9 上 2 6 10 右 速度依次增大

复制代码
        direction = action
        if direction == 0:
            distance = 0
        else:
            #1 2 3 4 上 右 左 下 好别扭呀
            distance=5*int(direction/4+1)
            direction=direction%4+1

10.16

静默

昨晚问了一下gpt,将昨天的静默模式完善了一下(之前的贪吃蛇在训练时就是静默的,同时32个一起训,可惜这个项目不太好实现,报"无法序列化"类似的错)。

dqn改成了ppo

效果拔群!!!

平均分明显挺高了好多。

就是改的过程有点折磨人了。一开始想找博客,没见有直接用游戏做示例的,直接看又没心思。想着去问ai简单点,

给的很痛快,bug一堆...改了一小时后,它成功帮我克服了数学恐惧症,找博客看了。

将博客代码cv进去后,由于本项目传进net中的是一整张图,我在网上找不到啥相关了,只好又跟ai斗智斗勇了一番。早上九点研究到下午五点,一直在找bug。

结果吃了顿饭回来,才发现可以参考dqn的代码(有时候脑袋不灵光,很简单的事就是想不通)。工作量一下就缩小了好几倍!后面就是将dqn中的update函数魔改成ppo的(个人感觉dqn改成ppo主要改这里就行)

有些问题实在难以解决,那就只能灵活一下,绕过去了。

ppo的强大

换成了ppo,画面不卡顿了,模型文件变小了(dqn 600MB,现在ppo 3MB),平均分也变高了。

起始分

每次都要重新开始会导致缺少对抗boss的经验。通过设置初始分,起到类似选择关卡的作用,开局对战boss(200分第一个boss出现)。

10.15

奖励分

昨晚看到别的强化学习视频,发现之前设计的奖惩机制太简陋了。有些奖励分重复,例如角色受到的伤害与敌人造成的伤害都会给予惩罚(不知道当初咋想的),有些需要奖励的没给到位,例如没有存活分。

研究了一早上关于奖励的机制后,总体表现好了点,却出现了新问题,现在经常突然就冲进敌群里自杀。刚开始我以为是击杀分过高了,导致ai过于勇猛。结果几度大砍击杀分和增强存活分(有可能造就一个怂货),反而更猛了,还学会了冲到最上面去吃伤害...

不信邪的我打了几个log,看了一下奖励分到底怎么变化的。无效,跟我想的差不多,但效果却大相径庭。

pygame卡顿

敌人过多时,会导致卡住。通过装饰器测了一下时间,发现游戏刷新耗废了大部分时间。

期间又是修修改改,缝缝补补。又是暂停计时器,又是进程中夹带线程,还不小心搞成了静默模式。

相关推荐
烟锁池塘柳0几秒前
【大模型】解码策略:Greedy Search、Beam Search、Top-k/Top-p、Temperature Sampling等
人工智能·深度学习·机器学习
风逸hhh15 分钟前
python打卡day58@浙大疏锦行
开发语言·python
盼小辉丶15 分钟前
PyTorch实战(14)——条件生成对抗网络(conditional GAN,cGAN)
人工智能·pytorch·生成对抗网络
Allen_LVyingbo1 小时前
数智读书笔记系列035《未来医疗:医疗4.0引领第四次医疗产业变革》
人工智能·经验分享·笔记·健康医疗
zzc9211 小时前
时频图数据集更正程序,去除坐标轴白边及调整对应的标签值
人工智能·深度学习·数据集·标签·时频图·更正·白边
isNotNullX1 小时前
什么是数据分析?常见方法全解析
大数据·数据库·数据仓库·人工智能·数据分析
烛阴1 小时前
一文搞懂 Python 闭包:让你的代码瞬间“高级”起来!
前端·python
riveting1 小时前
明远智睿H618:开启多场景智慧生活新时代
人工智能·嵌入式硬件·智能硬件·lga封装·3506
JosieBook1 小时前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
菜菜why1 小时前
MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置
笔记·学习·电赛·嵌入式软件·mspm0