特别节目·中文精读

弗拉基米尔·万普尼克:统计学习

Vladimir Vapnik: Statistical Learning

统计学习理论奠基人回顾支持向量机与VC理论的来路,并探讨机器学习的本质。

官方音频00:00 / --:--
中文精读由 AI 基于原始访谈改写,非官方翻译,可能存在偏差或错误;表述以原音频与官方文稿为准。说明

2018 年秋天,万普尼克(Vladimir Vapnik)在 Lex Fridman 的播客里留了一道题。

MNIST 手写数字识别,深度学习用六万个训练样本,把准确率做到 99.5%。万普尼克说,你能不能只用六百分之一的样本,做到同样的事?

条件是把不变性放进去。

这道题他放在演讲的最后一页,讲完就下台了。到今天,接的人也不多。

万普尼克是统计学习理论的主要建立者。VC 维里的那两个字母,V 和 C,其中一个就是他。支持向量机(SVM)、支持向量聚类,也都是他和团队做出来的。1936 年生于苏联,在莫斯科控制科学研究所工作多年,后来去了美国,在 AT&T 实验室、Facebook 研究部门待过,现在是哥伦比亚大学教授。论文被引用超过十七万次。

这场对话里,他几乎把当下最热的东西挨个批了一遍,但批得很讲道理。

上帝掷不掷骰子,取决于你站在哪一边

Lex 用爱因斯坦那句“上帝不掷骰子”开场,问他:你一辈子用统计的眼光看世界,那上帝到底掷不掷骰子?

万普尼克的回答很平:“你有一些不知道的事实。因为有些可能很重要的因素你不知道,看起来就像上帝在掷骰子。”

然后他把话题拐到了哲学里的两个位置:工具主义(instrumentalism)和实在主义(realism)。工具主义造的是能用来预测的规则,实在主义想搞清楚你描述的那个东西到底是什么。

他举了个例子。你写下一组力学定律,这组定律是什么?是上帝定下的、处处成立的法则,还是一个能让你算出物体下一刻位置的公式?你相信前者,你就是实在主义者;你只在乎后者,你就是工具主义者。

如果你相信这是上帝的法则,那它处处都成立。这意味着你在追求真正理解。如果你只想预测,那你看到的世界就完全是另一个样子。(万普尼克)

这个区分听着抽象,其实是整场对话的地基。后面他批评深度学习、批评理论计算机科学、批评人工智能这个词本身,用的都是这把尺子。

机器学习的目标,被写错了

万普尼克说,现在所有人做机器学习,目标函数都写成分类准确率。这是工具主义的选择。

从工具主义的角度看,两条路都能走通,大家也都这么干,因为机器学习的目标就是预测。这没错,它是一个预测工具。但机器学习的真目标,是学出条件概率。(万普尼克)

他接着说得很直接:我不需要知道某个具体情况下概率是多少,我只要一条规则,一条能做预测的规则。可要理解,就必须有条件概率。

这话听着像文字游戏,实际上是在划一条线。一条规则只告诉你答案,条件概率告诉你这个世界在这一点上长什么样。前者能刷榜,后者能迁移。

这个区别在工程上非常具体。一个只学了决策边界的模型,换一批数据分布就崩;一个学到了条件概率结构的模型,换环境还能撑住。过去十年,工业界反复在这件事上吃亏,吃了又忘,忘了再吃。

数学是上帝的语言,但人得先闭嘴

Lex 提到维格纳(Eugene Wigner)1960 年那篇《数学在自然科学中不合理的有效性》。万普尼克说,他信这个说法。

数学家去找那些神奇的结构,他们知道关于现实的某些东西。做自然科学的人盯着一个方程,想从中理解现实。同样的逻辑,如果你非常小心地看那些定义条件概率的方程,你能从中理解到的现实,比从自己的幻想里得到的多得多。(万普尼克)

他还说了一句挺重的话:人类的直觉很贫乏,很原始,看不见那些简单的情形。

那人类最好的东西是什么?他的答案是公理。“人类最好的创造是公理,剩下的是技术活,看公理把你带到哪里去。”

