ARTICLE · 1060744
《AI 江湖七十年》卷二 · 第 5 回|1989 · LeNet:他 1989 年就用上了今天的卷积网络,可没人信

贝尔实验室里的一个“怪人”
上世纪八十年代末,贝尔实验室。这里是电话的故乡、晶体管的故乡,也一度是全世界最舍得花钱养聪明人的地方。杨立昆(Yann LeCun)就在这儿,捣鼓一件当时没多少人看得上的活——让机器认出手写数字。
为什么是数字?因为邮局要用。成堆的信件上,邮编是手写的,机器得认出来,信才分得下去。在这之前,认字靠人手工设计特征:量一量笔画角度,数一数圈圈多少,再拼拼凑凑。活多,还常常认错。LeCun 想找条新路。
一块小窗,在图上滑
他找的这条路,叫卷积。要讲它,先得知道老办法有多笨。
一张手写数字的图,少说几百上千个像素。老式的全连接网络,是让图上每一个点,都跟下一层的每一个神经元单独连一根线。图一大,线就海了去了——一百万个像素的图,接上一千个神经元,那就是十万万根线,每根线上还都挂着一个要练的参数。更要命的是,这么连,等于逼网络承认“左上角这个点”和“右下角这个点”是两码事。可图像偏偏不认这个理:一条竖线画在左边还是右边,本质上还是同一条竖线。这种连法,又笨,又费。
卷积换了个思路:不逐点连,而是拿一块小窗,在整张图上从上到下、从左到右地滑过去。
这块小窗,行话叫卷积核。你可以把它想成一枚专门认某种花纹的小印章。印章上刻着一小组权重——对,就是上一回说的那种要一层层练出来的线。比方有一枚印章,专门认“一小段斜着的边”:把它盖到图的某个位置,窗口里盖住的每个像素,跟印章上对应的权重乘一乘、加一加,得出一个数。数越大,说明这一小块越像那枚印章要找的花纹;数贴着零,说明这里平平无奇,没那花纹。窗口滑到哪儿,就盖到哪儿;滑遍全图,得到一张新的图。这张图不画像素,画的是整张图里“哪儿有这种花纹、有多像”,所以叫特征图。
这套滑法,妙在两处。
一是省。全连接是每个点对每个神经元都拉一根线,卷积却是同一枚印章全图通用——印章上就那么几个参数,滑遍整张图,参数还是那几个。一百万个像素的图,用一枚 3×3 的印章,要练的参数是九个,不是十万万个。这一刀下去,砍掉的是好几个数量级。
二是通。同一枚印章在全图滑一遍,等于在说“这花纹,不管落在左上角还是右下角,都算数”。这正是图像的脾气——一只猫挪个位置,还是猫;哪怕它挪到画面角落,那枚认“猫耳朵”的印章照样能盖中它。这份“位置换了也认得”,后来有个正经名字,叫平移不变性,是卷积天生带来的好处。
一层滑完,再叠一层。这里头还藏着卷积的另一半门道:层次。靠前的层,印章小,认的是最细碎的花纹——一小段边、一个小角;叠到靠后的层,它把前面认出的边和角,拼成更大的花样——眼睛、耳朵、一张脸的轮廓。跟上一回的多层网络一个道理,越往深走,认的东西越成块。层与层之间,还常夹一道“池化”:把特征图缩小一圈,每个小方块里只留最明显的那个信号。这么干,一来省算力,二来图稍微挪一点、歪一点,缩完之后几乎没差别,认起来更稳。
这套“卷积—池化—卷积—池化”的骨架,就是后来卷积神经网络(CNN)的原型。那台机器,后来被叫作 LeNet。(注:1989 年那一版常被称作 LeNet-1,人们最熟悉的 LeNet-5,要到 1998 年才定型。)


为什么没人买账
说白了,生错了年代。
第一,算力不够。这样一台网络,放到当年的机器上跑,慢得让人绝望;想练大一点,机器先趴下。第二,样本不够。它得靠海量标好的图来喂,可那会儿连一个像样的手写数字库,都得自己一张张去攒。第三,风气不对。那几年符号派正当红,大家更愿意相信“把规则写清楚”那条路,神经网络算旁门。
于是这件神兵先干了一件小事:帮一些银行认支票上的数字。据相关方面的说法,它后来真读过相当一部分美国支票,算是小有斩获。但在更大的江湖里,它更像一位睡着的公主——明明已经长成了,却没人来叫醒她。
这一睡,就是二十多年。
下一回,我们先把镜头挪开一会儿。因为就在同一个年代,另一条路上的人,正靠着“把规则写死”的笨办法,赢下了世界上最聪明的一盘棋——那盘棋,一度让全世界以为:AI 的时代,要由符号派来开创。

资料来源:杨立昆等在贝尔实验室关于手写数字识别的相关论文(1989 年起);LeNet-5 论文(1998 年);贝尔实验室公开资料。