时间:2023-09-26 11:07:52来源:互联网
网上有很多关于超级马里奥3攻略大全,超级玛丽3攻略的知识,也有很多人为大家解答关于超级马里奥3攻略的问题,今天上分宝游戏网为大家整理了关于这方面的知识,让我们一起来看下吧!
1、超级马里奥3攻略
Pytorch的一个强化的学习教程( Train a Mario-playing RL Agent)使用超级玛丽游戏来学习双Q网络(强化学习的一种类型),官网的文章只有代码, 所以本文将配合官网网站的教程详细介绍它是如何工作的,以及如何将它们应用到这个例子中。
强化学习是如何起作用的机器学习可以分为三类:监督学习、非监督学习和强化学习。
在监督学习中,模型被赋予一个训练数据集,该数据集包含输入和输出(标签)。它从这些数据中学习,了解如何从输入中获得输出。训练完成后使用测试数据集(包含模型从未见过的输入),模型必须尝试预测每个数据点应该被赋予的标签。
在无监督学习中,模型被赋予一个数据集,但数据点都没有标签。它被提供数据点和一些簇来将它们分组。随着簇数量的变化,算法的输出也随之变化。这种类型的学习用于发现给定数据中的模式。
强化学习与其他两种训练方法不同:
上图t表示被处理的步骤(或时间)。在一个步骤中,环境为代理的行为以及当前状态提供响应(奖励或惩罚)。有了这些信息,代理就可以确定要采取的行动。
它的训练是不受监督的,但它不是试图将数据点分组,而是试图通过在环境中执行有利的行为来获得奖励,同时试图避免犯惩罚它的错误(R_t)。
当涉及到强化学习时,理解以下术语很重要:
Agent: Agent是一种神经网络,它通过与环境的相互作用进行学习,并了解哪些行为会导致好的结果和坏的结果,我们将它称为代理,也有叫他为智能体的,但是我觉得代理更加合适,因为它相当于是我们玩游戏的代理人。
Environment:环境是代理在其中进行交互和学习的世界
Action:动作是指行为主体在特定的环境(状态)下决定要做的事情
State:状态是对给定时刻环境中的内容的捕获
Response:响应是当一个代理做了对其下一个状态有益或有害的事情时给予它的东西
深度Q学习与双深度Q网络(DDQNs)深度Q学习是一种使用深度神经网络的强化学习。它使用Q值(状态的质量),确定其行为对环境状态是有益的还是有害的,来进行学习
深度Q网络(DQN)是一种多层神经网络,对于给定的状态,它根据网络的权重和偏差输出一个动作值向量。对于n维状态空间和包含m个动作的动作空间,神经网络是一个从R^n到R^m的函数。
Q学习(Q-learning)算法在某些条件下会高估动作值,这可能会影响它们的性能。而双深度Q学习是对DQN算法的一种特殊改变,它不仅减少了算法的过高估计,还提高了算法的性能。双Q学习的思想是通过将目标中的最大操作分解为行动的选择和行动的评估来减少过高估计。
深入理解深度Q学习和双深度Q网络(DDQNs)涉及复杂的数学。我们这里不详细介绍。
背景知识
在训练玩马里奥的背景下:
我们的代理是马里奥。游戏环境就是马里奥的世界——它包含敌人、障碍和道具,如管子、蘑菇等。行动就是马里奥执行的动作动作空间是马里奥可以执行的所有可能的动作:向右跑,向右跳,向左跑,向左跳。在这种情况下,我将马里奥限制在右侧移动,以便进行更快的训练。状态包括以下几项内容:马里奥的位置、障碍、升级道具和敌人的位置、马里奥的当前分数(不重要)以及所有物体的前进方向。状态空间是环境中所有可能状态的集合。奖励是环境对代理的反馈,这将推动马里奥学习并改变自己未来的行动。回报是经过多次游戏或章节的累积奖励。状态中行为的质量是给定状态和行为的预期回报。环境预处理
在我们开始训练神经网络之前,我们可以优化环境,这样训练的计算量就不会那么大。
灰度化:环境的大小是一个3x240x256的窗口,其中3表示RGB通道,240x256表示窗口的尺寸。状态中每个对象的颜色并不会真正影响代理的最终行动,例如马里奥穿红色衣服或砖块是棕色并不会改变代理的行动。所以我们可以将整个图像转换为灰度图,而不是处理一个计算量很大的3x240x256窗口,这样我们可以使用1x240x256的灰度图。
调整大小:对于计算机来说,以每秒15帧的速度处理一个240 × 256像素的窗口可能不是最简单的(稍后会详细介绍)。所以我们可以调整代理接收的图像的大小,比如缩小到到84像素乘84像素。
跳帧:我们的代理处理每一帧并不会增加多少价值,因为通过查看连续的帧,代理不会获得太多信息,因为连续的帧包含非常相似的状态。所以我们可以跳过给定数量的中间帧而不会丢失太多信息。
叠加帧:帧叠加用于将连续的帧合并为一个统一的学习模型输入。使用这种方法,可以通过查看给定的帧,更容易地识别之前发生的动作。
所以我们堆叠四个连续的,灰度化的,调整大小的帧,这样得到了一个4x84x84的大小的输入。
定义代理
马里奥(我们的代理)需要能够行动、记忆和学习。
动作:代理的行为基于环境的当前状态和最优的行为策略。在每个状态下,马里奥要么执行一个动作(探索),要么使用他的神经网络(MarioNet)为他提供的一个最佳执行动作(利用)。马里奥根据自己的探索速度决定是否进行探索或利用。
在训练开始时,探索率被设置为1,这意味着马里奥肯定会做一个随机的动作。然后,随着每个堆叠帧的流逝,探索速率会随着一个叫做探索速率衰减的数字而减少,这将引导马里奥使用神经网络而不是随机行动进行探索。
记忆(缓存和回忆):马里奥根据当前状态、奖励和下一个状态来记住自己以前的动作。对于每个动作,马里奥都会缓存他的经验(将它们存储在内存中)。然后,他从记忆缓存中回忆(随机抽取一批体验),并使用它来学习如何更好地玩游戏。
学习:随着时间的推移,马里奥需要能够使用自己的经验去完善自己的行动(或行动策略)。为了完成这项任务,我们使用DDQN算法。在这种情况下,DDQN使用两个近似最优动作值函数的卷积神经网络。采用时间差分法(TD)计算TD_estimate和 TD_target,并计算损失来优化神经网络参数。
运行MarioNet我查看官方教程的代码,了解它是如何工作的。代码注释得非常好。它可以让我们了解双Q学习中的所有数学概念是如何转化为代码的。
运行网络并观察网络是如何工作的非常有趣。我们这里不对这个模型进行完整的训练步骤,因为这需要4万轮次。我花了大约9分钟在笔记本电脑上看完100轮。按照这个速度,需要60-70个小时才能够训练万4万的轮次。
下面列出了一些在整个训练过程中生成的输出图表和日志。通过观察这张图,我可以观察到神经网络是如何逐步学习的。注意在前几轮中,马里奥的行动是完全随机的。直到第40轮(图表中的第8轮)左右,马里奥才开始利用他的神经网络。
x轴上的值乘以5是论次数。y轴是这5轮的平均奖励。
每五轮训练的平均时常。y轴表示每一轮的时间。
上图是5轮的操作数,探索率,平均奖励,长度,损失和Q值,花在这5轮上的时间,以及完成这5轮的时间。
看看训练一轮是什么样子的:
注意事项加载和保存模型
在对该程序进行试验时,每次运行该应用程序时都是从头开始的,并没有保存神经网络的最后一个训练状态。因此需要找到一种通过多次运行来训练网络的方法,这样我就不必让计算机的CPU超负荷60个小时。在PyTorch中有多种方法可以保存和加载模型。虽然在代码中正确地实现了保存,但我发现在程序开始时并没有真正加载之前保存的神经网络状态。
这导致我们每次训练都是从头开始的。所以我们需要修改代码:
在程序结束时,保存神经网络的状态、epsilon(探索率)值和轮次。在程序开始时,加载先前保存的神经网络状态、epsilon值和轮次,这样训练就可以从以前的点恢复训练。
cpu和GPU
使用CPU的训练很慢,但我尝试使用GPU训练时,它就会耗尽内存(因为笔记本显卡的显存不大)。GPU内存耗尽的原因是,它一直在填充缓存,直到缓存满了,但在训练过程中从未清空任何数据。这是一个需要研究的问题。
总结非常感谢Yuanson Feng, Suraj Subramanian, Howard Wang和Steven Guo,他们制作了这个简单的教程,通过这个教程可以学习很多多关于强化学习的知识,包括使用PyTorch和OpenAI Gym(提供了这些很棒的环境来训练我的神经网络)这是一个学习并创建自己的强化学习应用程序非常好的开始。
作者:Sohum Padhye
1-1.这关主要是入门,开始后第三个管道能进,但不要急着进,往后走,上面第二层砖的右边有个隐藏的加命蘑菇,然后再进管道,吃过金币后上面的明毕管道也可以进,里面有很多隐藏的金币,然后出来就行了(这关有100多个金币)。
1-2.这关有两个星星,隐掉小怪物就可以加命(以后有星都可类似加命),中间有两个悬着的管道,第二个可以进,还是先别急着进,右边不远处有三个隐藏的金币,然后回来从管道上往上跳(不好跳),上面有个加命蘑菇。然后再回来进去。
1-3.主要会跳红杠,因为红杠会掉的。在有两个绿龟的地方,上面云层里有隐藏的金币,隐约可以看见。
1-4.难点是断崖,加速跳过去就行了,中间有隐藏的金币。注意躲避探照灯,最后打魔王,踩一下,会掉一格血,发子弹是五下掉一格。
2-1.主要说两点:1、中间的时候会有一个绿龟和一群毒蘑菇,用龟壳撞死它们可加一条命。2、在加命的地方,上面有个很高的管道,在它左边不远处有个隐藏的金币和一个隐藏的绿果(可以跳的更高,有的更快)。最好不要进管道,因为里面的魔王很厉害,如果挂掉,就会回到4-1关。
2-2.第一次涉水,建议用吃了绿果的幻身玛丽,这样游得快。出来后左边有8个金币。
2-3.建议加快跑过去,这样被飞鱼碰到的几率小点。
2-4.注意两点:1、跳红杠;2、跳激卖芹弹簧。中间有很多管道的地方,上面悬着管道的第二个可以进。
2-5.建议往上走,这样既可以吃金币,而且较安全。最后阶梯的地方有个隐藏的花。最后打魔王的时候会有个火球来回跳动,注意躲避。
3-1.这一大关主要以夜为背景,很美,天上有流星。再跳弹簧的左上方有两个加命,过断崖后有两个食人草管道,第二个可以进(如果可以横着进就直接到了8-1关)。
3-2.难点就是有两处断崖不容易跳,因为上面的砖块很低,建议第一个加速跳过(跑到边缘开始跳),第二个先把砖顶掉,再跳。
3-3.有星,隐掉后面的小怪物就能加命。注意跳移动红杠。
3-4.开始没多久,屏幕就会变暗,主要注意1、上面有的砖块会掉,有的后面还跟有毒蘑菇。2、跳红配迟杠有点难(间隙大、会掉),尤其是对岸的砖较低,建议先跳在加速,但要连着。
4-1.头顶上抛刺猬的东西可以踩掉,也可打掉。在两块“田”字砖的中间有个隐藏的加命。后面有个凹槽,里面有刺猬,也有金币,不是大玛丽就别进了,因为出口只有一个,其它的是隐藏的金币。
4-2.特点是拉屏幕,开始后不久往回走,有两个隐藏的金币和两个隐藏的加命(不好吃到),这关有星星,但不容易加命,因为屏幕拉的慢。在云梯的尽头的左上方有金币(容易忽略)。
4-3.跳云朵杠(刚前面的红杠一样),从移动云杠跳岸的时候,注意下来的乌龟,之后下面的管道可以进,如果是大玛丽,出来后往回走,前面有11个金币,然后往上走,注意锤子龟。
4-4.有星,但没加命(没有小怪物),可以护身。主要的还是要会跳,前面的`小缺口,可以加速跑过去,后面的砖梯向下走的话,可以加速,向上要赶紧跳,主要是自己把握好。
5-1.这关开始出现炮弹,乘移动红杠到对岸后,两个问号下面是两个隐藏的金币,上面的管道可以进,走到尽头后,先别进管道,再往后走,有一个加命和一个花,然后回过来进管到。
5-2,这关主要是乘移动云杠进行的,注意不要被云杠丢掉,一定要跟上。有个地方不能往上走,那是死路。如果是小玛丽,那个蘑菇一定要吃到,后面是要往上走的。
5-3.难点在于过断崖,建议加速跳到第二个飞龟上踩过去。在后面有个凹槽,里面有个刺猬,这里有个隐藏的花。最后跳弹簧要准。然后世界5就过了,这是唯一一关没有魔王,但难度有点大。
6-1.这一大关有很多食人花管道。难点1、前面有个砖上有食人草,这里不好跳过去(上面的砖很低),建议小跳后加速,注意躲避毒蘑菇。2、后面的食人草地带,有个刺猬,如果是小玛丽,进去后就会挂,头顶是三个隐藏的金币。
6-2.这关是迷宫。正确的路线:进去后往右走,在有两个悬着的管道处进第二个。出来后,下面的两个管道中间有个隐藏的蘑菇,然后再从进去的管道出来。出来后往右,两块铁砖的左边是个隐藏的花,后面还有一个花和一个加命,然后往回走,到尽头有个很高的管道,它的右边不远处有个隐藏的金币,之后跳进去。出来后往右一直走到悬崖口,进入管道(不要跳进悬崖,虽然有很多金币,但要从头开),出来后就走出迷宫了,后面有的地方会塌陷。最后进入蓝色管道就行了。
6-3.用有子弹的玛丽容易过关,这关有很多会吐火的食人草,跳移动红杠要稳。
6-4.难点1、迷宫,先往下走,再往上走,就不会循环了。2、探照灯地带,有很多探照灯,下面很多断口,注意把握探照灯的规律。
7-1.玛丽可以进水,但要不停地跳,不然会淹死。第一个问号左边是隐藏的星星,右边是4个金币,加速跑隐掉后面的小怪物就可加命。在一个很窄的断口处,只能涉水过,但很容易被鱼碰到。
7-2.在水里进行,如果游的慢会被跟踪鱼包围的,小心,出来后同样左边有4个金币。
7-3.刚开始在很高的地方有三个问号,可怎么也吃不到啊?不要急,往后走,不久就会涨潮,然后再回来就行了。注意一定要在落潮前登上岸。
7-4.过火海时,要把握好喷火球的间隙。然后后面会有很多炮弹,注意躲避。难点是探照灯地带的最后一个,下面有探照灯,还有一个刺猬,关键还是把握探照灯的规律。然后尽管道到水里,然后从上方的管道出来。
8-1.注意链条是会变动的,吃过蘑菇后的下一个平台上有个隐藏的花,但很难吃到(很高,没时间),在后面最好跳到炮台上,然后等链条到右边,上去后在链条往下之前,加速跳到对岸。
8-2.难点1、在吃加命的地方,炮弹很频繁,还有流星锤。2、之后有两个转的很快的探照灯。3、锤子龟地带。之后比较容易,飞龟最好别理它,在高管道左边有个隐藏的金币,可以跳过去。
8-3.一个字:快。因为过一段时间,下面的火海会往上涨。最好不要掉下来,一是浪费时间,二是没有路了。有一个平台,上面有两个炮台和一个刺猬,很容易被碰到。
8-4.在有三个喷流星锤的车的右边有个隐藏的星,还有后面车上有个缺口的地方是个隐藏的花。难点1、之后有个飞龟和一条火炼,不好过。2、食人花和流星锤地带,之后会有锤子龟。3、密不透风的炮弹和火炼(最好是大玛丽,可以变小后过去。)。上面是两个加命和一个蘑菇,一个花(一个一个吃)。最后打魔王,笼里的公主有4次给你扔东西的机会,注意躲避魔王的锤子,虽然很多,但很容易躲得。如果魔王停顿了,赶紧跑到它的后面,因为它要吐火炼,只能在它后面躲。
1.首先玩家除了需要先用闪光灯和吸尘器控制住它们外,还必须要用力甩动类比摇杆使用击打。
2.然后就是让它们与地面亲密接触,好削弱它们的体力。
3.我们一口气可以击退复数的鬼怪,有时候还能打掉鬼怪手上的防具。
4.而喷射则是脱出及跳跃用的能力。使用后可以让吸尘器在原地产生小范围的气流。
5.我们还可以借此击退鬼怪和蝙蝠等敌人外,同时也可以用来闪躲从地面上袭来的攻击。
6.还有就是我们要知道吸盘发射的机能,则可以在原本没有施力点的物件上制造施力点。
以上就是关于超级马里奥3攻略大全,超级玛丽3攻略的知识,后面我们会继续为大家整理关于超级马里奥3攻略的知识,希望能够帮助到大家!
倩女幽魂新区什么时候开,倩女幽魂最新区是哪个
2023-04-21
帝国神话马圈驯马攻略,帝国神话驯马新篇章
2024-03-20
光遇霞谷先祖位置图,游戏光遇霞谷8个先祖位置大全
2023-02-23
仙剑奇仙传人物关系,仙剑奇侠传人物关系图
2023-04-04
牛板筋是牛的哪个部位图解,牛大筋是牛的哪个部位
2023-04-07
山海经游戏哪个好玩,山海经游戏下载
2023-03-10
dota地精工程师出装,DOTA教学炸弹人全面攻略
2024-03-30
吃香第一章过关方法,吃香过关攻略
2023-11-28
心渊梦境前期武器推荐,前期武器推荐,提升你的战力
2023-07-05
暖暖环游世界法国区域,暖暖环游世界法国2攻略
2023-04-21