好的表征意味着学习任务变得更加容易,意味着计算机可以拥有「知识」,进而可以进行人与动物所擅长的决策。而如何定义好的表征?如何学习好的表征?那些试图理解人类自身的研究(例如脑科学与自然语言学科的研究),又给表征学习带来了哪些启发?这些都是 Bengio 试图回答的问题,而深度学习,一方面是表征学习的手段,另一方面,是可以利用好的表征实现人类水平 AI 的「获益者」。
2007 年,Bengio 与 Yann LeCun 合著的论文 [2] 着重强调表征必须是多层的、逐渐抽象的。13 年,Bengio 在综述论文中 [3],增加了对解纠缠(Disentangling)的强调。
17 年,Bengio 在 ArXiv 发布了一篇题名为《意识先验》(The Consciousness Prior)的 、仅有四页纸长的文章 [4]。这四页纸,与其说是论文,不如说是他回首过去十年在表征学习一途的研究之路,无论大路小路、歧路远路,然后为未来十年画下的一张蓝图。
近日,长居于蒙特利尔的 Bengio 来到了北京,除了发表了两场公开演讲之外,也接受了机器之心的专访。以「意识先验」这张可以串联起前后数百篇论文的蓝图为线索,Bengio 向我们解释他如今思考表征学习的理论框架、在此框架下完成的一系列工作、以及为什么这个框架能够引导深度学习走向人类水平的 AI。
从「意识先验」理论说起
「深度学习的主要目标之一就是设计出能够习得更好表征的算法。好的表征理应是高度抽象的、高维且稀疏的,但同时,也能和自然语言以及符号主义 AI 中的『高层次要素』联系在一起。现在,我们还无法用无监督学习的方法找到这样的表征。
一个有关世界的描述其实只需要很少几个高层次要素,就像你可以用寥寥几个单词组成一句话一样。一句话,或者符号主义 AI 系统的一条规则之中,通常只涉及几个概念,而相比之下,当前的机器学习算法则需要学习大量变量的联合分布(比如一张图片中的所有像素的联合分布),维度极高。
意识先验试图用上述的动机迫使表征学习到一些好的特性:比如能够轻松提取特征的少数几个维度、能够利用少数几个维度作出动作或者对未来的预测等等。换言之,意识先验通过额外的压力与限制条件,来找到那些善于表达符号化的知识的表征。」Bengio 这样解释意识先验的工作。
如果你对先验(prior)这个词感到陌生,不妨将它替换为约束(constraint)或者正则化项(regularization term)。
学习本质是一个在所有可能性里进行挑选的过程,而先验告诉你挑选的偏好以及理由。文章开头的例子中,把数字表示成阿拉伯数字而非罗马数字的理由「方便计算」就是一种先验。而「意识先验」则是 Bengio 提出的一种新先验。
图:意识先验的网络示意图,来自 Bengio 演讲 Challenges for Deep Learning towards Human-Level AI,机器之心汉化
意识先验理论来自对人的观察。意识是某一时刻人脑中的想法,它的维度很低——不管我们的大脑里储存了多少知识,在某一时刻里,脑海中只能容纳少数几个要素构成一个想法。
Bengio 将这个类比想法的低维向量称为有意识状态(conscious stat),将大脑中的所有内容——一个非常高维、非常稀疏的向量,称为无意识状态(unconscious state, representation state),而来自外界的信息输入则称为观测状态(observed state)。
感知状态通过一个表征 RNN 得到无意识状态,无意识状态通过一个注意力机制,或称意识 RNN 得到有意识状态。获得好的表征 RNN,从而得到好的表征,是表征学习的目的。
意识先验对于「好」的定义是:「能够容易地从无意识状态中提取出少数几个要素,它们包含了足够多的知识,能够作出与真实世界有关的陈述、动作预测。」
这就是意识先验的理论框架。
理论骨骼的「血与肉」:目标函数与优化方法
框架搭好之后,问题就变成了:如何将这样的先验表达出来?
训练目标问题首当其冲。
标准的深度学习算法的目标函数通常基于最大似然,但是我们很难指望最大似然的信号能够一路经由反向传播穿过用于预测的网络,穿过意识 RNN,最终到达表征 RNN。不要说表征 RNN 了,当你尝试从大量信息中挑出非常少几个维度时,意识 RNN 会倾向于将注意力集中在那些高度可预测但是毫无意义的要素上。
更重要的是,最大似然与意识先验的思想天然存在冲突。「人类从不在像素空间进行想象与生成任务,人类只在高度抽象的语义空间使用想象力,生成一张像素级的图像并非人类需要完成的任务。」因此,在训练目标里引入基于表征空间的项目就变得顺理成章。
过去的机器学习中,是否有类似的不在原始数据空间内定义目标函数的案例?
有,Bengio 以 PCA 举例:「PCA 的训练可以发生在不同的空间:你可以在像素空间训练 PCA,用重构误差做目标函数,也可以在其表征空间构建目标:要求表征高方差、要求表征保留尽可能多的输入信息 、要求表征彼此独立……这些都是在表征空间定义的无监督训练目标。」
那么对于意识先验来说,有什么合适的无监督目标吗?
《意识先验》发布后不久,Bengio 就和他当时的博士后学生、现 DeepMind 研究员 Philemon Brakel 共同发表了论文 [5],讨论将互信息(mutual information)作为意识先验目标函数重要组成部分的可能性。
「『不在像素空间定义目标函数』的思想可以回溯到上世纪 90 年代初联结主义和神经网络刚刚兴起的时候,Hinton 的博士生 Suzanna Becker 在其毕业论文 [6] 里讨论了空间中的互信息:她认为,我们应该将『找到一种图像变换,让空间中相邻的特征具有高互信息』作为图像任务的无监督学习目标。」
「我认为这是一个没有得到足够重视的方向。」Bengio 说。他认为可以将这一思路从空间扩展到时间序列,寻找在不同时间步里拥有高互信息的特征。「一个合理的假设是,在好的表征空间里,当前的表征中会拥有很多关于未来的信息,从而获得跨时间的可预测性。」
这个概念还可以被扩展到增强学习里,在这里,「众望所归」的高互信息对象是「意图/策略/动作」与表征。Bengio 指了指手中的笔,「比如,我想要在移动这支笔(意图),那么在表征空间里有专门的维度负责描述这支笔的位置会让未来对笔的表征格外顺利。事实上我很希望我的大脑里有一个专门的神经元负责这件事。」
如果你对这个话题非常感兴趣,那么你可以顺着心理学中的「功能可见性」(affordance,看到一样物体就能知道如何与它交互)一词继续探索。
除了目标函数之外,意识先验的优化方式也会和经典深度学习有所不同。
即使是注意力机制,也需要「软化」这样的手段以便反向传播,更不用提意识先验的超高维表征和超长时间跨度了。人们在大量使用强化学习方法处理不能反向传播的情况,然而,这还远远不足。
「什么样的优化方式最适合意识先验?我仍然不知道这个问题的答案。」Bengio 说。在他看来,一类很有前景的研究是合成梯度(synthetic gradient)[7]。
「合成梯度是说,即使我们在不知道全部知识的情况下进行了无法反向传播的离散决策,我们仍然可以训练神经网络的一个部分,就像 GAN 中的判别器一样,它拥有一个损失函数,我们能够通过它获得近似梯度。」
有了合成梯度之后,每一层的梯度可以单独更新了。但是当时间步继续拉长,问题仍然存在。理论上反向传播可以处理相当长的序列,但是鉴于人类处理时间的方式并非反向传播,可以轻松跨越任意时长,等「理论上」遇到一千乃至一万步的情况,实际上就不奏效了。
换言之,我们对时间的信用分配(credit assignment)问题的理解仍然有待提高。
「比如你在开车的时候听到『卟』的一声,但是你没在意。三个小时之后你停下车,看到有一个轮胎漏气了,立刻,你的脑海里就会把瘪轮胎和三小时前的『卟』声联系起来——不需要逐个时间步回忆,直接跳到过去的某个时间,当场进行信用分配。」
受人脑的信用分配方式启发,Bengio 的团队尝试了一种稀疏注意回溯(Sparse Attentive Backtracking)方法。「我们有一篇关于时间信用分配的工作,是 NIPS 2018 的论文 [8],能够跳过成千上万个时间步,利用对记忆的访问直接回到过去——就像人脑在获得一个提醒时所作的那样——直接对一件事进行信用分配。」
意识先验理论只是一个思维框架、一个研究计划,它撑起了一个研究方向的骨骼,衍生出一堆亟待探索的问题。目标函数的构建、优化方法的选择,最后,还有模型结构的设计,这些则是研究方向的血肉。这些问题中,有的问题存在几个前景可观的方向,还有一些仍然处于设想阶段。
从实验场出发:发现优秀的算法,而不是搭一个 AI
想要对意识先验理论进行实验存在一个问题:无论想要找到合适的目标函数、还是优化方法,都要和表征 RNN 以及无意识状态打交道。虽然有意识状态的大小只是和一句话、一条规则差不多,但与无意识状态的规模对应的,是大脑存储的全部内容。
「学习整个世界是非常困难的。刻画现实世界的复杂性是我们的最终目的,最终我们会实现这一点的,但是作为第一步,我们应该减小问题的范围,在一个有限的环境内学习『学习』本身。要记住,机器学习研究的目的不是搭一个 AI,而是发现优秀的学习算法。学习算法是通用的,所以我们可以在一个有限的环境里测试自己的算法,如果它在有限环境中都无法学到东西,那么无疑它无法走入真实世界。」
因此,我们搭建一个如同视频游戏一样的虚拟环境。一个如同果蝇之于生物学、MNIST 之于传统机器学习框架的环境。
1971 年,Winograd 在试图用符号主义方法建立一个能够用自然语言执行任务的系统时,也建立了一个环境:一个叫 SHRDLU 的砖块世界,计算机可以在其中和人的指令进行简单的互动。
虽然 Winograd 的方法并没有成功,但合成环境的思想流传了下来:与其被动地观察巨量的要素相互作用产生的结果,不如与少一些的要素直接进行交互。
基于这一思想,Mila 实验室的一个团队创建了 BabyAI 平台 [9],构建了一个 2D 网格世界,有一些房间,有渐进的难度系数,有一位虚拟的「老师」,希望像老师教婴儿学习一样,教会还是个「宝宝」的 AI,至于教学的任务,则以自然语言的形式出现:希望 AI 同时学会关于这个世界的知识,以及语言与这个世界中的要素的关系。
那么,为什么是语言?
连接自然语言,连接符号主义
其实这个问题应该换一个问法:为什么是表征+语言?
Bengio 仍然从脑科学入手解释这个问题。
人类的认知任务可以分为系统 1 认知(System 1 cognition)和系统 2 认知(System 2 cognition)。系统 1 认知任务是那些你可以在不到 1 秒时间内无意识完成的任务。例如你可以很快认出手上拿着的物体是一个瓶子,但是无法向其他人解释如何完成这项任务。这也是当前深度学习擅长的事情,「感知」。
系统 2 认知任务与系统 1 任务的方式完全相反,它们很「慢」且有意识。例如计算「23+56」,大多数人需要有意识地遵循一定的规则、按照步骤完成计算。完成的方法可以用语言解释,而另一个人可以理解并重现。这是算法,是计算机科学的本意,符号主义 AI 的目标,也属于此类。
人类联合完成系统 1 与系统 2 任务,人工智能也理应这样。
「这种联合并非将符号化知识与联结主义知识合并,而是将符号主义 AI 的目标视为联结主义优化的最终目标,同时让联结主义表征习得的关于世界的知识作为符号主义任务的基础。」
就像把一支只会砌砖的施工队,和一位只会画图的建筑师组合在一起:原本只会砌平房的施工队按照图纸能盖摩天楼了,而原本只能设想空中楼阁的建筑师也接了地气。
回到表征和语言的例子里。
「下雨了,人们撑起了伞。」是单独存在的语言,寥寥数字里有两个明确的要素:「是否下雨」和「是否撑伞」,你可以很容易地把它们从句子里摘出来,然后用它们建立规则进行推理。但是这种推理是与真实世界隔离的。
上面这幅照片则是单独存在的表征,虽然用一团像素表达了和语言同样的意思,可是我们无法把代表「下雨」和「撑伞」的像素挑出来,更无法推理说一些像素是另一些像素的原因。我们能做的只是以标签的形式告诉机器,这张图里有一个很重要的概念,叫做「下雨」,而这样形式习得的表征也无法完成推理任务。
「意识先验是将联结主义与符号主义结合的粘合剂。符号主义 AI 向联结主义表征 RNN 表达诉求:我想要完成『下雨的时候人们会打伞。』这样的推理,请给我合适的变量,而表征 RNN 需要自己发现,『下雨』是一个能够从图像中提取出的、帮助推理的特征,然后学习它。」
这才是意识先验最终的目的,这张显著不同于现有深度学习框架的蓝图所规划的方向。
「五年前我们关心的问题是,如何设计不依赖蒙特卡洛链的生成模型,所以我们有了变分自编码器(VAE),有了生成对抗网络(GAN),自那以后我们在生成方面获得了巨大的进步,但是生成并不是最终目的。」
五年前人们仍然认为通过学习文本本身能够解决自然语言处理问题,现在谷歌的 BERT 大规模预训练语言模型已经在 33 亿规模的词库上进行训练了。「BERT 还是会和其他现有模型一样,犯一些人类根本不会犯的『愚蠢』错误。BERT 在推动单纯基于文本的自然语言处理模型的极限,这是件很好的事,但是它能够获得的终究是不完整的语言模型,」
在 Bengio 眼中,生成模型和 BERT 都没有触及本质问题:「大概十年前,我提出了一个非常基本的问题:『如何将潜在的变差因素解纠缠?』(the disentangling the underlying factors of variation)十年过去了,这仍然是一个未解之谜。」
那些「基本的问题」好像是 AI 之路通关前的最后一道门,解开了问题仿佛就能获得开门的钥匙,门后面就是如 Yoshua Bengio 一样走在最前列的研究者们从数十年前就梦寐以求的「通用的、人类水平的人工智能」。他们尝试了各种技巧,每一条路都让我们离这扇门更近,但似乎又没有一条能够真正通向这扇门。
「如果说十年前的我和现在的我在观点上有什么不同的话,那就是五年或者十年前,我仍然天真地希望我们所掌握的技巧能奇迹般地通过尝试学会做正确的事。」
Bengio 花了十年时间,相信这个奇迹不会发生。
「现在我不这么认为了。我们要引导机器去做正确的事,通过那些能够推动机器朝正确的方向前行的先验。」
References:
[1] Goodfellow, I., Bengio, Y., Courville, A., & Bengio, Y. (2016). Deep learning (Vol. 1). Cambridge: MIT press.
[2] Bengio, Y., & LeCun, Y. (2007). Scaling learning algorithms towards AI. Large-scale kernel machines, 34(5), 1-41.
[3] Bengio, Y. (2013, July). Deep learning of representations: Looking forward. In International Conference on Statistical Language and Speech Processing (pp. 1-37). Springer, Berlin, Heidelberg.
[4] Bengio, Y. (2017). The consciousness prior. arXiv preprint arXiv:1709.08568.
[5] Brakel, P., & Bengio, Y. (2017). Learning Independent Features with Adversarial Nets for Non-linear ICA. arXiv preprint arXiv:1710.05050.
[6] Becker, S., & Hinton, G. E. (1992). Learning to make coherent predictions in domains with discontinuities. In Advances in Neural Information Processing Systems (pp. 372-379).
[7] Jaderberg, M., Czarnecki, W. M., Osindero, S., Vinyals, O., Graves, A., Silver, D., & Kavukcuoglu, K. (2016). Decoupled neural interfaces using synthetic gradients. arXiv preprint arXiv:1608.05343.
[8] Ke, N. R., Goyal, A., Bilaniuk, O., Binas, J., Mozer, M. C., Pal, C., & Bengio, Y. (2018). Sparse Attentive Backtracking: Temporal CreditAssignment Through Reminding. arXiv preprint arXiv:1809.03702.
[9] Chevalier-Boisvert, M., Bahdanau, D., Lahlou, S., Willems, L., Saharia, C., Nguyen, T. H., & Bengio, Y. (2018). BabyAI: First Steps Towards Grounded Language Learning With a Human In the Loop. arXiv preprint arXiv:1810.08272.