最近机器学习中各种诸如 BERT、BigGAN 之类的性能上的突破似乎都有一定的“大力出奇迹”的成分在里面,除了计算资源之外,训练数据的数量和质量都需求巨大。虽然这些进展令人振奋人心,但是往前看的话,头几年深度学习带来的 AI 狂热似乎前进开始慢下来,虽然不知道前路是会一举突破还是寒冬将至,但是相信大部分人都不会反对以当前已有的技术和模型来看,实现真正的 AI 还需要一些质的突破。当然本文并不是试图要去解答这个未来方向的问题,我也没有能力去做这样的解答,只是突然想到语言的出现似乎是人类进化史上的一件重要事件,或者甚至是最为重要的事件之一可能都不为过。然后顺势想到了一些与 AI 有所关联的东西,就想要分享一下,以下内容完全是胡思乱想的结果,并没有特别严谨的科学依据或者调研,因为我对 language、linguistics、传统 AI 等这些领域都不是特别熟悉,所以有可能会对一些非常相关的已知的结果或理论有不少遗漏的地方。
在讨论(人类)语言之前,不妨先简单回顾一下 AI 的发展历程。AI 诞生的标志性事件是 1956 年的达特茅斯会议,Marvin Minsky、John McCarthy 还有老一辈的 Claude Shannon 等人聚到一起讨论模拟智能和学习的课题,Proposal 上首次出现了 Artificial Intelligence 这个词,当然,Proposal 里写的是要立一个长达两个月,多达十人的研究小组来解决这个叫做 Artificial Intelligence 的问题。后来的事情大家都知道了,AI 经历了两次繁荣和两次寒冬,目前正借助统计学习,特别是深度学习的热度处在第三次繁荣或者说泡沫之中,相信目前大部分人都对过去的 AI 历史没有太多兴趣,这里也就不多深入了。只是有一点比较有意思的地方就是 Modern AI 和传统 AI 之间的分界线:也就是基于符号逻辑的系统和基于统计学习的系统之间的划分。这种对立在一些传统 AI 和现代 AI 都在尝试解决的课题——比如象棋、围棋、或者不同人类语言之间的自动翻译等等——上面就体现得尤为明显。
当然就目前来看,data driven 的基于统计学习的方法可以说是在各个领域全面战胜传统的基于逻辑和规则的系统。那是否就是说传统 AI 的框架一无是处呢?也许也不是。通常认为,传统 AI 是所谓的演绎 (deductive) 思维方式,给定一些规则,推演出结论,最典型的例子就是所谓的三段式演绎法;另一方面,统计学习则是所谓的归纳 (inductive) 思维方式,给定一系列 observation,从中总结出规律。
从这个角度来看,这两个方面基本上都是人类思维方式不可缺少的一面,似乎在 AI 研究中将两者结合起来是一个很自然的选择?——虽然究竟如何结合并不是一个容易的问题。我想早期的 AI 基于演绎逻辑是很自然的,因为逻辑思维在我们日常生活中是随处可见的,我们每时每刻都在和各种规则和决策打交道,“打雷要下雨,下雨要打伞”,“红灯停,绿灯行”……并且早期的一些问题比如象棋 AI、专家系统等等似乎都非常自然地可以套入规则加逻辑演绎的系统中。但是为什么后来这条路走不通了呢?真正原因大概方方面面非常多,我们这里拍脑袋随便讲几个:
虽然我们日常生活中很多事情都需要理性地逻辑思维来进行决策,但是可能有更多的时候是完全“自然地”、“习惯地”、或者“凭直觉地”去做的,通常的可能问题在于需要实时、大量地计算(比如“双足行走”这个到今天还是在 robotics 中并未完全解决的问题),或者是问题过于复杂,超过普通人脑的正常逻辑处理能力(比如在十几个租房选项中根据各种权衡和条件选出最优选项,最后通常就“凭直觉”选了)。总之最后需要所谓的 intuition 来辅助,这个 intuition 可能就是一个 blackbox 的 neural network。
虽然逻辑演绎非常有用,但是它所处理的对象都是抽象过的 entity,比如“红灯停”这个简单的规则,我们在实际问题中所直接接触到的并不是“红灯”和“停”这些高度抽象过的对象,而是,比如,反射光在视网膜上所成的一幅图像,以及一些可以(并不太精确地)控制汽车前进停止后退转弯的 controller 等等。目前将这些 raw signal 进行 parse 得到 abstract entity 的工作全都是基于 statistical learning 的方法最擅长的。
虽然逻辑演绎可能可以看做“智能”的重要体现,但是这里并没有很好地解决“学习”的问题,也就是如何得到这些规则的过程。如果单靠人去设计,那么不仅 scalability 很差,并且可能也称不上 AI;而从最基本的元规则出发,让系统自己去演绎,似乎有碰到搜索空间指数爆炸的情况:比如自动定理证明,虽然人用的逻辑也都是那些,但是伟大的数学家们在证明一些深刻的定理的时候似乎“如有神助”地有一些“intuition”,这是限制和缩小指数爆炸的搜索范围的关键;类似地,原则上来讲,各种 perfect information game (比如象棋围棋等),给定最基本的游戏规则,AI 的逻辑演绎系统应该就能够自动找到合适的 behavior rule 来取得胜利,然而实际上,在不给任何辅助“intuition”的情况下,这样的搜索问题同样是 intractable 的。
似乎种种困难都指向所谓的 intuition,而 intuition 又是说不清道不明的东西,英文里的 somehow 和日文里的【何となく】都用来表达类似的意思,中文似乎没有专用的词?好像要看语境用不同的词?不过回到主题,我们在实际生活中碰到的很多“难以用简单规则形容的”所谓“intuition”,到统计学习这里,就变得简单多了。比如要用规则来描述清楚什么是“一条狗”,可能只有动物学家才能讲得清楚(而且并不一定能帮助计算机进行识别)。但是如果用统计学习的方法,只要找一堆狗的照片给计算机看,不停地告诉他,这是一条狗,这也是一条狗……,在看过很多很多很多很多只狗之后,计算机就有了自己的 intuition,并且能认识没有见过的狗了。
只是目前效果最好的做这种事情的统计学习模型(比如 ResNet)所得到的它自己的 intuition 并不是非常 interpretable。我们知道这个模型能认识狗了,但是其他的各种问题都搞不清楚,比如模型是如何“习得”这种 intuition 的,为什么明明很精确的模型,把输入图像改变几个像素就能让它误认为这是一条鱼,或者是一条猫(参见 adversarial example 相关的条目,比如这个博客)?等等。但是有些事情,是不是如果我们自己都讲不清楚自己脑子里的 intuition 是怎么样的,就不要去强求别“人”了?但是毕竟这个 model 是人自己设计和构造出来的,搞不清楚怎么回事多少让人有点生气;虽然另一方面来讲,每个人也都是父母造出来的了……而我们对自己的大脑是如何运作的依然知之甚少。
总而言之,目前的主流 AI 模型都是这种基于“归纳”的统计模型(并且其中绝大部分是基于深度神经网络的)。除了认一条猫和一条狗之外,各种各样的对应关系的问题都可以尝试用这种丢给你一堆例子,让你自己去总结 intuition 的办法来解决。另一个典型的例子就是机器翻译,比如给很多很多很多很多的中文和对应的英文句子,神经网络就能“somehow”开始翻译其他的没见过的句子——现在 Google Translate 线上的系统就是这么得来的,虽然还没有达到人类的水平,但是比之前的统计模型要好了很多,而那又比更之前的基于规则的翻译系统好了很多。当然还有超越人类的情况,比如在看过了许多许多许多的眼球和对应的性别信息之后,神经网络就能以超高的精度通过眼球图像判断主人的性别了,而人类的计算机科学家和医生们即使手里拿着这个神经网络模型,也一直没太搞清楚究竟要怎么从眼球分辨性别。
总之 so far so good,统计学习特别是深度神经网络方面的进展让许多诸如围棋 AI、无人驾驶车之类的过去非常困难的问题得到解决或者看到了希望,似乎只要大步向前走,就能到达 AGI 的圣杯啦。但是真的是这样吗?我当然是不知道的。只是有一点可以确定的是,inductive 的统计学习框架也还是有一些难题需要解决的。一个就是刚才提到到 understanding 的问题:比较简单的统计模型通常效果不好,而效果好的复杂神经网络我们又还没搞清楚它到底是怎么工作的,这是一个复杂系统问题,我前阵子看到一个很有趣的比喻,说我们知道每个水分子的化学和物理性质,知道两个水分子之间如何作用和碰撞,但是当足够多的水分子合在一起构成一片大海的时候,我们就没法很容易地去理解整片海洋的行为了。也许当我们有足够多的计算资源(和数据)之后,智能就会自然地从神经网络中悄悄诞生,只是这样的话,可能到我们能够制造出智能机器的那一天,也依旧搞不清楚它是怎么一回事。
当然 practitioner 并不太在意 understanding 的问题。但是从实际的角度来看,目前的 AI 模型仍然有很多问题需要解决,首当其冲的就是 sample complexity 的问题。所谓 sample complexity,简单讲就是模型要达到指定的效果(比如认猫狗的精确度)所需要的数据量。目前的各种算法的主要问题就在于 sample complexity,虽然在一些特定的问题上效果可以达到非常好,但是通常要训练这些模型所需要的数据量是无比巨大的。虽然我们在小时候也会有大人手把手教一些基本的东西(比如照着动物图书认动物之类的),但是大体而言人类的“学习”过程并不是通过不断地观看数以万亿计的“输入”、“输出”对来达到的。当然,人类的“学习”过程并不一定就是唯一的或者最优的,所以 AI 的学习过程即使跟人不一样也不一定就是什么问题,但是目前的这种状况很快就会碰到瓶颈。
因为收集(带标签的)数据在很多 domain 下都是耗时耗力的,并且针对不同的 domain 和不同的 task 需要收集各自对应的数据,得到的模型并不是一个“general”的 AI,可以自动适应不同的 domain,即使现在在 meta-learning、multi-task learning、one-shot learning 等方面都有一些进展,但是似乎还是有很远的路要走;另一条路是 reinforcement learning,像在围棋或者星际里那样,AI 可以通过不断地 self-play 来自动地搜集数据,例如最近 DeepMind 出的星际 2 的 AI 模型,就是在一周的时间内通过大量并行计算,自己和自己玩了等价于两百多年的星际争霸游戏对战得到的。这种方式对于像游戏这种可以非常高效地通过计算机进行模拟的问题也许还是比较可行的,但是任何需要和真实的物理世界 interact 才能得到反馈的任务,就没法“把一周当两百年来用了”。
在这里我觉得也许非人类的动物们的学习过程可能很多就是单纯地看例子来学习——比如我们都知道动物小时候会模仿父母的行为,在比如如果总是在喂食前摇铃的话,很多动物都会很快学会铃声和食物之间的关系。这些学习行为都挺像现在的 AI 模型的行为的。看起来对动物而言一个很大的障碍似乎是没有语言,即使父母辈拥有很多的知识和智慧,也没有办法很直接地传递给子女,因为除去基因遗传这种缓慢到可能要以万年为单位计算的传递方式之外,在动物界似乎就只能通过“演示”和基本的“奖励、惩罚”反馈来进行(挺像 imitation learning 和大部分的 reinforcement learning 的),这似乎是一个非常低效的传递知识的通道。也许如果你家的二哈学不会微积分并不是因为它脑容量不够,而是因为听不懂人话,所以学起来很慢(sample complexity 非常大),说不定你不停地给它看随机的函数式子和求导过后的式子,在两百年之后它真能学会求导呢。
在这一点上,人类的语言似乎是得天独厚的优势。究竟是人类凑巧发明了语言,还是某一些生物、生理上的 fundamental 的因素导致人类进化出了使用语言的能力,这个似乎还没有定论(不过应该是后者的可能性更大吧?)。一方面动物不仅没有发明出语言,并且人类科学家们做过的许多教动物语言的尝试都失败了,即使有一些猩猩学会一些基本的手语,以及几十个简单的单词的情况,但是也没法组成语法结构正确的句子。而人类语言的精华之处显然并不在词汇,而在于语法结构上,可以组合、否定,可以谈论过去、现在、将来等等。也许人类的大脑是有一些特殊的结构变化才导致我们可以学习和使用语言的,相信这是人类发展史上的一个里程碑,或者说一个临界点。不过由于语言这种东西很难留下化石之类的痕迹,所以关于语言的起源和智人的进化和发展历史之间的关系似乎还没有特别的定论。在余下的内容中我会将“语言”和“文字”这两个概念混淆起来不去特意区分。
语言究竟有多有用,也许从数学里最容易找例子,因为数学其实是一套抽象的符号语言系统,能帮我们解决很多问题。我自己小时候印象最深刻的一个例子就是上初中学习到“简易方程”的时候。因为小学数学应用题很多“弯弯绕”的题目,比如我现在在网上随便搜了一个:
三筐苹果共重 110.5 千克,如果从第一筐取出 18.6 千克,从第二筐取出 23.5 千克,从第三筐取出 20.4 千克,则三筐所剩的苹果重量相同,原来三筐苹果各有多少千克?
够绕吧?可以试一试不用方程,直接求出结果。但是当学习到方程之后,这个题目瞬间变得 trivial 了:110.5 = (x + 18.6) + (x + 23.5) + (x + 20.4),得到 x = 16。此时再解小学数学应用题简直就是降维打击。
语言的出现对人类文明、社会等各方面的影响肯定是无比深远的。我现在还没有看过 linguistics 相关的书,所以只能先忽略讲一些我能想到的用途:
- 交流:最基本的作用,简单来说就是将知识(或者任意的“想法”)传递给另一个人。demonstration 和 imitation 可能是效率最低下的方式;语言是一个不错的传递方式;更高级的物种可能可以使用更直接的传递方式,比如类似心灵感应,直接将自己大脑中的某一部分 activation 传输给另一个个体,而不需要先 encode 成语言,再经过对方 decode 和 interpret。也许未来的 AI 会有这种能力,就像不同的电脑之间复制文件一样,但是可行性也有一些值得怀疑。因为似乎还不知道不同的人或者 AI 大脑运行的“系统”的 raw representation 是否是互相 compatible 的,比如我们可以想象成两个人分别是运行 Windows 系统和 Linux 系统的两台机器(或者甚至还有 32 / 64 位、small / big endian 等方面的差异),所以虽然两个系统都有各自的高效的二进制格式用来存储程序和内容,但是当要进行信息交换的时候,即便有一个直连通道可以直接进行数据复制,一个系统上的内容拷贝到另一个系统也是无法正确解析的。特别是有多个不同的系统要能够互相进行通信和交流的话,就需要一个公共的消息承载格式,比如互联网上常见的 XML 和 JSON 这类的东西其实就是起到了类似的用途,它们没有各自系统上的二进制格式那么高效,但是这个公共的格式使得所有的系统之间可以正常的交流,而将内部二进制内容 encode 成 XML / JSON 的过程就类似于我们将自己的想法组织成语言,然后对方 decode XML / JSON 的过程则类似于人类在阅读或者听到语言文字时大脑进行的理解和解释。虽然具体还未知,但是我想足够复杂的生命体个体之间应该会有一定程度的“二进制”不兼容性,所以可能这样的 encode / decode 过程总是需要的,只是所用的消息共享格式可能并不一定需要是我们人类使用的线性文字语言,或者通过声音、图像等方式作为媒介等等,也许可以统称为“脑电波直接通信”。
- 辅助思考:我们的思维能力一定程度受限于我们可以使用的语言,这应该是一个还比较常见的说法。刚才说的数学应用题算是一个辅助思考的例子。大致来说,就是即使我们不用语言来和别人交流,而只是想要有效地组织自己大脑里的想法,语言也是非常重要的。比如各种语言里都有的一个 feature 是所谓的“条件”或者“假设”,可以让我们对事情的发展进行假想的推演。这里有一个很重要的例子,就是所谓的 Theory of Mind (ToM),就是说人不仅会对自己的心理状态进行建模,并且会对身边的人的心理状态进行建模,并能通过这些模型来将行为、欲望、信念、知识等进行综合和归因。虽然“子非鱼,安知鱼之乐”,但是我们其实是一直在不停地对身边的个体进行“建模”的,我们能够感受到比如“他觉得这个会议很无聊”、“她觉得这个菜很好吃”,等等,并且,我们有能力形成这样的概念:我(通过刚才打开冰箱看了一下)知道冰箱里的布丁已经被谁吃光了(事实状态),但是我(通过观察其行为进行建模和推断)知道我室友并不知道布丁已经没有了。我的大脑里现在出现了两个 mindset,其中一个认为冰箱里已经没有布丁了(我自己),而另一个认为冰箱里还有布丁(室友的模型),人类的大脑能同时运行这样的两个(当然其实是更多个)mental state 的存在,并且能推演各自 state 下的行为等等。更加厉害的是我们还可以有高阶的 theory of mind,比如我知道你不知道我知道你偷吃了我的布丁,等等……喜欢玩狼人杀的同学应该可以想出更多更复杂和形象的例子来。目前关于非人的动物是否真正具有 theory of mind 尚有争议,虽然我也并没有具体的逻辑可以论证,但是总感觉 ToM,特别是高阶的 ToM 应该是需要语言的支撑才能得以存在的。
- 社会构建:信任、制衡、协作等等,如果没有语言来描述各种法律、道德、金融系统,人类复杂的分工协作社会结构应该是没有办法构建起来的,科学也没有办法发展和进步了。
总而言之,中心思想就是:语言非常有用。特别是我们人类在教自己的小孩学习新的知识的时候,以及甚至可能小孩自己在日常经历中学习为人处世的道理的时候,语言应该都起到了非常重要的作用。其中有很大一部分是帮助我们进行逻辑演绎。这是不是说 AI 的发展要突破当前的瓶颈,也需要某种语言或者符号结构系统的出现呢?也许这意味着需要将传统 AI 里的那些逻辑符号系统和现代 AI 的基于统计的 “intuition” 系统结合起来?
此外,我们人类在“学习”的过程中,对于语言(和事物)的理解能力在不同的阶段也是差别非常大的。反正我自己觉得,中小学语文里的那些归纳段落大意和中心思想的题目,基本靠瞎蒙,但是长大以后,理解能力上来了,再看就非常清楚了。而且我们也都很自然地默认自己小时候(或者别的小孩)“啥都不懂”,不止是知识的广度上,小孩连最基本的逻辑思维方面似乎也各种不行。如果是内容比较艰深的书籍,让小孩死啃,即使能到倒背如流,也未必能有等他长大之后再看同一本书能理解的多。那我们在长大的过程中所经历的只是简单的经验和知识的线性积累吗?亦或者是其实也经历了一次或多次临界点,实现了“升维转变”?至少有一点清楚的是:人类成长过程中的幼年、童年、少年、青春期这些阶段并不是随便按照诸如“六十年为一甲子”之类的方式定出来的,而是因为人在这些不同的阶段在生物生理上都有明显的变化,所以才被区分开来(似乎其他哺乳类动物通常没有像人类这么多个不同的阶段),也许其中的生理变化也包括大脑里的一些 fundamental 的转变?又或者并不是生理的关系,而只是人在成长过程中对“语言”的理解能力逐渐加深,突破某个临界点之后语言就并不只是被动地接受知识的工具,而可以变成自己大脑里自己总结归纳和演绎新的知识的工具,从而实现“升维转变”?
当然,这里的“语言”已经是一个非常抽象的概念了,对于 AI 而言,也许只是某些能够高阶组合、有效表达各种复杂概念的的一种“结构”,可能 AI 的“语言”并不需要和人类的“语言”有任何相似之处,不过人类各种不同语种似乎都有一些基本的共通点(比如能表达否定,条件,能区分时态等等)。也许我们需要发展出全新的算法和模型才能让 AI 突破现在的瓶颈,又也许现在的神经网络的权重海洋中已经出现了这样的结构体了,只是我们还未能解码出来?问了太多搞不清楚答案的问题,未来如何只有拭目以待啦。欢迎大家给我推荐 Language 起源方面的资料和书籍,突然有点感兴趣了呢。
如果基于 Disqus 的评论系统无法加载,可以使用下面基于 Github 的评论系统(需要使用 Github 账号登陆)。