2016 年 10 月,谷歌大脑的研究者们做了一个有趣的实验:使用三个并不复杂的神经网络执行保密通信的任务,两个合法通信方共享的只有保密的密钥,而没有商定的加解密算法,第三个神经网络则作为窃听者出现。
深度学习框架下的神经网络——生成式对抗网络这种配置显然颠覆了密码学的常识:无论是公钥体制还是私钥体制,加解密的算法都是已知的。如果合法通信双方不能统一加解密的方法,实现保密通信就是“巧妇难为无米之炊”。可谷歌偏偏不信这个邪,他们就是要让神经网络实现双盲的加密与解密。
实验的结果同样令人惊讶:经过不断的试错与调整,接收方可以精确恢复出发送方的明文,而窃听者的错误率稳定在 50% 左右,意味着她的破译只是随机的猜测。这个实验的意义在于展示出神经网络的潜能:它们不仅能够在欠缺先验规则的条件下,通过对大量数据的无监督学习完成目标,甚至还能够在学习过程中根据实际条件的变化对完成目标的方式进行动态调整。
这个实验的环境,就是在最近两年名声大噪的生成式对抗网络。生成式对抗网络(generative adversarial network)由《深度学习》的第一作者伊安·古德菲洛提出,这是一类在无监督学习中使用的人工智能算法,由两个在零和游戏框架下相互竞争的神经网络实现。“零和游戏”(zero-sum game)这个术语来自于博弈论,意思是博弈双方的利益之和为零。由于一方的收益必然意味着另一方的损失,因而双方不可能实现合作,属于非合作博弈。
生成式对抗网络里的两个玩家一个叫生成器(generator),一个叫判别器(discriminator),均可以采用深度神经网络实现,这两者之间的对抗就是网络训练的主旋律。生成器像是白骨精,想方设法从随机噪声中模拟真实数据样本的潜在分布,以生成以假乱真的数据样本;判别器则是孙悟空,凭一双火眼金睛来判断输入到底是人畜无害的真实数据还是生成器假扮的伪装者。零和博弈中的竞争促使双方不断进化,直到“假作真时真亦假”,真真假假不可区分为止。
两个玩家费这么大劲对抗的目的是什么呢?就是建立数据的生成模型,使生成器尽可能精确估测出数据样本的分布。从学习方式上看,对抗性学习固然属于无监督学习,但对抗的引入使学习可以利用来自判别器的反馈信息,因而又蕴含着某些监督学习的影子。
我们只是知道了合法通信方能够达成关于密码算法的共识,但这个共识的达成过程还是个黑箱。关于生成器为什么能够从随机样本出发学习到真实的数据分布也缺乏清晰的理论解释。凡此种种都让生成式对抗网络看起来更像是沙上之塔。没有坚实的理论基础,对算法的推广自然存在困难。除了在图像生成等少数领域表现突出,生成式对抗网络在大多数任务上还是乏善可陈。在算法的原理尚不清楚时,想要实现优化自然是空中楼阁。
生成式对抗网络面临的另一个主要问题就是训练的难度。对抗网络的训练目标是在连续分布的高维度参数下达到纳什均衡,也就是让生成器和判别器的损失函数同时取得最小值。但由于待优化的问题可能是个非凸的问题,直接追求纳什均衡可能会让算法难以收敛,从而引发模型的欠拟合,导致表示能力不足。生成式对抗网络的提出者古德菲洛针对训练难的问题也提出了一系列改进措施,并应用在了半监督学习问题上,取得了不错的效果。
虽然优缺点都很明显,但生成式对抗网络的提出依然可以看成是深度学习的一次突破。给定一只猫的图片,过往的神经网络算法只能区分出它到底是不是猫,还不一定分得准确。可生成式神经网络却能模仿现有的图片画出一只类似的猫。不管这是简单的数据拟合,还是更加高级的抽象特征重组,它都是由机器自己完成的再创作,这种行为方式无疑更加接近于真实的人类。
网友评论