当小恐龙出现的时候,你摁一下空格键。那么小恐龙就会向前走,不得不说这个飞鸟是真的难,有些还要按向下键来蹲下躲避。这里有个小技巧,就是在起跳的时候可以按↓键来快速下降,有时候躲避一些障碍物就可以用到。
3.谷歌浏览器Chrome有个人尽皆知的彩蛋,那就是著名的小恐龙游戏。当你打开网页却无法连接到互联网的时候,小恐龙就会出现了。
用谷歌浏览器打开一个比较长的网页,在任意的地方按住鼠标中键,朝下轻微位移鼠标,页面就会自动滚动,非常方便。也可以向上童年富甲三国单机游戏,那么页面就会向上走。
其实嘛,让AI搞定小恐龙这件事,本质上跟让AI搞定Flappy Bird是一样的。如果你想深入研究一下这件事,这里再推荐两篇。
网页打不开小恐龙游戏界面
他认为,模型学得还不够快,得分还不够高,要怪这样几个因素:一是因为用CPU来学习,它总是掉帧;二是供这个AI来玩耍的图像实在是太小了,只有40×20,在当前的模型架构下就可能导致了特征的损失,还拖慢了学习速度。
现在,这个模型的最好成绩是265分。从下面的得分和损失变化图里,能看出模型的loss在后100万帧逐渐稳定,比较低,但是会随时间波动。
terminal = minibatch[i][4] #wheather the agent died or survided due the action
#only train if done observing; sample a minibatch to train on
* observe => flag to indicate wherther the model is to be trained(weight updates), else just play
model.add(Conv2D(64, (3, 3), strides=(1, 1), padding='same'))
model.add(Conv2D(64, (4, 4), strides=(2, 2), padding='same'))
这个模型的输出,形状和可能的操作数量一样。模型会预测各种操作的Q值,也叫discounted future reward,然后我们选数值最高的那个。
小哥选择把3个卷积层压平,连接到一个512神经元的全连接层(dense layer)上。池化层直接被砍掉了,这个东西在图像分类问题上很有用,但是玩Dino的时候神经网络只需要知道障碍物的位置,池化层就起不了什么作用了。
然后,堆叠4张图创建单个输入,也就是:40×20×4。请注意,这里小恐龙也裁减掉了,因为整个学习过程,只需要知道障碍物和与边缘的距离即可。
image = cv2.Canny(image, threshold1 = 100, threshold2 = 200) #apply the canny edge detection
#game is already in grey scale canvas, canny to get only edges and reduce unwanted objects(clouds)
问题是,这个小哥只有一个i7的CPU可用,所以他的电脑没办法在处理这个尺寸输入的同时玩游戏。所以,还得继续用OpenCV的库调正截图大小、裁剪等。最终输入图像大小为40×20像素,单通道,并用Canny突出显示边缘。
原始截图的分辨率为1200×300,包含三个通道。作者计划使用4个连续的屏幕截图作为模型的单一输入,也就是1200×300×3×4。
原始的游戏相对复杂,比如游戏速度会逐渐加快,障碍物会改变,还会出现云朵、星星、地面纹理等。一次同时学习这么多东西会消耗大量时间,甚至在训练过程中引入不必要的噪音。
time.sleep(.5) # no action can be performed for the first time when game starts
* Game class: Selenium interfacing between the python and browser
用PIL和OpenCV能够更好地完成截屏和图像预处理,可以达到5fps的帧率。你可能觉得还是慢,但已经足够对付这个游戏了。
在面临这种问题的情况下,可以引入贴现因子(Discount Factor)γ来决定模型做出动作时看得多远。γ间接解决了赞誉分布问题,在这个游戏中,当γ=0.99时,模型认识到在无障碍时随便跳会导致真的遇到障碍时自己正在半空中,无法继续跳跃。
在这种情况下,“砸到仙人掌上”这个负反馈实际上是此前上一次做出跳跃决定的结果,而不是刚刚恐龙在半空中时做出的跳跃结果所导致的。
赞誉分布(Credit Assignment)问题可能会让模型陷入混乱——目前获得的奖励究竟来自于过去的哪个行为呢?在恐龙跑酷游戏中,小恐龙跳到半空中后无法再次跳跃,但模型可能会在恐龙处于半空中时发出跳跃指令,这种情况就让恐龙非常容易砸到仙人掌上。
但之后,Munde小哥发现,他训练了一个倔强的模型——模型坚定的认为,跳,一定比不跳好。所以,为了让模型在训练时能在跳与不跳之间多尝试一下,他引入了一个函数ɛ来决定行动的随机性,然后再逐渐减小它的值来削减随机性,最终让模型去选择最有可能获得奖励的行动。
缺乏已标记的数据让强化学习非常不稳定。为了获得适用于这个游戏的数据,Munde小哥决定,先让小恐龙自己瞎跳几千次,把每个动作的反馈记下来,然后从数据中随机挑选一些来训练模型。
而在这个游戏中,对我们的AI小恐龙来说,强化学习需要让他在无监督的情况下,先认识到做出不同动作的结果,并且以获得高分为最高激励。
对动物来说,强化学习的能力是与生俱来的。拿儿童学步来举例,如果小朋友努力的迈出第一步,就会获得父母的鼓励——可能是鼓掌叫好,也可能是一块糖;但如果小朋友坚决不肯学习走路,那父母就不会给它糖吃了。强化学习就是依照这类激励行为而设置的。
美中不足,上面这个项目也没有配上太详尽的解读。然而好消息是,最近有个国外的小哥Ravi Munde,列了一份非常详尽的教程。
不过,上传这段视频的作者,并没有详细公布他用的方法,当然也没有给出一个开源的地址。不过不要紧,也有别人公开分享了更多细节。
2013年Chrome开始用这个小恐龙的图像代替令人烦恼的404页面。2014年秋天,这只恐龙被正式改造成一个横版小游戏。以彩蛋的方式隐藏在新版Chrome浏览器里。
作为一个Google Chrome浏览器的用户,当你看到上面那个页面时,不要沮丧。换个角度一想,墙内还能有更多的Play时间哦~
网页游戏突然打不开怎么解决?
现在很多的人在休闲的时候都会玩玩网页游戏,因此很多玩家都会偶尔碰到网页游戏打不开或者无法登陆的情况,照成网页游戏打不开的原因有很多,网页游戏打不开大多数是浏览器出了问题或都是一些组件没有安装,下面给大家讲解网页游戏打不开了一般通过以下几种解决方法就可以了。
网页游戏玩不了?原因和解决方法都在这里
网游相信大家都玩过吧,我们在网站会经常看到各种网页游戏的小广告,且现在给网页游戏代言的明星也很多。玩网页游戏无需下载安装客户端,直接打开网页就可以玩,还不占用内存,深受众多用户的喜爱。遇到网页游戏玩不了的情况该如何解决呢?下面让小编给大家详细讲解下网页游戏玩不了的原因和解决方法,一起看下吧!
下拉刷新:试用于列表、卡片集合等界面内容按照时间降序排列的场景。加入公司 logo 可以把自己的品牌形象从细节上传达给用户。
结论刷新是一个会和用户互动,与用户具备反馈机制的功能,用户在执行刷新操作时,具备明确的心理期望“我想看新的内容”,或者“我想看看其他的”。
常见的详情页包括电商的商品详情页,订单详情页,资讯的文章详情页,社交的用户详情页,音乐产品的歌单详情页,活动产品的活动详情页等等。
也就是将最新的详情内容“更新”给用户。并不是所有的详情页都需要这个功能,同样的,也只有在特定的环境下,详情页的刷新才会具备价值。
持续更新能力是指平均间隔一定的时间能够产生1条或多条内容,出于产品的考虑,这个间隔时间需要小于30分钟,也就是一天的内容产量至少48条以上,才具备做刷新的能力。
将刷新置于内容流,是为了持续的为用户提供最新内容,前提是系统具备内容的持续更新能力,如果我们的内容并不具备该能力,那就不太提倡刷新功能了。
它试用于模块单一、内容会向下无限加载,且底部 tab 不会消失的场景中。用户在浏览页面的过程中如果对所有的内容都感到枯燥了,就可以用这个功能来进行刷新。
我对这种刷新方式的理解是:开眼的产品目标是为用户提供有料、有趣、好玩的高品质视频,用户群里比较年轻,充满个性,这种新奇活泼的刷新方式更贴合品牌形象,更受年轻用户的喜欢。
它的使用场景和上一种样式“模块按钮刷新”类似,不同的地方在于它是弹出来的按钮,而上种方式是固定的按钮,它“忽然弹出”的这个动效让人很容易就注意到它。
优点:用户如果对某个模块中显示的内容不够感兴趣却又不想点击进去看全部内容,那么就可以方便地单独对这个模块进行刷新,也省去了返回顶部刷新的步骤,缩短了操作路径,节省了用户的操作成本。
它试用于同一个页面有较多模块、每个模块内容都不相同的场景中。每次刷新完后,对应的那个模块会全部更换新的内容。通常会用“换一换”、“换一批”等类似的字眼。(腾讯视频)
这种样式会在用户浏览完页面中最新内容的时候,提示用户进行刷新,常出现在“刚看完的内容”与“上一次看完的内容”之间。在内容刷新有数量限制要求的时候,我们就可以使用这种样式。
很多公司把品牌形象和 logo 植入到下拉刷新的操作中,替换了常规的刷新按钮,这样可以把自己的品牌形象从细节上传达给用户。
以知乎、哔哩哔哩、虾米音乐为例:这三个APP 分别以文字、视频、音乐为主要内容,分别按照列表、栅格列表、卡片集合三种方式排布网页游戏热血三国辅助,它们都使用了下拉刷新。
它试用于列表、卡片集合等界面内容按照时间降序排列的场景。每一次刷新后,系统都会把新的内容放到页面显眼的位置。它已经成为了 APP 中必备的刷新方法,是非常重要的一种样式。
有多少人知道下拉刷新这个操作已经是tiwtter率先提出来了,而起在年5月份成功申请了该项专利,虽然对外声明是防御性专利,但它的价值已经必然被所有开发者玩的很high了(不知道tiwtter什么时候开始收费)。
在网速差或者请求不到服务器的时候会做一些体验好的交互表现,例如“哎呦喂,这个页面找不到了”,谷歌在这方面其实也做了一些事情。
举例:在域环境的文件共享创建了一个文件夹必须更新后才能显示,很多xx管家其实就删除注册表让系统变得更快就是这个原理。从现在技术层面理解可以解决这个问题,而因这个windows历史遗留问题把这个坑位强加成为用户的一个习惯。
系统桌面右键刷新几乎每天都有人在使用,而这个功能的存在其实windows系统的让用户来填的一个坑。而且时间久了,成为用户习惯了就没人在意。
编辑导语:刷新是大家常用的操作之一,主要作用是刷新页面中的缓存,从服务器获取新的内容。在浏览 APP 的时候,不同场景中使用的刷新样式是完全不同的。本文作者留心了这些细节,和我们分享了5种随处可见的、每一个内容性产品都具备的“刷新”功能的不同样式。
软件精选 | 没有网络也能玩!这份app清单可以让你不无聊
专题: 单机三国的游戏 求单机三国游戏 三国游戏单机类上一篇制造武器的网页游戏叫什么
下一篇网页小花仙游戏花仙魔法使