2016 年 10 月,谷歌大脑的研究者们做了一个有趣的实验:使用三个并不复杂的神经网络执行保密通信的任务,两个合法通信方共享的只有保密的密钥,而没有商定的加解密算法,第三个神经网络则作为窃听者出现。

这种配置显然颠覆了密码学的常识:无论是公钥体制还是私钥体制,加解密的算法都是已知的。如果合法通信双方不能统一加解密的方法,实现保密通信就是“巧妇难为无米之炊”。可谷歌偏偏不信这个邪,他们就是要让神经网络实现双盲的加密与解密。

实验的结果同样令人惊讶:经过不断的试错与调整,接收方可以精确恢复出发送方的明文,而窃听者的错误率稳定在 50% 左右,意味着她的破译只是随机的猜测。这个实验的意义在于展示出神经网络的潜能:它们不仅能够在欠缺先验规则的条件下,通过对大量数据的无监督学习完成目标,甚至还能够在学习过程中根据实际条件的变化对完成目标的方式进行动态调整。

这个实验的环境,就是在最近两年名声大噪的生成式对抗网络。生成式对抗网络(generative adversarial network)由《深度学习》的第一作者伊安·古德菲洛提出,这是一类在无监督学习中使用的人工智能算法,由两个在零和游戏框架下相互竞争的神经网络实现。“零和游戏”(zero-sum game)这个术语来自于博弈论,意思是博弈双方的利益之和为零。由于一方的收益必然意味着另一方的损失,因而双方不可能实现合作,属于非合作博弈。

生成式对抗网络里的两个玩家一个叫生成器(generator),一个叫判别器(discriminator),均可以采用深度神经网络实现,这两者之间的对抗就是网络训练的主旋律。生成器像是白骨精,想方设法从随机噪声中模拟真实数据样本的潜在分布,以生成以假乱真的数据样本;判别器则是孙悟空,凭一双火眼金睛来判断输入到底是人畜无害的真实数据还是生成器假扮的伪装者。零和博弈中的竞争促使双方不断进化,直到“假作真时真亦假”,真真假假不可区分为止。

两个玩家费这么大劲对抗的目的是什么呢?就是建立数据的生成模型,使生成器尽可能精确估测出数据样本的分布。从学习方式上看,对抗性学习固然属于无监督学习,但对抗的引入使学习可以利用来自判别器的反馈信息,因而又蕴含着某些监督学习的影子。

由于生成器和判别器处于零和博弈之中,因而对网络的训练就可以等效成对以下目标函数的极大 - 极小问题

argmingmaxD−12∫x[pdata(x)log(D(x))+pg(x)log(1−D(x))]dxarg⁡mingmaxD−12∫x[pdata(x)log⁡(D(x))+pg(x)log⁡(1−D(x))]dx