0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

观察AI如何找到出口 强化游戏体验

ouxn_HW_Digital 来源:华为开发者社区 作者:华为开发者社区 2021-08-24 09:52 次阅读

作为一名快乐的肥宅,玩游戏是居家必备,无论是王者荣耀、吃鸡、原神这些大热游戏,还是跳一跳、合成大西瓜、2048、这些风靡一时得小游戏,咱都有涉及。但是为了成为一个“头号玩家”,我总是疯狂的去个各大社区、网站寻找各种攻略,跟着攻略成长,我时常在想,什么时候俺才能成为一代攻略大神啊,让大家学习我的技术,岂不是很刺激!

灵光一闪,毕竟我是个有点小技术的肥宅,曾经也痴迷过deepmind,跑过AlphaGo,这不得训练一个AI玩一玩。

强化学习训练2048游戏,

观察AI如何找到出口?

既然要练手,那就先从2048这种简单,不考验操作,纯策略的游戏入手吧。在网上搜罗了一番,果然让我找到了开源的2048游戏环境,GitHub地址:

https://github.com/rgal/gym-2048。

下一步就是把这个算法和强化学习结合了。

算法部分很简单,目前我才用的是最传统的DQN,10分钟就可以达到一个还可以的模型效果。如果小伙伴们有想法,可以试试RainBow,PPO,A2C,SAC这类算法,相信会获得更佳的效果。

我开发这个模型,用的是来自华为云的ModelArts(它是一个在线、开箱即用的AI平台,还有免费的GPU算力,每天不限次数使用,不要太爽!),所以代码是在ipynb中跑的。

整体步骤大概可以分为3步:

1.创建游戏环境

2.创建DQN算法

def learn(self, buffer): # 当replaybuffer中存储的数据大于batchsize时,从中随机采样一个batch的数据学习 if buffer.size 》=self.args.batch_size: # 更新target_model的参数 if self.learn_step_counter %args.target_update_freq == 0: self.target_model.load_state_dict(self.behaviour_model.state_dict()) self.learn_step_counter += 1 # 从replaybuffer中随机采样一个五元组(当前观测值,动作,下一个观测值,是否一局结束,奖励值) s1, a, s2, done, r =buffer.get_sample(self.args.batch_size) s1 =torch.FloatTensor(s1).to(device) s2 = torch.FloatTensor(s2).to(device) r = torch.FloatTensor(r).to(device) a = torch.LongTensor(a).to(device) if args.use_nature_dqn: q =self.target_model(s2).detach() else: q = self.behaviour_model(s2) # 每个动作的q值=r+gamma*(1-0或1)*q_max target_q = r +torch.FloatTensor(args.gamma * (1 - done)).to(device) * q.max(1)[0] target_q =target_q.view(args.batch_size, 1) eval_q = self.behaviour_model(s1).gather(1,torch.reshape(a, shape=(a.size()[0], -1))) # 计算损失函数 loss = self.criterion(eval_q,target_q) self.optimizer.zero_grad() loss.backward() self.optimizer.step() def get_action(self, state, explore=True): # 判断是否探索,如果探索,则采用贪婪探索策略决定行为 if explore: if np.random.uniform() 》=args.epsilon: action = randint(0,self.action_dim - 1) else: # Choose the best action accordingto the network. q =self.behaviour_model(torch.FloatTensor(state).to(device)) m, index = torch.max(q, 1) action =index.data.cpu().numpy()[0] else: q = self.behaviour_model(torch.FloatTensor(state).to(device)) m, index = torch.max(q, 1) action =index.data.cpu().numpy()[0] return action classReplayBuffer: def __init__(self, buffer_size, obs_space): self.s1 = np.zeros(obs_space, dtype=np.float32) self.s2 = np.zeros(obs_space,dtype=np.float32) self.a = np.zeros(buffer_size,dtype=np.int32) self.r = np.zeros(buffer_size,dtype=np.float32) self.done = np.zeros(buffer_size,dtype=np.float32) # replaybuffer大小 self.buffer_size = buffer_size self.size = 0 self.pos = 0 # 不断将数据存储入buffer def add_transition(self, s1, action, s2,done, reward): self.s1[self.pos] = s1 self.a[self.pos] = action if not done: self.s2[self.pos] = s2 self.done[self.pos] = done self.r[self.pos] = reward self.pos = (self.pos + 1) %self.buffer_size self.size = min(self.size + 1,self.buffer_size) # 随机采样一个batchsize def get_sample(self, sample_size): i = sample(range(0, self.size), sample_size) return self.s1[i], self.a[i],self.s2[i], self.done[i], self.r[i]

