如果AI早十年出现 腾讯的游戏就能一统天下了

许多人对AI的想象都停留在应用层,以至于大家都忽视了AI对另一个领域的颠覆——软件本身的发展。一旦机器做到这一步,在软件发挥重大作用的所有领域,将会经历一场颠覆性的变革。近日,就有关于AI程序自身发展的两个重磅消息:“AI游戏克隆”“机器自己编程”

前者AI系统在仅仅观看两分钟的游戏视频之后,就能重建游戏引擎;后者AI系统,是第一个能够全自动生成完整软件程序的机器学习系统“AI Programmer”。

记得有个笑话:腾讯公司看上了一款海外的聊天软件,然后派高管前去洽谈合作事宜,结果人家果断拒绝。后来,腾讯就派出自己的攻城狮,前往国外操作了一遍该聊天软件,没过多久腾讯自家的聊天软件就诞生了。再后来,腾讯想做游戏了,歪果仁只给了代理权,腾讯觉得这款游戏可以在手机上发展,于是派出了自家的攻城狮团队,前去观摩,回来后就开发出来了手游版。现在能自己克隆游戏和编程的AI出来了,腾讯只想说要是早十年出来,就能一统天下了。

当然,以上只是开个玩笑,我们书归正传,与大家聊聊这两款AI的核心!

“AI游戏克隆”

佐治亚理工学院的研究人员正在开发一种可以通过观看游戏过程以重建游戏引擎的AI,他们利用AI来学习一个完整的游戏引擎。有关报道在网络上已有相关报道,小编在这里就不赘述了。

这款AI系统怎么实现AI克隆的呢?

在查阅,原版论文后找到了两个关键:一是,戏引擎搜索算法;二是,游戏规则的空间

游戏引擎搜索算法,可以从游戏数据中学习游戏引擎。该大学的研究人员将游戏机制定义为离散规则,将原因映射到一个效果(例如,如果玩家掉落并击中地面,则玩家停止下降)。然后定义一个游戏引擎作为游戏机制的后端集,算法功能通过扫描游戏引擎的输出,代表视频,并迭代地改进假设的机器,通过贪心搜索来最大限度地减少错误。

游戏规则的空间向系统提供两件事情,一组要学习的视频和一个精灵调色板,通过sprite调色板构建2D游戏级别的一组精灵或个人图像,将初始像素输入转换成一组精灵及其在每个帧中的空间位置,以构建游戏规则的空间。

这两个关键在我看来,更像是一种黑盒,先为AI建立一个游戏空间和相应规则,然后经过视屏(像素点)输入,通过游戏搜索引擎算法,输出经算法运算后的游戏,AI系统并不显示地输出代码片段,而是显示相应的像素,而从输入、输出是数据中学习转换规则,通过这些转换规则能够完成任务,正确地把输入转化为输出,所学习到的这些转换规则和输入输出数据中的规律则以相关AI算法体现,只能完成指定任务的训练,至于它学到了什么规律并不清楚。?

而该AI系统的作者也在论文中,做了如下表述:

“我们注意到,目前的技术仅仅是将单一的视频序列作为训练,可以通过将每个新视频的开始作为一个新的点来扩展到附加的视频,以便在算法达到目的的时候重新开始的一个视频。此外,我们预计这只会改善最终模型,因为视频的单个序列不能包含所有游戏事件。”

所以,在现有的有限资料下,个人认为这款AI应用应该称为游戏克隆软件,因为我们对AI克隆游戏到底从数据中学到了什么规律所知甚少,也不利于AI开发者去分析系统存在的问题。

“机器自己编程”

来自彭博和英特尔实验室的两位研究人员,号称实现了首个能够自动生成完整软件程序的AI系统“AI Programmer”,这个“AI程序员”利用遗传算法和图灵完备语言,开发的程序理论上能够完成任何类型的任务。号称是第一个能够全自动生成完整软件程序的机器学习系统“AI Programmer”。

AI?Programmer 的核心——遗传算法

要使用遗传算法生成软件程序,必须首先创建一个基因组(genome)。基因组是一组被组合在一起作为单个单元的基因。AI Programmer的基因组编码为浮点数组,每个唯一指令的固定值范围在0和1之间,每个值范围映射到编程语言中的特定指令。最初,这些值是随机的,导致生成的程序无法正常运行。但是,其中必将有一两个能够运行并执行一些有效的指令。一个程序执行得越成功,就越有可能继续使用代码,实现更成功的后代。

然后,AI Programmer就将其转换为相应的程序,执行;并根据程序的输出为结果程序分配适合度。生成的程序越靠近解决提供的任务,适应度就越高,越有可能继续进行下一代的进化。在每一代,AI Programmer利用随机选择以及交叉和变异来创建子程序,也就是可能会遇到突变,对特定基因增加受控但随机的扰动,这导致特定基因的值发生修改,使所得到的编程指令发生变化,进而改变整个程序。

最后,特定程序会被立即从基因组池中删除,成功的方案则被推进以产生新的后代,并且可能比其父母更好的基因组来解决目标任务。

论文详细介绍了AI Programmer的系统设计和工作原理,以及使用主流CPU来演示其软件生成功能和性能的实验数据。从中我们可以发现AI Programmer的软件架构中人所驱动的部分非常少,只需要在开始输入指令,最后接收适用于某项任务的函数即可,剩下部分全部由机器完成。而AI Programmer生成的程序,复杂程度也只与人类新手程序员编写的结果相当。

零镜观点:

目前,AI的研究仍然处于技术发展初期,之前网络上大部分的消息都是以AI应用为主,而从“AI游戏克隆”“机器自己编程”却是从AI的自身发展进行研究开发,虽然只能产生解决比较简单的输出,但也给了我们很多启示,那就是我们可以从AI本身的角度去思考AI的发展。尽管AI在近两年取得了非常快速的技术进展,但是AI这个研发领域仍然面临一系列需要解决的问题,相信在未来几年AI领域会有大幅的技术进步。也许,不久的将来腾讯再也不需要出动攻城狮,用AI瞟一眼好玩的游戏就能出现在腾讯的平台上。