飞机大战告尾

参考

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卡顿

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

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

相关推荐
layneyao2 分钟前
AI在医疗领域的10大应用:从疾病预测到手术机器人
人工智能·机器人
每次的天空18 分钟前
Android学习总结之Java篇(一)
android·java·学习
卡奥斯开源社区官方35 分钟前
多模态革命!拆解夸克AI相机技术架构:如何用视觉搜索重构信息交互?(附开源方案对比)
人工智能·重构
MatpyMaster41 分钟前
液体神经网络LNN-Attention创新结合——基于液体神经网络的时间序列预测(PyTorch框架)
人工智能·pytorch·神经网络·时间序列预测
小白用python42 分钟前
pycharm无法创建venv虚拟环境
ide·python·pycharm
ImAlex43 分钟前
开开心心放假回家,结果忘记老家wifi密码新买的手机连不上WiFi?不用慌,pywifi来拯救你。
python
jndingxin1 小时前
OpenCV 图形API(69)图像与通道拼接函数------将一个 GMat 类型的对象转换为另一个具有不同深度GMat对象函数convertTo()
人工智能·opencv·计算机视觉
带娃的IT创业者1 小时前
《AI大模型应知应会100篇》第39篇:多模态大模型应用:文本、图像和音频的协同处理
人工智能·microsoft·音视频
算AI1 小时前
LLM用于科学假设生成:探索与挑战
人工智能·算法
黑不拉几的小白兔1 小时前
risc-V学习日记(4):RV32I指令集
学习·risc-v