3.创建网络模型

此处我用的就是一个非常简单的三层卷积网络

classNet(nn.Module): #obs是状态空间输入,available_actions_count为动作输出维度 def __init__(self, obs,available_actions_count): super(Net, self).__init__() self.conv1 = nn.Conv2d(obs, 128,kernel_size=2, stride=1) self.conv2 = nn.Conv2d(128, 64,kernel_size=2, stride=1) self.conv3 = nn.Conv2d(64, 16,kernel_size=2, stride=1) self.fc1 = nn.Linear(16,available_actions_count) self.relu = nn.ReLU(inplace=True) def forward(self, x): x = x.permute(0, 3, 1, 2) x = self.relu(self.conv1(x)) x = self.relu(self.conv2(x)) x = self.relu(self.conv3(x)) x = self.fc1(x.view(x.shape[0], -1)) return x

完成以上三步,就可以愉快的开始训练啦:

print(‘

training.。。’)begin_t= time.time()max_reward= 0fori_episode in range(args.epochs): # 每局开始,重置环境 s = env.reset() # 累计奖励值 ep_r = 0 while True: # 计算动作 a = dqn.get_action(np.expand_dims(s,axis=0)) # 执行动作 s_, r, done, info = env.step(a) # 存储信息 memory.add_transition(s, a, s_, done,r) ep_r += r # 学习优化过程 dqn.learn(memory) if done: print(‘Ep: ’, i_episode, ‘| Ep_r: ’, round(ep_r, 2)) if ep_r 》 max_reward: max_reward = ep_r print(“current_max_reward{}”.format(max_reward)) # 保存模型 torch.save(dqn.behaviour_model,“2048.pt”) break s = s_print(“finish!time cost is {}s”.format(time.time() - begin_t))

我只训练了10分钟,在这个不能错步的严格环境下,推理时可以达到256分,如果采用更先进算法,更长的训练时间,2048不是梦。

详细代码获取方式:

通过此链接可直接在线运行,或者下载

https://marketplace.huaweicloud.com/markets/aihub/notebook/detail/?id=3a11d09b-85f5-4ae4-b4a7-9b19be2b444d

这个技术来源是我在去年华为云AI全栈成长计划中接触到的,据说今年华为云又开始了新一轮【AI实战营】,6大分类实战营Python、ModelArts、MindSpore AI框架、深度、强化、机器学习,助我们成为“AI王者”!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    31054

    浏览量

    269405
  • 强化学习
    +关注

    关注

    4

    文章

    267

    浏览量

    11266
  • 华为云
    +关注

    关注

    3

    文章

    2588

    浏览量

    17473

原文标题:游戏“外挂”?- AI生成游戏最强攻略

