第一章:当机器学会睁开眼睛
2016年3月12日,韩国首尔,四季酒店。下午3点刚过,李世石从对局室走了出来,脸上写满了疲惫与难以置信。这位曾16次获得世界冠军的围棋九段,刚刚输掉了与AlphaGo的第三局比赛。此刻,屏幕上显示的比分是0比3——这台由DeepMind研发的计算机程序,已经在三局比赛中连下三城,提前锁定了五番棋的胜利。
消息瞬间传遍了全世界。BBC中断了正常节目播出,CNN滚动播报这条新闻,Twitter上"#AlphaGo"的标签在短短几分钟内登上了全球热搜榜首。《自然》杂志在第二天发表的社论中写道:“这是一个重要的时刻——人工智能在一项被认为是人类智慧最后堡垒的活动中取得了胜利。”
在场的记者们蜂拥而上,试图采访这位被“击败”的围棋大师。然而李世石说了一句意味深长的话:“这不是人类输了,而是人类输了。我仍然认为人类的直觉和判断力是独特的,但今天,我输给了AlphaGo,但我没有输掉人类的尊严。”
围棋一直被视为人工智能最难攻克的领域之一。这项拥有三千多年历史的策略游戏,其可能的棋局数量超过了宇宙中原子的总数。传统的人工智能方法——即通过穷举所有可能的走法来选择最优策略——在这里完全失效。AlphaGo的核心创新在于,它不仅仅在下棋,而是在“感觉”棋局。这种“棋感”来自深度学习——通过分析数百万盘人类对局和数千万盘自我对局,AlphaGo学会了识别棋盘上的模式,并凭直觉判断每一步的价值。
这听起来几乎与人类的视觉认知过程如出一辙:我们看到棋盘,脑海中浮现出各种可能的变化,选择看起来最有希望的那一步。但这里存在一个微妙却深刻的区别:AlphaGo的“棋感”究竟是什么?它是否真的“看到”了棋盘,理解了围棋的美妙?还只是学会了将特定棋形映射到特定走法的复杂函数?
这个问题的重要性远超围棋本身。在李世石输掉比赛的同一天,在地球的另一端——美国旧金山的Mission District,一群OpenAI的研究员们正在讨论一个更加根本的问题:机器能否像人类一样,真正“看见”这个世界?
看见与理解:两种不同的视觉
在探讨这个问题之前,我们需要区分两个经常被混为一谈的概念:“看见”(seeing)和“理解”(understanding)。看见是光信号被视网膜接收并转化为神经信号的过程,是物理层面的信息获取;理解则是大脑对所接收信息进行解释、关联和推理的过程,是认知层面的意义建构。
人类学家大卫·乌楠(David Howes)曾说:“视觉不仅仅是眼睛的功能,更是心灵的功能。”我们看见一个苹果,不仅仅是识别出特定的颜色、形状和纹理,更是在心中激活了一个完整的概念网络——它是红色的、圆的、可以吃的、来自树木的、有重量的、甜的、可以榨汁的……这个网络与我们的过往经验、情感记忆和社会知识紧密相连,构成了我们对“苹果”这一概念的完整理解。
当代认知科学用“涌现”(emergence)来描述这种现象:理解并不是从外部输入的,而是从大量的感知经验和语言知识中涌现出来的。当我们看到一只猫时,视觉皮层识别出它的轮廓和纹理,颞叶皮层激活“猫”的概念和相关的知识网络,也许还会激活语言皮层中的“cat”或“猫”这些词汇,甚至激活听觉皮层中猫叫声的记忆。这种多层次、多通道的协同激活,才构成了我们真正的“看见”。
长期以来,计算机视觉一直困于“看见”而无法“理解”的困境。早期的计算机视觉系统可以识别出图像中的边缘、角点和纹理,却无法理解这些特征组合起来意味着什么。2010年代的深度学习革命带来了突破——卷积神经网络(CNN)可以准确地识别ImageNet数据集中的1000类物体,准确率甚至超过了人类。但这种成功背后隐藏着一个根本性的问题:这些系统真的“理解”了它们所看到的东西吗?
还是仅仅学会了将像素模式映射到标签的复杂函数?
像素的囚笼:计算机视觉的艰难起步
要理解为什么“看见”与“理解”之间的鸿沟如此难以逾越,我们需要回顾计算机视觉的发展历程。这是一段从雄心勃勃到屡屡受挫、从符号推理到数据驱动的范式转变史。
1966年,MIT的西蒙·派珀特( Seymour Papert)启动了一个名为“夏季视觉项目”(Summer Vision Project)的研究计划。他的目标是,在暑假期间开发出一个能够从背景中分割出前景物体的系统。这个目标现在看来似乎有些可笑——在计算机视觉已经成为价值数百亿美元的产业的今天,一个本科实习生花两个月就能完成的任务,竟然曾被当作一个严肃的研究课题。但在当时,这个项目代表了计算机视觉研究的全部雄心:让机器像人类一样看见和理解世界。
这个项目的思路体现了那个时代人工智能研究的核心信念:智能可以通过明确的规则和逻辑来实现。如果我们能够精确地描述一个物体的特征——它的边缘、形状、颜色——并将这些特征编码为规则,那么计算机就应该能够识别它。这种思路后来被称为“符号主义”(symbolicism),它相信知识可以被显式地表示为符号和规则,推理就是对这些符号和规则进行操作的过程。
然而,真实世界的复杂性很快就击碎了这种乐观。同一把椅子可以有无数种形状、材质和颜色;同一个物体在不同光照、不同角度、不同背景下会呈现出完全不同的像素模式;物体之间会相互遮挡,形成无数种意想不到的组合。手工编码的规则很快变得无穷无尽,而且永远无法覆盖所有可能的情况。
这种困境在1980年代催生了另一个研究方向:光流法(optical flow)和运动分析。研究者们意识到,如果能够让计算机分析物体在序列图像中的运动模式,也许能够绕过静态识别的困难。一些系统确实取得了不错的效果,但它们仍然无法回答一个根本性的问题:识别出运动模式本身意味着什么?
转折点出现在1990年代末。2001年,保罗·维奥拉(Paul Viola)和迈克尔·琼斯(Michael Jones)发表了著名的Viola-Jones人脸检测算法。这是一种基于滑动窗口的方法,通过在图像的不同位置和尺度上扫描,寻找可能包含人脸的区域。每个区域都会经过一个级联的分类器链,如果某个区域被判定为“非人脸”,就会立即被拒绝,只有通过所有层级的区域才会被标记为“人脸”。
Viola-Jones算法的关键创新在于,它使用了一种叫做“积分图”(integral image)的数据结构,使得特征计算变得异常快速;使用了叫做“AdaBoost”的机器学习方法,自动从大量候选特征中选择最有判别力的那些;使用了叫做“级联”(cascade)的结构,将简单的分类器串联起来,实现了速度和准确率的平衡。
这个算法的一个著名应用是富士数码相机中的“笑脸检测”功能。当你举起相机对着人群时,相机会自动寻找并对焦在人脸上,如果检测到有人在笑,还会自动按下快门。在2000年代初,这个功能让无数普通消费者惊叹不已——机器竟然能够“看到”人脸!
但仔细想想,这种“看见”与人类的视觉理解仍然有本质的不同。相机的算法并不知道什么是“人”。它只是学会了将某些像素模式——肤色、眼睛的位置、鼻子的形状——映射到“人脸”这个标签。它不知道人脸是身体的一部分,不知道人脸承载着表情,不知道人脸对于社会交往的重要意义。像素囚笼的困境仍然存在,只是被绕过了,而不是被打破了。
神经网络的复兴:从冷门到主流
真正打破像素囚笼的,是卷积神经网络(Convolutional Neural Network,CNN)。这是一种受生物视觉系统启发的深度学习架构,通过层层堆叠的卷积层、池化层和非线性激活函数,能够自动从原始像素中学习有用的特征表示。
卷积神经网络的历史可以追溯到更早的神经科学研究。1959年,神经生理学家大卫·胡贝尔(David Hubel)和托尔斯滕·维塞尔(Torsten Wiesel)发现了猫的视觉皮层中存在着两类细胞:简单细胞(simple cells)负责检测局部边缘,复杂细胞(complex cells)负责整合这些边缘信息形成更复杂的形状表示。这一发现揭示了视觉信息处理是逐层抽象的过程:底层检测简单的局部特征,高层组合这些特征形成整体表征。
受此启发,日本学者福岛邦彦(Kunihiko Fukushima)在1980年提出了“神经认知机”(Neocognitron)。这是第一个具有层次结构的神经网络模型,包含了S细胞(模拟简单细胞)和C细胞(模拟复杂细胞)。S细胞负责特征提取,C细胞负责对特征的位置和微小形变进行容错。神经认知机在手写字符识别任务上取得了不错的效果,但它的训练方法——无监督的竞争学习——效果有限,无法充分发挥层次结构的潜力。
1989年,杨立昆(Yann LeCun)在贝尔实验室开始将反向传播算法(backpropagation)应用于卷积神经网络的训练。他的目标是识别银行支票上的手写数字。这是一个实际且有价值的问题:每年有数百万张支票需要处理,如果能够自动识别手写数字,就可以大大提高处理效率。
在接下来的几年里,LeCun与他的同事们不断完善这个系统。1998年,LeCun、莱昂·博图( Léon Bottou)、约书亚·本吉奥(Yoshua Bengio)和帕特里克·哈夫纳(Patrick Haffner)共同发表了LeNet-5论文,这是第一个成功商用的卷积神经网络。LeNet-5包含7层网络,约6万个参数,可以在实时状态下识别支票上的手写数字,错误率仅为1%。
这在当时是一个了不起的成就。LeNet-5被美国联邦储备委员会和多家银行采用,每天处理数百万张支票。但这个成功的代价是,它只能在非常特定的环境下工作——标准化的手写数字,均匀的背景,一致的书写风格。一旦场景变得稍微复杂一点,比如自然场景中的物体识别,LeNet就无能为力了。
更糟糕的是,卷积神经网络在当时的人工智能学术界并不受欢迎。主流观点认为神经网络是“炼金术”——没有坚实的理论基础,训练过程不稳定,效果难以解释。相比之下,支持向量机(Support Vector Machine,SVM)才是更优雅、更理论化的方法。在1990年代到2000年代初的机器学习领域,神经网络几乎被边缘化。
“那时候去参加机器学习会议,我们就像是二等公民,”LeCun后来回忆道,“人们会礼貌地听完你的报告,然后说'这很有趣,但我们不太相信这种方法'。”
但仍有一些人在坚持。杰弗里·辛顿(Geoffrey Hinton)是其中最执着的倡导者之一。1986年,辛顿与大卫·鲁梅尔哈特(David Rumelhart)和罗纳德·威廉姆斯(Ronald Williams)共同发表了反向传播算法的论文,奠定了神经网络的理论基础。此后,他一直没有放弃这个领域,持续研究玻尔兹曼机、分布式表示和自编码器等模型。
“我一直相信,神经网络最终会成功,”辛顿在多年后的一次访谈中说,“因为它们模拟了大脑的工作方式。大脑是一个证明——智能可以通过学习获得,而不是通过手工编码规则。”
2004年,辛顿获得了加拿大高级研究院(CIFAR)的资金支持,启动了“神经计算与自适应感知”(Neural Computation and Adaptive Perception,NCAP)项目。他邀请了LeCun和当时还在蒙特利尔大学工作的本吉奥加入。这个小小的研究团队后来被称为“深度学习教父”,他们的合作为即将到来的深度学习革命奠定了基础。
ImageNet时刻:数据驱动的胜利
真正的转折点出现在2012年,主角是一个叫做ImageNet的竞赛。
ImageNet由斯坦福大学的华裔科学家李飞飞(Fei-Fei Li)创建于2007年。李飞飞的直觉是,视觉智能的关键在于数据——大量的、真实的、标注过的数据。当时的计算机视觉研究缺乏的不仅仅是算力,更是高质量的大规模数据集。研究者们通常在小规模数据集上训练和测试模型,比如包含数万张图像的Caltech-101或Caltech-256,但这些数据集太小、太简单,无法反映真实世界的复杂性。
李飞飞决定构建一个前所未有的图像数据库。她的团队通过互联网收集了数以百万计的图片,并使用亚马逊的众包平台(Mechanical Turk)雇佣了大量人工标注员,为每张图片打上标签。这是一项艰巨的工作——到2009年,ImageNet已经包含了超过1500万张图片,涵盖了22000个类别,是当时世界上最大的图像数据库。
为了推动算法研究,李飞飞与她的团队在2010年开始举办ImageNet大规模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)。参赛者的任务是训练一个能够在ImageNet的测试集上识别1000个类别的模型。评估指标是top-5错误率——即模型正确标签不在前5个预测结果中的比例。
2010年的首届比赛,传统方法仍然占据主导地位。来自NEC-UIUC团队的林希(Xiaoou Tang)和团队使用了复杂的SIFT特征和SVM分类器,取得了不错的成绩。但这种方法的瓶颈已经很明显:手工设计的特征无法捕捉真实世界的复杂性,性能提升越来越困难。
2011年,施乐研究中心的团队改进了他们的特征表示方法,获得了更好的结果。但真正的突破尚未到来。
2012年,一切都变了。
来自多伦多大学的三人团队——亚历克斯·克里泽夫斯基(Alex Krizhevsky)、伊利亚·苏茨克弗(Ilya Sutskever)和杰弗里·辛顿——提交了一个叫做AlexNet的模型。这是第一个深度卷积神经网络,包含8层网络、60万个神经元和6000万个参数。在ImageNet的120万张训练图像上,AlexNet的训练需要数天时间,使用了当时还算新鲜的GPU加速技术。
结果震惊了整个计算机视觉领域。AlexNet的top-5错误率仅为15.3%,比第二名低了整整10个百分点——在计算机视觉竞赛的历史上,这种幅度的领先几乎是闻所未闻的。更重要的是,AlexNet使用的技术与传统方法完全不同:它没有任何手工设计的特征,没有复杂的图像预处理,只有端到端的学习。
AlexNet的成功有几个关键因素。首先是GPU计算。克里泽夫斯基和苏茨克弗发现,游戏显卡(NVIDIA GTX 580)中的并行计算单元可以大幅加速卷积神经网络的训练,使得在合理时间内训练如此大的网络成为可能。其次是ReLU激活函数。传统的sigmoid和tanh函数在深层网络中会导致梯度消失问题,而ReLU(线性修正单元)简单、高效,大大加快了训练速度。第三是数据增强和Dropout正则化技术。这些技术有效地防止了过拟合,使得模型能够从有限的训练样本中学习到泛化的特征。
2012年的ImageNet竞赛成为了一个历史性的时刻。此后的每一届比赛,冠军都被卷积神经网络牢牢占据,错误率逐年下降:2013年是11.7%,2014年是6.7%,2015年微软研究院的ResNet模型更是将错误率降到了3.6%,首次在ImageNet上超越了人类的表现(约5%)。
ImageNet竞赛的使命已经完成。2015年之后,继续举办这个竞赛的意义已经不大了——深度学习证明了它在这个任务上的有效性,比赛变成了军备竞赛,而不是探索未知。这一年,ImageNet挑战赛正式宣布停办,一个时代落下了帷幕。
看见但不理解:视觉AI的成功与困境
ImageNet竞赛的终结标志着计算机视觉的一个阶段性的胜利。深度学习证明了自己在视觉识别任务上的强大能力,卷积神经网络成为了计算机视觉的标配。随之而来的是一波商业化浪潮:人脸识别技术被应用于安防、支付、门禁等场景;自动驾驶的视觉系统让汽车能够识别行人、车辆、交通标志和车道线;医学影像AI帮助医生从X光片和CT扫描中检测疾病;图像分割和风格迁移算法被应用于美颜相机和艺术创作……
但在这片繁荣之下,隐藏着一个根本性的困境:这些系统真的“理解”了它们所看到的东西吗?
ImageNet竞赛的评估指标——类别识别准确率——实际上并不能反映真正的视觉理解。ImageNet的1000个类别都是离散的语义标签,比如“金鱼”“波音737”“意大利美食”“听诊器”。但真实世界的视觉信息远比这些标签丰富得多。
试想一下,一个系统能够以99%的准确率识别ImageNet中的所有类别,却可能无法回答以下问题:这幅图中各个物体之间是什么关系?这些物体正在发生什么事件?场景中的人物有什么意图?对象的颜色、材质、状态如何?这些问题需要的是更深层次的语义理解,而不仅仅是像素到标签的映射。
“看着但不理解”的现象在视觉AI中非常普遍。2014年,马里兰大学的计算机科学家德梅特里·马拉塔斯基(Dimitri Malama-tis)创建了一个叫做Visual Genome的数据集,其中包含了超过10万张图像的详细描述和问答对。这些问答对不仅包括“图中有什么”这样的简单问题,还包括“为什么”“怎么做”“如果……会怎样”等需要推理的问题。
马拉塔斯基发现,即使是当时最先进的视觉系统,在这些需要推理的问题上也表现糟糕。例如,当被问到“巴士是什么颜色”时,系统可以准确回答“黄色”;但当被问到“如果巴士开走了,站台会变成什么样”时,系统就无法给出合理的回答。
这种失败揭示了视觉AI的一个根本问题:当前的系统缺乏常识和推理能力。它们能够识别图像中的物体,却无法理解物体之间的关系、场景的动态变化、以及事件之间的因果链条。更重要的是,它们不知道自己不知道什么——这些系统没有元认知能力,无法评估自己答案的可靠性。
另一个问题是,当前的大多数视觉系统都是针对特定任务训练的,缺乏泛化能力。一个训练用于识别ImageNet类别的模型,不能直接用于医学影像分析或自动驾驶,即使这些任务都需要视觉理解。这种“碎片化”的现象反映了视觉AI的另一个困境:缺乏统一的、能够跨任务迁移的视觉表示。
人类的大脑可不是这样工作的。人类的视觉系统与语言系统、记忆系统、运动系统紧密耦合,形成了一个统一的、多功能的智能架构。当我们看到一只猫时,视觉系统识别它的形态,语言系统激活“cat”或“猫”的词汇,记忆系统检索与猫相关的知识和经验,运动系统可能会激活伸手抚摸的动作意向。这种多通道的协同激活,构成了我们对“猫”这一概念的完整理解。
而计算机视觉呢?它被刻意地与其他模态隔离开了。计算机视觉研究视觉,自然语言处理研究文本,语音识别研究声音。它们各自为战,进步神速,却从未真正融合。
融合之路:从分离到统一
2010年代中期,一些先驱者开始尝试打破这种隔离。最早的跨模态探索之一是图像描述生成(image captioning)任务:给定一张图像,生成一段描述图像内容的文字。
这个任务看起来简单,实际上却极具挑战性。它需要计算机同时理解视觉信息和语言信息,并将两者对齐。2014年,谷歌的奥里奥·维尼亚斯(Oriol Vinyals)团队与密歇根大学的团队分别提出了基于序列到序列(sequence-to-sequence)模型的图像描述系统。这些系统使用卷积神经网络提取图像特征,使用循环神经网络(RNN)生成描述文本。
但真正的突破来自注意力机制(attention mechanism)的引入。2015年,纽约大学的陈尔俊(BaiJU Chen)团队提出了“看图说话”(Show, Attend and Tell)模型,首次将注意力机制应用于