版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010215609/article/details/62247479
你知道DeepMind吗?
很可能知道,毕竟大家都已经熟知,这家公司这几年发生的两件大事:
1. 被谷歌收购
2. 花了很多很多的资源,教计算机下围棋,并打败目前所有已知的围棋顶级选手
那么你也很可能知道DeepMind在13年发了一篇paper,叫做”Playing Atari with Deep Reinforcement Learning”。这篇paper讲的是deepmind是怎么教计算机玩atari游戏的。
但你有可能不知道的是,为什么deepmind要教计算机玩游戏?
好吧,你可能内心觉得这家公司大概是学术味道很浓的一个科研团队发几篇学术味道很浓的paper,然后拿很多投资,再招很多学术味道很浓的科学家,发更多学术味道很浓的paper。
无独有偶,有另外一个由顶尖机器学习科学家组成的拿了10亿美元投资的叫做OpenAI的团队,也花了很多精力在教计算机玩游戏,他们甚至搞了一个叫做gym和另一个叫做universe的开源平台,可以让每个人都用这个平台教计算机玩游戏,gym用来玩atari,flappy bird,贪食蛇这种小游戏,universe则用来玩GTA5,赛车这种大型3D游戏。
于是,他们到底想要干什么,培养计算机成电竞高手,然后做直播?还是通过在每款游戏中打败人类,收获无与伦比的成就感?
为了更好地回答”这几家公司到底想干嘛”这个问题,我们自己尝试着使用gym来教计算机玩flappy bird和贪食蛇这两款游戏,所使用的机器学习方法正是来自deepmind的深度增强学习算法,实现框架则是tensorflow。
以下是我们的计算机在玩这两个游戏初识时,和结束时的演示结果:
尽管我们的计算机没有变成超级无敌的玩家,但是可以很明显地看到,计算机在经过一定时间的自我训练后,都可以很不错的玩起flappy bird和贪食蛇。
计算机学习flappy bird花了一天,贪食蛇花了9个小时,GPU采用的是英伟达的GTX1070。
在看到神奇的深度增强学习确实有效果之后,我们开始了思考,当计算机把玩游戏的技能树点满之后,可以如何让这个世界变得更美好?
首先深度增强学习有两点非常重要的特性:
1. 任何可以抽象成环境,状态,行为,奖励的问题,都可以用这个算法进行求解。
2. 不需要人工规则设定,可以将原始的图像当作状态。
我们以下象棋为例,我们可以把象棋的棋盘看作是环境,棋盘上的棋子分布看作是环境的状态,在当前棋子分布下,我们可以采取的走子方式就是行为,下完每一步棋子对棋局结果的影响,就是奖励。
也就是说,如果我们希望计算机可以赢得棋局或者其他什么的,那么计算机就应该要可以在棋盘的任意棋子分布下,都可以选择对赢得棋局最有利的走子方法。
只不过问题在于,我们很难评估哪种走子方法最好,而且需要很多的人类逻辑。
当然我们可以穷举,在每个状态下,都把行为试一遍。
然而,简单的问题好说,类似围棋这样稍微复杂点的,就几乎不可能了。
所以就有人想到了,为什么不用深度神经网络来评估每个状态下的行为,由神经网络来做决策。
尽管深度增强学习的思路很吸引人,我们更感兴趣的却是深度增强学习可以将图像数据作为状态进行输入。
也就是说,不管是围棋啊,象棋啊,五子棋啊,飞行棋啊(飞行棋你为什么在这里…?),我们需要对每种下棋游戏设计输入形式,告诉计算机,哪个子在哪里,也就是我们还需要人工的参与。
可是我们不想要人工的参与,我们就想要把计算机往那边一扔,告诉他去给我学那个游戏,他就可以自己开始学习。
就像小孩子一样,你不需要告诉他什么游戏规则,只需要让他在旁边观察,他就可以慢慢的学会玩这个游戏(有多少人就是这么学会玩魔兽,星际,dota的)。
deepmind所发表的深度增强学习,就是不停的对游戏画面”截图”,然后作为输入信号给程序,从而让程序学习玩任意的游戏,不需要任何人工参与。
现在我们可以讨论,让计算机具备根据视觉信号独立完成自我训练的技术,可以拿来做什么事。
一个真实的案例来自Google的数据中心能源节约。
Google有巨大的服务器集群,要让这些服务器集群高效稳定的工作,需要复杂的供电分配,散热调度等等,高额的电费自然少不了。
然而如果我们把这些复杂的资源分配问题,看作是一款策略游戏(用电分配大亨),然后让计算机去玩这个游戏的话,会怎么样呢?
答案是,Google利用DeepMind的技术,在能源上,节约了15%的消耗。15%大概值多少钱呢?Google的数据中心一年用电4,402,836MWH,15%大概是660,425MWH,1MWH的价格大概是$30,所以大概可以节省 19,812,750美元,还顺便保护了环境,而Google只花了6亿美元收购DeepMind。
而且整个过程不需要了解数据中心复杂的用电机制,工程师只需要专注于资源分配的控制和能源消耗的结果收集就够了,甚至不怎么需要关心训练程序到底是怎么样的。
另一个案例同样来自Google。Google搞了一个机器人手臂农场,若干个机器人手臂,同时进行物品抓取的训练。