文章出处:【微信号:HW-DigitalHome,微信公众号:华为数字家庭】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    巨人网络发布“千影”大模型,加速“游戏+AI”布局

    近日,巨人网络在2024年度中国游戏产业年会上,正式推出了名为“千影 QianYing”的有声游戏生成大模型。这一创新举措标志着巨人网络在“游戏+AI”赛道上的又一重要布局。 “千影
    的头像 发表于 12-16 09:45 286次阅读

    如何使用 PyTorch 进行强化学习

    的计算图和自动微分功能,非常适合实现复杂的强化学习算法。 1. 环境(Environment) 在强化学习中,环境是一个抽象的概念,它定义了智能体(agent)可以执行的动作(actions)、观察
    的头像 发表于 11-05 17:34 325次阅读

    谷歌发布革命性AI游戏引擎GameNGen

    谷歌近期震撼推出全球首款完全由人工智能驱动的游戏引擎——GameNGen,这一创新技术标志着游戏开发领域的新纪元。GameNGen凭借其强大的计算能力,能够在单个TPU上实现每秒20帧的实时游戏生成,每一帧画面均源自精密的扩散模
    的头像 发表于 08-29 18:07 895次阅读

    微软携手Lumen Technologies扩容并强化AI网络能力合作

    微软在7月25日宣布了一项重大举措,旨在通过深化其Copilot等生成式AI服务在企业、组织、教育及普通消费者领域的布局,来满足日益增长的对AI算力及网络能力的需求。为实现这一目标,微软携手网络系统领域的领先企业Lumen Technologies,共同开启了一段旨在扩容
    的头像 发表于 07-25 14:39 626次阅读

    红魔9S Pro系列AI游戏手机正式发布

    在万众瞩目中,红魔电竞宇宙今日迎来了激动人心的时刻——全新红魔9S Pro+与红魔9S Pro两款AI游戏手机正式揭开神秘面纱,以颠覆性的姿态引领游戏手机市场迈入“游戏
    的头像 发表于 07-04 15:15 760次阅读

    MediaTek天玑开发者大会2024揭秘:AI Coaching游戏教学技术革新游戏体验

    ,共同展示了基于天玑平台的端侧 AI 游戏教学技术——AI Coaching。这一创新技术不仅为玩家带来了全新的游戏体验,更是对游戏教学领域
    的头像 发表于 06-27 10:59 602次阅读

    育碧将运用AI技术打造活力四溢的游戏

    Guillemot 称,AI 将被广泛应用于公司业务的“自动化”过程。目前,育碧已组建两支科研团队研究生成式 AI —— 一队负责市场营销、销售、IT、法律等事项;另一队专注提升游戏品质及赋予
    的头像 发表于 05-20 17:00 535次阅读

    阿里云通义大模型助力“小爱同学”强化多模态AI生成能力

    小米的人工智能助手“小爱同学”近期与阿里云通义大模型达成战略合作,共同提升其多模态AI生成能力,特别是在图片生成与理解方面。这次合作不仅将强化“小爱同学”的功能,还将在小米的多个产品线,包括小米汽车和手机等设备上得到实际应用。
    的头像 发表于 05-13 09:19 846次阅读

    NVIDIA数字人技术加速部署生成式AI驱动的游戏角色

    NVIDIA 在 GDC 2024 大会上宣布,Inworld AI 等领先的 AI 应用程序开发者,正在使用 NVIDIA 数字人技术加速部署生成式 AI 驱动的游戏角色。
    的头像 发表于 04-09 10:08 686次阅读
    NVIDIA数字人技术加速部署生成式<b class='flag-5'>AI</b>驱动的<b class='flag-5'>游戏</b>角色

    美国BIS更新出口管制新规,强化半导体出口监管

    首先,对EUV掩膜基板追加管制。特别是专供EUV光刻制程之用的掩膜基板现已正式纳入出口控制范围,相关出口皆需遵循严格的许可要求。
    的头像 发表于 04-08 09:25 685次阅读

    美国商务部更新半导体出口管制细则

    实际上,浙商电子的研究报告指出,美方此次出口管制的核心转变在于加强了对EUV掩模基板的管控,明晰了集成电路的性能关键参数定义及计算方法,强化了对集成电路整机产品的限制,对含特殊性能成分的芯片的出口采用了逐案审查政策。
    的头像 发表于 04-03 15:41 774次阅读

    中兴通讯将推努比亚多款AI手机新品,强化AI布局

    展望未来,中兴通讯将利用自研的中兴星云os系统,打通各类业务接入AI平台的通道,全面内化大模型、大数据与3D技术,实现图片处理、游戏流畅度以及安全防护等全流程赋能。
    的头像 发表于 03-29 09:25 523次阅读

    谷歌模型合成工具在哪找到

    谷歌模型合成工具可以在谷歌的官方网站或相关的开发者平台上找到。具体地,您可以尝试访问谷歌的AI平台或开发者社区,以获取有关模型合成工具的最新信息和资源。
    的头像 发表于 03-01 18:13 1596次阅读

    新火种AI|游戏黑马《幻兽帕鲁》爆火,AI+游戏将有无限可能

      作者:一号 编辑:美美 在游戏行业中,AI正在扮演越来越重要的角色。 2024年第一个月,一匹游戏黑马就从万千游戏中杀出重围,上线仅4天,就卖出了600万份,最高同时在线201万人
    的头像 发表于 02-19 10:05 562次阅读
    新火种<b class='flag-5'>AI</b>|<b class='flag-5'>游戏</b>黑马《幻兽帕鲁》爆火,<b class='flag-5'>AI</b>+<b class='flag-5'>游戏</b>将有无限可能

    惠普推出新一代AI游戏本,并计划推出首个AI PC本地AI解决方案

    近日,惠普发布了新一代AI游戏笔记本电脑,这些新款笔记本在性能和AI功能方面都有显著提升。其中,14英寸暗影精灵10 SLIM被公认为惠普目前最轻的游戏笔记本,它搭载了酷睿Ultra
    的头像 发表于 01-22 15:58 926次阅读