人类已经不满于让人工智能和人类对决了。
就在昨天虐狗节,36氪发布了一篇关于Google的Deepmind团队如何让两个人工智能在一起玩游戏的文章(详情请点击《Google找来两个AI坐在一起玩游戏,他们会合作还是打架?| 潮科技》),没想到氪星读者们甚是喜欢。
看来我们越来越想知道,究竟人工智能还能做什么?人工智能之间,还能擦出什么火花?
于是,我们翻出了去年10月Google的另一个人工智能团队Google Brain(谷歌大脑)做的一个实验(具体论文请点击这里),那次的游戏参与者有三个AI(人工智能),一个叫Alice、一个Bob,最后一个叫Eva。
这三个玩家其实就是三个神经网络,他们每个人有不同的任务,Alice要把一段明文加密之后,传达给Bob,为什么要加密呢?因为第三者Eva,可以“偷听”到他们“讲”的,也就是他们传输的是什么,但是光有这段传输的内容,当然不够,所以Eva要努力解密,还原出原文。
显然Alice和Bob的任务某种程度上需要他们齐心协力完成,Alice需要加密明文不让Eva解出来,而Bob则需要努力解密出原文。配合这两个神经网络的名字,这听上去是不是一个特别浪漫却又弥漫着谍战气息的实验,更加黑色浪漫的是,他们之间不能交流,仅凭一开始拥有的一段共识密钥,之后完成加密与解密的任务。
你大概想问,Google做这个是想干嘛?
稍微了解过人工智能的氪星读者可能会知道,机器学习是目前实现人工智能比较主流的路径,神经网络则是重要的机器学习的一种模式,它的特点是模仿人脑的神经元之间传递来处理信息,可以自我学习。神经网络能通过大量的数据训练,自学、纠错、调整,学会回答特定问题,不过往往最后他们是怎么算出这个答案的,人类也不知道。
人类在设计神经网络的时候,通常来说都没想着让它擅长密码技术。于是Google Brain想试试,不教他们特定形式的算法,只教基本的计算机逻辑运算,比如XOR,看看通用神经网络能不能学会安全(秘密)地交流。
下面是这个实验的系统结构,Alice和Bob是同一阵营的神经网络,Eva是意图偷取机密的敌方,P代表输入给Alice的明码文本(plaintext),Alice加密之后会输出加密文本(ciphertext)C;Bob和Eva都能收到C,尝试还原出P,两个人输出的P分别以PBob和PEva表示。Alice和Bob则共享了一段密钥K,实验假设每一段新的P都会一个新的K。
实验系统结构
在这个加密和解密的过程中,Google Brain团队的人也不知道Alice和Bob之间究竟会用什么方法加密解密,而且这样的设置是允许他们决定使用最基础的方案——简单地通过密钥K做XOR运算,连接明文P和密文C。不过,研究人员并没有要求Alice和Bob这样做。
让人惊喜的是,在训练过程中,后来他们真的学到了用其他方案,从而大大提高了对手解密的难度,却又实现了我方的成功解密。不过这个过程倒是有点曲折,我们来看看它是怎么样的?
下图是一次成功跑程序的情况,展现的是Bob和Eva猜错的明文位数变化情况。
我们看到,一开始,敌我双方的错误率都很高,都是一半错一半对的,可以猜出来两个人都在各种乱猜一通。过了一段时间之后,凭着两个人之间的默契(K),Bob的错误率开始急速下降,两个人的交流似乎变得特别顺利,但同时,来自敌方阵营的Eva也学习到了解密的方法,摸着了门道之后错误率逐步下降。
于是,在大概在快到第一万次传输信息的时候,Alice突然提高了加密的难度,用了新的加密方案,Bob一开始也没能跟上,但后面很快就跟上了,错误率逐渐降到了零。悲催的Eva则在加密方法的转变之后一泻千里,错误率来了个V型反弹,慢慢恢复到了原来的高水平上……