Lex 追问,爱因斯坦发现狭义相对论的时候,想象力难道没起作用?万普尼克的回答不太留情面:那些像“特征”一样的想象,深度学习那种方式的想象,跟问题本身没关系。你从方程出发一步步推,推出来的简单理论远远超出任何人能想象的东西。想象只是解释,解释只是幻想。

他举了自己工作里的一个例子。一步步解方程,做着做着冒出来一项,想了半天才明白,它描述的是观察点的位置,也就是你把大量信息丢掉的那个位置。人不看观察点的组成,人只看残差。这个想法简单,可从方程里推出来,比拍脑袋想到要可靠得多。

显微镜下的国王与王后

列文虎克(Antonie van Leeuwenhoek)第一次用显微镜看血液。他看到了红细胞,然后写报告寄到伦敦的皇家学会,说这是国王和王后的军队在打仗。

他看对了,但他给的解读是错的。(万普尼克)

这段话的分量在于后半句。万普尼克说,人脑也可能是这样。我们观察到的现象是真的,我们给它的解释可能是自己编的。而且编得越生动,别人越容易信。

把这个故事套到今天的 AI 讨论上,你会发现它每天都在重演。有人看到模型能做某件事,就编一套“它在推理”“它在理解”的故事;有人看到模型做错了,就编一套“它缺少世界模型”的故事。观察是清晰的,解释是编的。区别只在于,列文虎克至少把显微镜借给了别人看。

“像蝴蝶一样弹”到底传递了什么信息

万普尼克提到一句老话:跟一位好老师学一天,胜过自己苦学一千天。他问,从数学上看,一位好老师到底做了什么?

没几个人知道答案。这就是智能。可是从历史上、从大规模机器学习的实践里,我们知道老师能做的事很多。(万普尼克)

他的猜想是,老师提供的是谓词(predicate)和不变量(invariant)。老师知道现实长什么样,能把现实的形态描述出来。一旦你手里有了不变量,需要的观测数量可以降一百倍。

Lex 举了个例子:钢琴老师跟学生说,“像蝴蝶一样弹”。这句话里到底装了什么信息?语言本身好像根本没包含这些东西。

万普尼克的回答是,他相信那是一个谓词,只是他还不知道它具体是什么。“这正是智能和机器学习该干的事,剩下的都是数学技术。”

Lex 说他弹了很多年吉他,这句话确实有东西在传递。万普尼克顺着说下去:最近发现,学习有两种收敛机制。一种是以前大家一直在用的,另一种是强收敛,它可以吃谓词。你说出“像蝴蝶一样”,学生的弹法立刻就变了。信息是即时生效的。

他还有一句话很值得记下来:每一个谓词都是为了让可容许集变小而发明的。

会游泳的鸭子和不会下棋的鸭子

“如果它看起来像鸭子,游起来像鸭子,叫起来像鸭子,那它大概是只鸭子。”

万普尼克说这句话精确得吓人。三个谓词:看起来像鸭子、游起来像鸭子、叫起来像鸭子。每一个都是合法谓词。

他也完全可以说“跳起来像鸭子”。这个谓词一样合法,一样语法正确,可它一点用都没有,因为鸭子、鸟、动物之间在跳跃这件事上没什么区别,它不提供任何信息。

那么问题来了:怎么判断一个谓词有没有用?

到目前为止,现有的机器根本不用谓词。你给工业界几十亿条数据,他们大概也只用三个谓词。(万普尼克)

机制是这样的。你手上有海量候选函数,训练数据告诉你“鸭子应该长这样”,于是你砍掉所有不长这样的函数,集合小了一圈。第二个谓词进来,再砍掉一批。几轮下来,剩下的函数不多了,从里面挑表现最好的那个。

这就是谓词在数学上的全部功能:缩小可容许函数集(admissible set of functions)。

这件事解释了为什么人不需要那么多例子。你只见过几只鸭子,就能认出鸭子,因为别人早就把“游起来像鸭子”“叫起来像鸭子”这两个谓词塞给你了,你只需要很少的样本去完成最后的挑选。

