可以以游戏的方式学习的软件还可以挑战对手

日语汉字大挑战游戏下载|日语汉字大挑战下载v1.2_西西安卓游戏
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
当前位置: →
→ 日语汉字大挑战 v1.2
日语汉字大挑战
扫描下载到手机
安卓游戏推荐
分类:休闲益智游戏大小:61.7M游戏语言:繁体
版本:v1.2更新时间:游戏星级:
官网:暂无游戏厂商:游戏平台:Android
游戏标签:
学习日语的都知道,日语中有许多的汉字,虽然我们都认识,可是却很难知道准确的意思。日语汉字动大挑战为您准备了丰富的日语汉字猜猜看的题目,边玩边学而且萌系可爱,下载日语汉字大挑战掌握更多日文汉字含义。日语汉字大挑战游戏简介一款只要会中文就能学习的日语游戏,游戏中收录各种日语实用、搞笑、学了也没屁用的汉字,要你来猜一猜它们的中文意思是什么!让你边猜边学,就算看不懂日文,只要懂汉字,就能掌握关键大意!日语汉字常有许多字面看似懂意思,但翻译成中文却又天差地远的单字,有时候一个搞错可能还会造成旅游的不便,《日语汉字大挑战 - 新年版 -》便是一款藉由猜谜的方式,学习日语汉字的手游,在问答的游戏方式中了解该汉字的意思。玩家将在游戏中挑战系列作品「吉原花巷」的御三家女孩,从挑战过程中学习各种实用、搞笑、学了也没屁用的汉字单词,绝对是寓教于乐的游戏。日语汉字大挑战怎么玩游戏里玩家有基本的三个素质,御守、破魔矢、樱花金币,御守就是生命值、破魔矢则是攻击力上限,樱花金币则是用来强化前两项素质的道具。分别代表生命值、攻击力上限、钱跟一般的游戏一样,只要将对手的生命值归零即获胜。玩家在回答题目后,答对时会依照题目难易度,获得累积攻击力,并可继续答题累积;答错时则减少部分累积的攻击力,且不可再答,只能选择进行双方攻击。答对时可累积破魔矢的攻击力,对吉原女孩攻击除了在战斗中可以透过解`的方式学习单字外,想再复习的话,游戏中也有字典的功能,当玩家战胜任意关卡时,该次战斗中答对过的题目都会在字典中解锁,想看的时候都能到这里打开`诗的解说。而对于求知j、收集j强的玩家,有些题目老是抽不到的话,也能直接奉献樱花金币来解锁,越难的题目费用越高。
安卓版PC版IOS版
猜词游戏是一种全民游戏。玩法比较简单,就是运用一些方法来让事先不知道答案者猜对词语。经典的有,看图猜...
西西为大家提供的学习类的游戏的下载,是适合于边学边玩的手机游戏,有着很多的小的知识穿插在游戏当中,让...
文字游戏是一项古老的游戏,在中国很早就有字谜,当前世界所用的暗号、密语等系列也属于文字解谜类,这种游...
日语汉字大挑战 v1.2
本类下载排行
同类最新合集旧闻、重复
内容质量差
6月21日,首次更名为OpenInfra Days China的开源业界的顶级盛会,在北京国家会议中心盛大开幕,这一天,正好是中国传统二十四节气之一的夏至,而夏至节气,意味着这是夏天最热的日子,38度的高温如期而至,但就在这样的高温下,1000多名开源技术的爱好者仍然顶着炎炎烈日,不辞辛苦的从全国各地聚集到北京国家会议中心,来参加这场开源业界的盛会,这足见开源在中国IT技术人员中的巨大影响力,也再...
旧闻、重复
内容质量差
关联分析(关联规则学习): 从大规模数据集中寻找物品间的隐含关系被称作 关联分析(associati analysis) 或者 关联规则学习(association rule learning)
解释一下这张图:
在关联规则Aprioir算法中,有两个很重要的概念,分别是频繁项集(frequent item sets),关联规则(associational rules)...
旧闻、重复
内容质量差
6月底全国高考成绩已经公布,又到了几家欢喜几家忧的时候,时光如梭,不禁回想起自己当年填志愿的情景。当时的我并不像众多填志愿考生一样迷茫,因为我早已确认自己要报计算机,因为那个时候是在是太着迷了,兴趣决定了我早早就有了从业选择和职业方向。然而今天并不是回忆渣渣如我的经历,而是要表明一个事实观点:未来 高学历将成为普通从业者的标配,低学历将慢慢滑入社会底层,程序员尤其明显。「 高考和财富选哪个 」从改...
旧闻、重复
内容质量差
也是机缘巧合,让我一个之前工作从未接触过程序员的人,现在成天和程序员打交道,要知道,不懂技术,往往他们想和你幽默的搞笑一下,未必能读懂。都说程序员情商低,不爱说话,比较闷...
旧闻、重复
内容质量差
来自:51CTO技术栈(微信号:blog51cto)综合来源来源:《西二旗程序员写给孩子的一封信》一文作者 hubery_class,转载自13号线微信公众号,其它素材来...
旧闻、重复
内容质量差
很多人自己家里安装了无线宽带,本想着自己一家人可以享用高速无阻的网络,但是现实生活中一些邻居因为某些原因自己没有安装宽带,但是又想使用高速免费的无线网络,所以就想要免费蹭网。如果邻居主动提出付费使用还好,关键是想要免费使用,这种情况下自己又不是那么想给,直接拒绝又担心会影响邻里关系,这就会面临着一种尴尬局面。当面对这种情况,通过一些技术手段是完全可以规避掉这种尴尬局面的,通过技术方式,既可以让邻居...
旧闻、重复
内容质量差
源 | 程序师
文 | Cxihu1.计算机科学之父图灵、香农、冯诺依曼等人图灵:计算机科学之父,人工智能之父。2.计算机科学各领域之父AT&T贝尔实验室里...
旧闻、重复
内容质量差
Java程序员如何能月薪达到三万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可能是码农了,应该已经转管理。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很难达到。还有人提到这个水平不止3w,其实工资是跟面试表现有关的,也跟其他综合水平有关,比如你是985,top10,或者研究生学历,也或者懂点no...
旧闻、重复
内容质量差
点击蓝字关注这个神奇的公众号~作者简介林筱越:华东政法大学 社会学专业 R语言爱好者 往期回顾:使用ggplot2绘制心形定量论文:探究「健康水平、婚姻状况」对幸福感的影...
旧闻、重复
内容质量差
很多人曾经向我咨询:如何度过程序员的中年危机?自己技术遇到了瓶颈,怎么突破?一个成熟程序员的标志是什么?作为一名程序员,学历是不是很重要?众所周知,编程是一个更新换代非常...
旧闻、重复
内容质量差
—文章版权归原作者所有,转载仅供浏览,不用于任何商业用途,如有侵权请联系我们马上处理。精彩回顾
点蓝字即可
? 为什么一定要给孩...
旧闻、重复
内容质量差
今天小米正式官宣,小米平板4就要6月25号登场了,还捎带了一部红米6 Pro!额,为啥会携带红米新机,那你需要去了解一下小米的战术啦!毕竟出货量要第一,肯定得不断地推出千...
旧闻、重复
内容质量差
点击上方“互扯程序”,选择“置顶公众号”优秀文章,第一时间送达!KSKnowledge Sharing知识分享
现在是资源共享的时代,同样也是知识分享的时代,如果你...
旧闻、重复
内容质量差
旧闻、重复
内容质量差
英文:JeffHeaton
译文: 云+社区/白加黑大人https://cloud.tencent.com/developer/article/1035890基本介绍在...
旧闻、重复
内容质量差
以技术人员为例,技术人员典型的发展路径基本上都是下面的这个模式:1)0 ~ 1 年:菜鸟,需要别人手把手来教2)1 ~ 3 年:初级,需要别人带你做3)3 ~ 5 年:高...
旧闻、重复
内容质量差
1  如果你问我,十几年的学习生涯最刻骨铭心的是什么?答案只有一个:高考。  我上的高中是我们那边的重点学校。当年,我在的理科班本科上线率达到98%,也就是说,一个班级只...
旧闻、重复
内容质量差
本文作者Easy,程序员中的网红如果你是一个混迹微博的IT爱好者的话,可能对下面这个头像有印象。没错,这就是Easy!从2003年写下第一行PHP代码开始,编程就成为了他...
旧闻、重复
内容质量差
在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变
旧闻、重复
内容质量差
林鳞 编译整理量子位 出品 | 公众号 QbitAI又有新的开源库来了,英伟达出品,数量×2。正在举行的CVPR 2018大会上,英伟达开源了数据增强库NVIDIA DA...
刚刚阅读在这里,点击刷新
刚刚阅读在这里,点击刷新
如是 · 算法工程师
即便作为兴趣爱好,无人价值技术要如何入门呢?
《程序员》杂志
我们请来 AI 技术一线的专家,请他们从实践的角度来解析 AI 领域各技术岗位的合格工程师都是怎样炼成的。
这个栏目将帮助大家筛选出人工智能和机器学习领域,每年各大顶级会议和研讨班上有意思的论文,解读出论文的核心思想,为精读提供阅读指导。
本期我们梳理了2017年区块链发展现状,从关键技术原理与实际应用出发,带你深入浅出探索区块链技术的方方面面。
16个主题,200余篇文章,180万字——不容错过的前沿技术、工具尽在其中,亲历者领域案例剖析
成都-光谷创业咖啡(长发街55号3-4)游戏策划新人应该学点什么? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="6,449分享邀请回答21136 条评论分享收藏感谢收起weixin.qq.com/r/MTkmPsnEsZTOrY1d92wj (二维码自动识别)21118 条评论分享收藏感谢收起51CTO旗下网站
深度强化学习入门:用TensorFlow构建你的第一个游戏AI
强化学习起初看似非常有挑战性,但其实要入门并不困难。在这篇文章中,我们将创造一个基于 Keras 的简单机器人,使它能玩 Catch 游戏。
作者:Medium来源:| 09:20
去年,DeepMind 的 AlphaGo 以 4-1 的比分打败了世界围棋冠军李世h。超过 2 亿的观众就这样看着强化学习(reinforce learning)走上了世界舞台。几年前,DeepMind 制作了一个可以玩 Atari 游戏的机器人,引发轩然大波。此后这个公司很快被谷歌收购。
很多研究者相信,强化学习是我们创造通用人工智能(Artificial General Intelligence)的最佳手段。这是一个令人兴奋的领域,有着许多未解决的挑战和巨大的潜能。
强化学习起初看似非常有挑战性,但其实要入门并不困难。在这篇文章中,我们将创造一个基于 Keras 的简单机器人,使它能玩 Catch 游戏。
Catch 游戏
原始的 Catch 游戏界面
Catch 是一个非常简单的街机游戏,你可能在孩提时代玩过它。游戏规则如下:水果从屏幕的顶部落下,玩家必须用一个篮子抓住它们;每抓住一个水果,玩家得一分;每漏掉一个水果,玩家会被扣除一分。这里的目标是让电脑自己玩 Catch 游戏。不过,我们不会使用这么漂亮的游戏界面。相反,我们会使用一个简单的游戏版本来简化任务:
简化的 Catch 游戏界面
玩 Catch 游戏时,玩家要决定三种可能的行为。玩家可以将篮子左移、右移或保持不动。这个决定取决于游戏的当前状态。也就是说,取决于果子掉落的位置和篮子的位置。我们的目标是创造这样一个模型:它能在给定游戏屏幕内容的情况下,选择导致得分最高的动作。
这个任务可以被看做一个简单的分类问题。我们可以让游戏专家多次玩这个游戏,并记录他们的行为。然后,可以通过选择类似于游戏专家的「正确」动作来训练模型。
但这实际上并不是人类学习的方式。人类可以在无指导的情况下,自学像 Catch 这样的游戏。这非常有用。想象一下,你如果每次想学习像 Catch 一样简单的东西,就必须雇佣一批专家玩这个游戏上千次!这必然非常昂贵而缓慢。
而在强化学习中,模型不会根据标记的数据训练,而是通过以往的经历。
深度强化学习
强化学习受行为心理学启发。我们并不为模型提供「正确的」行为,而是给予奖励和惩罚。该模型接受关于当前环境状态的信息(例如计算机游戏屏幕)。然后,它将输出一个动作,就像游戏手柄一样。环境将对这个动作做出回应,并提供下一个状态和奖惩行为。
据此,模型学习并寻找最大化奖励的行为。
实际上,有很多方式能够做到这一点。下面,让我们了解一下 Q-Learning。利用 Q-Learning 训练计算机玩 Atari 游戏的时候,Q-Learning 曾引起了轰动。现在,Q-Learning 依然是一个有重大意义的概念。大多数现代的强化学习算法,都是 Q-Learning 的一些改进。
理解 Q-Learning
了解 Q-Learning 的一个好方法,就是将 Catch 游戏和下象棋进行比较。
在这两种游戏中,你都会得到一个状态 S。在象棋中,这代表棋盘上棋子的位置。在 Catch 游戏中,这代表水果和篮子的位置。
然后,玩家要采取一个动作,称作 A。在象棋中,玩家要移动一个棋子。而在 Catch 游戏中,这代表着将篮子向左、向右移动,或是保持在当前位置。据此,会得到一些奖励 R 和一个新状态 S&。
Catch 游戏和象棋的一个共同点在于,奖励并不会立即出现在动作之后。
在 Catch 游戏中,只有在水果掉到篮子里或是撞到地板上时你才会获得奖励。而在象棋中,只有在整盘棋赢了或输了之后,才会获得奖励。这也就是说,奖励是稀疏分布的(sparsely distributed)。大多数时候,R 保持为零。
产生的奖励并不总是前一个动作的结果。也许,很早之前采取的某些动作才是获胜的关键。要弄清楚哪个动作对最终的奖励负责,这通常被称为信度分配问题(credit assignment problem)。
由于奖励的延迟性,优秀的象棋选手并不会仅通过最直接可见的奖励来选择他们的落子方式。相反,他们会考虑预期未来奖励(expected future reward),并据此进行选择。例如,他们不仅要考虑下一步是否能够消灭对手的一个棋子。他们也会考虑那些从长远的角度有益的行为。
在 Q-Learning 中,我们根据最高的预期未来奖励选行动。我们使用 Q 函数进行计算。这个数学函数有两个变量:游戏的当前状态和给定的动作。因此,我们可以将其记为 Q(state,action)。在 S 状态下,我们将估计每个可能的动作 A 所带来的的回报。我们假定在采取行动 A 且进入下一个状态 S& 以后,一切都很完美。
对于给定状态 S 和动作 A,预期未来奖励 Q(S,A)被计算为即时奖励 R 加上其后的预期未来奖励 Q(S&,A&)。我们假设下一个动作 A& 是最优的。
由于未来的不确定性,我们用 & 因子乘以 Q(S&,A&)表示折扣:
Q(S,A) = R + & * max Q(S&,A&)
象棋高手擅长在心里估算未来回报。换句话说,他们的 Q 函数 Q(S,A)非常精确。大多数象棋训练都是围绕着发展更好的 Q 函数进行的。玩家使用棋谱学习,从而了解特定动作如何发生,以及给定的动作有多大可能会导致胜利。但是,机器如何评估一个 Q 函数的好坏呢?这就是神经网络大展身手的地方了。
玩游戏的时候,我们会产生很多「经历」,包括以下几个部分:
初始状态,S
采取的动作,A
获得的奖励,R
下一状态,S&
这些经历就是我们的训练数据。我们可以将估算 Q(S,A)的问题定义为回归问题。为了解决这个问题,我们可以使用神经网络。给定一个由 S 和 A 组成的输入向量,神经网络需要能预测 Q(S,A)的值等于目标:R + & * max Q(S&,A&)。
如果我们能很好地预测不同状态 S 和不同行为 A 的 Q(S,A),我们就能很好地逼近 Q 函数。请注意,我们通过与 Q(S,A)相同的神经网络估算 Q(S&,A&)。
给定一批经历 &S,A,R,S&&,其训练过程如下:
对于每个可能的动作 A&(向左、向右、不动),使用神经网络预测预期未来奖励 Q(S&,A&);
选择 3 个预期未来奖励中的最大值,作为 max Q(S&,A&);
计算 r + & * max Q(S&,A&),这就是神经网络的目标值;
使用损失函数(loss function)训练神经网络。损失函数可以计算预测值离目标值的距离。此处,我们使用 0.5 * (predicted_Q(S,A)&target)&sup2; 作为损失函数。
在游戏过程中,所有的经历都会被存储在回放存储器(replay memory)中。这就像一个存储 &S,A,R,S&& 对的简单缓存。这些经历回放类同样能用于准备训练数据。让我们看看下面的代码:
class&ExperienceReplay(object):&&&&&&&&&&&&&During&gameplay&all&the&experiences&&&s,&a,&r,&s&&&&are&stored&in&a&replay&memory.&&&&&&In&training,&batches&of&randomly&drawn&experiences&are&used&to&generate&the&input&and&target&for&training.&&&&&&&&&&&&&def&__init__(self,&max_memory=100,&discount=.9):&&&&&&&&&&&&&&&&&&&&&Setup&&&&&&&&&max_memory:&the&maximum&number&of&experiences&we&want&to&store&&&&&&&&&memory:&a&list&of&experiences&&&&&&&&&discount:&the&discount&factor&for&future&experience&&&&&&&&&&&&&&&&&&In&the&memory&the&information&whether&the&game&ended&at&the&state&is&stored&seperately&in&a&nested&array&&&&&&&&&[...&&&&&&&&&[experience,&game_over]&&&&&&&&&[experience,&game_over]&&&&&&&&&...]&&&&&&&&&&&&&&&&&&&&&self.max_memory&=&max_memory&&&&&&&&&self.memory&=&list()&&&&&&&&&self.discount&=&discount&&&&&&def&remember(self,&states,&game_over):&&&&&&&&&#Save&a&state&to&memory&&&&&&&&&self.memory.append([states,&game_over])&&&&&&&&&#We&don't&want&to&store&infinite&memories,&so&if&we&have&too&many,&we&just&delete&the&oldest&one&&&&&&&&&if&len(self.memory)&&&self.max_memory:&&&&&&&&&&&&&del&self.memory[0]&&&&&&def&get_batch(self,&model,&batch_size=10):&&&&&&&&&&&&&&&&&&#How&many&experiences&do&we&have?&&&&&&&&&len_memory&=&len(self.memory)&&&&&&&&&&&&&&&&&&#Calculate&the&number&of&actions&that&can&possibly&be&taken&in&the&game&&&&&&&&&num_actions&=&model.output_shape[-1]&&&&&&&&&&&&&&&&&&#Dimensions&of&the&game&field&&&&&&&&&env_dim&=&self.memory[0][0][0].shape[1]&&&&&&&&&&&&&&&&&&#We&want&to&return&an&input&and&target&vector&with&inputs&from&an&observed&state...&&&&&&&&&inputs&=&np.zeros((min(len_memory,&batch_size),&env_dim))&&&&&&&&&&&&&&&&&&#...and&the&target&r&+&gamma&*&max&Q(s&,a&)&&&&&&&&&#Note&that&our&target&is&a&matrix,&with&possible&fields&not&only&for&the&action&taken&but&also&&&&&&&&&#for&the&other&possible&actions.&The&actions&not&take&the&same&value&as&the&prediction&to&not&affect&them&&&&&&&&&targets&=&np.zeros((inputs.shape[0],&num_actions))&&&&&&&&&&&&&&&&&&#We&draw&states&to&learn&from&randomly&&&&&&&&&for&i,&idx&in&enumerate(np.random.randint(0,&len_memory,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&size=inputs.shape[0])):&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Here&we&load&one&transition&&s,&a,&r,&s&&&from&memory&&&&&&&&&&&&&state_t:&initial&state&s&&&&&&&&&&&&&action_t:&action&taken&a&&&&&&&&&&&&&reward_t:&reward&earned&r&&&&&&&&&&&&&state_tp1:&the&state&that&followed&s&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&state_t,&action_t,&reward_t,&state_tp1&=&self.memory[idx][0]&&&&&&&&&&&&&&&&&&&&&&&&&&#We&also&need&to&know&whether&the&game&ended&at&this&state&&&&&&&&&&&&&game_over&=&self.memory[idx][1]&&&&&&&&&&&&&&#add&the&state&s&to&the&input&&&&&&&&&&&&&inputs[i:i+1]&=&state_t&&&&&&&&&&&&&&&&&&&&&&&&&&#&First&we&fill&the&target&values&with&the&predictions&of&the&model.&&&&&&&&&&&&&#&They&will&not&be&affected&by&training&(since&the&training&loss&for&them&is&0)&&&&&&&&&&&&&targets[i]&=&model.predict(state_t)[0]&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&If&the&game&ended,&the&expected&reward&Q(s,a)&should&be&the&final&reward&r.&&&&&&&&&&&&&Otherwise&the&target&value&is&r&+&gamma&*&max&Q(s&,a&)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#&&Here&Q_sa&is&max_a'Q(s',&a')&&&&&&&&&&&&&Q_sa&=&np.max(model.predict(state_tp1)[0])&&&&&&&&&&&&&&&&&&&&&&&&&&#if&the&game&ended,&the&reward&is&the&final&reward&&&&&&&&&&&&&if&game_over:&&#&if&game_over&is&True&&&&&&&&&&&&&&&&&targets[i,&action_t]&=&reward_t&&&&&&&&&&&&&else:&&&&&&&&&&&&&&&&&#&r&+&gamma&*&max&Q(s&,a&)&&&&&&&&&&&&&&&&&targets[i,&action_t]&=&reward_t&+&self.discount&*&Q_sa&&&&&&&&&return&inputs,&targets&
现在让我们定义这个利用 Q-Learning 学习 Catch 游戏的模型。我们使用 Keras 作为 Tensorflow 的前端。我们的基准模型是一个简单的三层密集网络。这个模型在简单版的 Catch 游戏当中表现很好。你可以在 GitHub 中找到它的完整实现过程。
你也可以尝试更加复杂的模型,测试其能否获得更好的性能。
num_actions&=&3&&#&[move_left,&stay,&move_right]&hidden_size&=&100&#&Size&of&the&hidden&layers&grid_size&=&10&#&Size&of&the&playing&field&&def&baseline_model(grid_size,num_actions,hidden_size):&&&&&#seting&up&the&model&with&keras&&&&&model&=&Sequential()&&&&&model.add(Dense(hidden_size,&input_shape=(grid_size**2,),&activation='relu'))&&&&&model.add(Dense(hidden_size,&activation='relu'))&&&&&model.add(Dense(num_actions))&&&&&model.compile(sgd(lr=.1),&&mse&)&&&&&return&model&
Q-Learning 的最后一种成分是探索。日常生活的经验告诉我们,有时候你得做点奇怪的事情或是随机的手段,才能发现是否有比日常动作更好的东西。
Q-Learning 也是如此。总是做最好的选择,意味着你可能会错过一些从未探索的道路。为了避免这种情况,学习者有时会添加一个随机项,而未必总是用最好的。我们可以将定义训练方法如下:
def&train(model,epochs):&&&&&#&Train&&&&&#Reseting&the&win&counter&&&&&win_cnt&=&0&&&&&#&We&want&to&keep&track&of&the&progress&of&the&AI&over&time,&so&we&save&its&win&count&history&&&&&win_hist&=&[]&&&&&#Epochs&is&the&number&of&games&we&play&&&&&for&e&in&range(epochs):&&&&&&&&&loss&=&0.&&&&&&&&&#Resetting&the&game&&&&&&&&&env.reset()&&&&&&&&&game_over&=&False&&&&&&&&&#&get&initial&input&&&&&&&&&input_t&=&env.observe()&&&&&&&&&&&&&&&&&&while&not&game_over:&&&&&&&&&&&&&#The&learner&is&acting&on&the&last&observed&game&screen&&&&&&&&&&&&&#input_t&is&a&vector&containing&representing&the&game&screen&&&&&&&&&&&&&input_tm1&=&input_t&&&&&&&&&&&&&&&&&&&&&&&&&&#Take&a&random&action&with&probability&epsilon&&&&&&&&&&&&&if&np.random.rand()&&=&epsilon:&&&&&&&&&&&&&&&&&#Eat&something&random&from&the&menu&&&&&&&&&&&&&&&&&action&=&np.random.randint(0,&num_actions,&size=1)&&&&&&&&&&&&&else:&&&&&&&&&&&&&&&&&#Choose&yourself&&&&&&&&&&&&&&&&&#q&contains&the&expected&rewards&for&the&actions&&&&&&&&&&&&&&&&&q&=&model.predict(input_tm1)&&&&&&&&&&&&&&&&&#We&pick&the&action&with&the&highest&expected&reward&&&&&&&&&&&&&&&&&action&=&np.argmax(q[0])&&&&&&&&&&&&&&#&apply&action,&get&rewards&and&new&state&&&&&&&&&&&&&input_t,&reward,&game_over&=&env.act(action)&&&&&&&&&&&&&#If&we&managed&to&catch&the&fruit&we&add&1&to&our&win&counter&&&&&&&&&&&&&if&reward&==&1:&&&&&&&&&&&&&&&&&win_cnt&+=&1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#Uncomment&this&to&render&the&game&here&&&&&&&&&&&&&#display_screen(action,3000,inputs[0])&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&The&experiences&&&s,&a,&r,&s&&&&we&make&during&gameplay&are&our&training&data.&&&&&&&&&&&&&Here&we&first&save&the&last&experience,&and&then&load&a&batch&of&experiences&to&train&our&model&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#&store&experience&&&&&&&&&&&&&exp_replay.remember([input_tm1,&action,&reward,&input_t],&game_over)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#&Load&batch&of&experiences&&&&&&&&&&&&&inputs,&targets&=&exp_replay.get_batch(model,&batch_size=batch_size)&&&&&&&&&&&&&&&&#&train&model&on&experiences&&&&&&&&&&&&&batch_loss&=&model.train_on_batch(inputs,&targets)&&&&&&&&&&&&&&&&&&&&&&&&&&#sum&up&loss&over&all&batches&in&an&epoch&&&&&&&&&&&&&loss&+=&batch_loss&&&&&&&&&win_hist.append(win_cnt)&&&&&return&win_hist&
我将这个游戏机器人训练了 5000 个 epoch,结果表现得很不错!
Catch 机器人的动作
正如你在上述动图中看到的那样,机器人可以抓住从天空中掉落的苹果。为了将这个模型学习的过程可视化,我绘制了每一个 epoch 的胜利移动平均线,结果如下:
接下来做什么?现在,你已经对强化学习有了初步的直觉了解。我建议仔细阅读该教程的完整代码。你也可以试验看看。【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创原创专题原创热点
24H热文一周话题本月最赞
讲师:107285人学习过
讲师:35696人学习过
讲师:44091人学习过
CTO专属活动
精选博文论坛热帖下载排行
本书分为4个部分共24章,以插件开发为中心,围绕插件开发主要介绍SWT/JFace的应用、插件扩展点的实现,以及GEF、EMF和RCP的相关知识。本书...
订阅51CTO邮刊

我要回帖

 

随机推荐