学习问题里最难的一半,被教科书划掉了

到这里,VC 维该出场了。

Lex 请他向外行解释 VC 维。万普尼克说,你可以把它想成从一个可容许函数集里挑出函数的能力。这个集合可以很大,大到包含所有连续函数,那它就废了,你根本没有那么多样本去挑。它也可以很小,小到里面的函数彼此差别不大。他说他更愿意把这个性质叫“多样性”(diversity),而不是“容量”。

目标是把一个 VC 维小、又包含好函数的可容许集造出来,然后用很少的观测把那个函数挑出来。这就是学习的任务。(万普尼克)

接下来是整场对话里最锋利的一句。

经典统计学习理论里,可容许函数集是给定的。每本教科书都这么写。可造出这个集合,恰恰是整个问题里最难的那部分,它被排除在讨论之外了。(万普尼克)

这句话值得停下来想一会儿。一百年来,统计学习理论在给定的函数集里把误差界算得漂亮至极,可工程上真正决定成败的那一步,是怎么设计这个集合。所有做特征工程、做架构设计、做归纳偏置的人,干的都是这一步,而这一步在理论里是空的。

具体怎么造?靠不变量。你算出函数在训练数据上的平均值,再算出它在模型上的期望,两者应该相等。这种约束不针对某一个函数,它要求集合里所有函数都满足。这就是他说的强收敛机制。传统统计学习用的是另一套东西,一致大数定律(uniform law of large numbers)。他特意强调,这两者差别巨大。

差别在信息量上。一个样本能提供超过一 bit 的信息,因为你说“这是 2”,等于砍掉了一半候选函数。而一个谓词能砍掉的远不止一半。从形式上看,“看起来像鸭子”这句话携带的比特数,大到无法从样本里统计出来。

他对深度学习的评价很不客气

万普尼克讲了个丘吉尔的例子。丘吉尔写二战史,开头描述旧时代的规矩:战争结束,各位君王聚在一起,他们几乎全是亲戚,坐下来商量怎么建立和平,最后能达成协议。一战不一样,普通公众上了台,贪婪压过一切,所有人都看得出来这不是和平,和平只能维持二十年,因为坐在谈判桌前的不是专业人士。

他说,华盛顿的数学家看问题看得很深。而计算机科学家大多不懂数学。

他们发明了一堆 bla bla bla 的解释,比如深度学习。为什么它有效?他们不知道。做深度学习的人不懂数学,也不懂神经元。它就是一堆函数。你愿意的话,叫它分段线性函数,那就在分段线性函数的类里做。可他们发明了一些词,然后用这些解释去论证优势,而这些解释大多是错的。最后他们去搬大脑,而没有人知道大脑里到底在发生什么。(万普尼克)

他提到一个叫“代表性”(representativity)的结果,说学习问题的最优解落在浅层网络里,不在深层网络里。这个说法在圈内争议很大,但它是从定理里出来的,不是从情绪里出来的。

Lex 试着往回拉:你不觉得这件事本身很美吗?它居然真的跑通了。

万普尼克说,你说的美是解释的美。他补了一句很清醒的话:深度学习好用这件事本身没错,问题在于它用的训练数据是几十亿条。人类不需要这么多。

AlphaGo 不是一个难题

Lex 问的是 AlphaGo。用神经网络估计棋盘价值、估计落子概率,赢下人类最强棋手,这件事不让你惊讶吗?

万普尼克说,“你的解释是估计质量。是的。”然后补了一句:“这不是一个很难的问题。”

Lex 说,那我们只是经验上发现它不难。万普尼克说:“对,我没法反驳你。”

这段对话很短,但他其实是在说一个方法论上的事。围棋被人类当成智力的高峰,很大程度上是因为人类自己在棋盘上投入了几千年,训练出了一套精巧的直觉。机器绕过了这套直觉,用的是另一种东西。机器赢棋这件事证明不了它有多聪明,只说明人类给围棋加了不少神秘感,而机器没买这个账。

他自己也承认,这套判断没法拿到实证。所以他把话收在了一个可操作的地方:深度学习能做的事,用一百倍更少的样本也能做,只要你有好的不变量。这是可以验证的,那就去验证。

智能也许不全在颅骨里面

Lex 提到了图灵。图灵在 50 年代那篇论文里,其实完全清楚模仿游戏不等于思考。他心里明白得很,可他故意把问题换成了模仿问题。换完之后,这问题就有了可操作性。

万普尼克说,他不确定智能只在我们内部。他举了一个观察:非欧几何在 19 世纪被好几个人几乎同时搞出来,罗巴切夫斯基、鲍耶、高斯,前后差了十年左右。类似的事在科学史上反复出现,总有一个十年左右的窗口,不同地方的人独立做出同一个东西。

所以也许我们把智能当成只存在于内部的模型是错的。这是我们的解释。也许它跟某种世界层面的智能有连接,我不知道。(万普尼克)

Lex 顺着说,你像是在插线,往一个大网络里贡献节点。万普尼克说:“对,就是这样。”

这段话听起来玄,但放在他整场的立场里其实很一致。他一直在说:我们的解释可能是错的,可能是我们自己编的故事。把智能框在颅骨里,也是一种解释。

最坏情况和最好情况能描述,中间不行

Lex 问他对 P 与 NP 和计算复杂度的看法。万普尼克说这问题有意思,然后讲了另一件事。

1990 年前后,一批苏联学者到了美国。他说这些人既不懂统计,也不懂这个领域的历史。当时苏联已经出了两本专著,美国人不知道,等于重新学了一遍。有人告诉他,这批人会从最坏情况入手,会搞出一团混乱。

“但至今也没有。因为更合逻辑的做法是:你只能做你的数学允许你做的事,前提是这件事有清晰的理解和清晰的描述。复杂度理论就是沿着这条线引入的。”

接着是那句关键的话:最坏情况和最好情况都能写成一般的形式,中间那一段不行。

你没法描述中间的情形,因为它不够一般。你只能描述边界,边界很清楚,可以建模。可你不可能为每一个新情况建一个模型。(万普尼克)

Lex 用了个挺妙的类比:这就像用一个人一辈子干过最坏的事和最好的事来评价他,中间那些全不算。万普尼克没完全接受这个类比。在他看来,中间那些同样重要,只是没法一般化地描述。你能描述的是极端,极端有结构,中间没有。

这话对做工程的人其实很有用。你评估一个系统,最坏延迟和最好性能都能测、都能算、都能写进 SLA。可真实世界的表现落在中间,而那一段你只能用统计去看,统计又需要大量样本,样本又贵。整个循环就卡在这里。

二十年前,没人信

90 年代中期,万普尼克和团队提出支持向量机。他记得很清楚:“当时除了一个人,没人相信。”

二十年后,它成了时尚。核方法、SVM,到处都是。

Lex 问,你做这件事的时候,有没有一种“这东西是对的”的感觉?万普尼克说,有。“我们立刻就认出来,它会一直留下来。”

然后他说,这次的不变性理论,感觉一模一样。

因为我有证明,不存在另外的机制。你能做的只是一些表面上的改进。可把不变性和统计学习放在一起,你还能把“智能是什么”给形式化出来,并且把它和技术部分分开。(万普尼克)

这是他整场最自信的一句话,也是最需要被检验的一句话。一个理论家说出“我证明了不存在另外的机制”,通常意味着他把某种框架的边界画得很死。历史上这类断言有对有错,所以真正值得看的,是他给出的那条可验证的挑战:MNIST,六百分之一的样本,把不变性放进去。

他做研究时最快乐的时刻

Lex 问,回头看,作为研究者最快乐的时刻是什么?他特意限定了一句:别谈对社会的冲击,只说那天你心里有多爽。

万普尼克说,每次你搞明白一点东西的时候。然后他说了一段很朴素的话。

大部分时间我都是错的。你得一遍又一遍地回去,对自己诚实。别急着解释,别搞出一堆 bla bla bla,试着弄清楚这件事跟 ground truth 到底有没有关系。(万普尼克)

Lex 问,那你允许自己为“可能发现点什么”而兴奋吗?他说允许,但必须反复检查。跟 ground truth 有关的兴奋是暂时的,你得再验证一次。

关于诗和音乐,他说 ground truth 到处都能看到。哲学家有时候说得很深,有时候完全跑题。音乐里也有 ground truth,是结构。古典的、清晰的、简单的结构。你看着它,跟看一组公理展开成一个理论时的感觉是一样的。

这段大概是整场最不像技术讨论的部分,但它其实解释了万普尼克为什么一直对“解释”这么警惕。他见过真正的结构长什么样,所以对仿制品格外敏感。

他留下的两个开放问题

第一个问题:为什么一位老师比另一位老师好?

这件事跟教育学没关系。他把这件事拆得很细:老师说的话里,有些是在重复课本上的内容,有些是随口的评论,有些是他自己对这门学问的哲学。到底哪一部分起了作用?如果一位老师只会说“像鸭子一样跳”,他提供的信息量是零。如果他说“像鸭子一样游”,信息量可能很大。判断这两者的差别,就是判断谓词的好坏。而判断谓词的好坏,就是智能本身。

人们甚至还没开始理解智能。要理解智能,第一件事是理解老师到底做了什么。(万普尼克)

第二个问题,就是开头那道题。他自己给了思路:给数字加上对称性的谓词,水平对称、垂直对称、对角对称,还可以有别的东西,比如整幅图的明暗程度。这些谓词一层层往上加,可容许集一层层缩小,需要的样本数量就一层层下降。

Lex 反问了一个很实在的问题:要区分 2 和 3,我好像得先有十几年的童年。跟小孩玩、上学、被父母吼、走路、跳、看鸭子,然后才能生成正确的谓词。

万普尼克说了一句很硬的话:“我很确定,你必须知道一些比数字更多的东西。”

也许是几种描述语言,也就是数字的组成元素。我在说对称性,说几何性质,说一些抽象的东西。我还不知道那是什么。这就是智能问题。(万普尼克)

所以他把整个领域切成了两半。一半是统计的,只要你把谓词交给我,我就能用很少的样本把活干完,这部分已经准备好了。另一半是造谓词的,没有人知道怎么做,甚至没有人正式把它当成一个问题提出来。

过去十年,整个行业把资源几乎全压在前一半上。后一半被叫做“特征工程”,然后被大规模预训练和 Scaling Law 糊过去了。万普尼克在 2018 年说这件事的时候,语气是有点孤独的。

可以立刻用起来的几件事

  • 模型效果不好时,先别急着加数据。问一句:这个问题里有什么不变量?对称性、守恒量、单调性、某种等价关系,任何能砍掉一半候选假设的东西,都比十万条新样本值钱。
  • 把自己的任务写清楚:你要的是规则,还是条件概率?要规则就去做分类器,要理解就去建模分布。这两个答案指向完全不同的技术路线,混着做是最常见的失败来源。
  • 用一个具体的标准检验你的特征:这个特征能不能让候选假设集显著变小?如果不能,它就是在说“跳起来像鸭子”,语法正确,信息量为零。
  • 每写一段对模型行为的解释,回头检查一次:这是观察,还是故事?列文虎克看见了红细胞,这件事是真的;国王和王后打仗,那是他编的。
  • 评估系统时,最坏情况和最好情况都能量化,中间那段不能。别拿边界上的漂亮数字去承诺平均表现,那一段只能靠统计,统计需要样本,样本要花钱。
  • 遇到一个热门概念,做一次翻译练习:把所有解释性的词去掉,剩下的数学是什么?如果剩下的是“分段线性函数”,那就用分段线性函数的语言去讨论它。
  • 找一件你长期做错的事,像万普尼克说的那样,一遍又一遍地回去。对自己诚实的意思是:不给自己编一个听起来合理的解释就收工。

本集资源与出处