← 返回第 28 天导读(大人版) 下载打印:PDF 简体 · PDF 繁體 · 繁體網頁
255 0 0
第 28 课

电脑看图的基本功

本课讲的不是一篇文章,而是一门课。2015 年,斯坦福大学的李飞飞和她的学生 Karpathy 开了一门教电脑看图的课,叫 CS231n。他就是第 1 课的作者。这一课是“看图 AI”的总复习。

适合 10 岁左右约 40 分钟需要:方格纸、彩笔、20 张小纸片、1–2 位同伴

1热身:数字里藏着一幅画

下面是一张写满数字的表格。把写着 1 的格子涂黑,写着 0 的格子不涂。涂完看看,藏的是什么?

0110110
1111111
1111111
0111110
0011100
0001000

我涂出来的是:
提示:从第 1 行开始,一行一行涂。

在电脑眼里,一张图就是一大张数字表格。CS231n 这门课,就是教电脑从这堆数字里认出东西。

2电脑眼里的图片:一大张数字表格

把照片放大很多倍,会看到一个个小方格。每个小方格叫一个像素,只有一种颜色。彩色的点要用 3 个数记:红光、绿光、蓝光各有多亮。每个数从 0(不亮)到 255(最亮)。

这一个小格是 3 个数: 红 230 绿 40 蓝 40 8×8 的像素苹果

比如红色是 255、0、0,白色是 255、255、255,黑色是 0、0、0。CS231n 的讲义常用一种 32×32 格的小图,一共有 3072 个数。手机照片的数字就更多了。

3最简单的办法:找最像的那张

最简单的认图办法是:先记住很多张标好答案的照片。来了新图,就和每张照片比一比,抄最像的那张的答案。这叫最近邻,意思是“找离得最近的邻居”。比法是把对应格子的数相减,差得越少越像。

要认的图 草地上的猫 记住的 A:狗 5 格不一样 记住的 B:猫 12 格不一样

问题来了:它被背景骗了

上图是示意。最近邻会说:“这是狗!”它只比格子的颜色,背景占的格子多,就说了算。照片挪一挪,数字也全变了。而且每认一张图,都要和所有照片比一遍,很慢。所以 CS231n 马上换了个办法:学会打分。

4打分,然后蒙着眼睛下山

新办法给每种答案打一个分。看到一张猫的图,电脑可能打出:猫 3 分、狗 5 分、车 1 分(示意)。狗的分最高,它就答错了。错了多少也变成一个数,叫损失,也可以叫“错误分”。错误分越小越好。

打分靠的是电脑里很多个旋钮(第 4 课讲过)。怎么调旋钮?想象你蒙着眼睛站在山坡上,山有多高就是错误分有多大。你只能用脚感觉哪边往下最陡,再往那边走一小步。然后再感觉,再走。

这个办法叫梯度下降。“梯度”就是“哪边最陡、陡多少”。第 1 课里电脑猜错了就“悄悄调整自己”,用的就是它。每步迈多大,叫学习率。步子大小很要紧:

步子太小走 6 步,还在半山腰 步子刚好5 步到谷底 步子太大来回跳,总踩不到谷底

电脑里的“山”有几百万个方向,每个旋钮一个。办法还是一样:每个旋钮都往“少错一点”的那边拧一小下。

5反向传播:从错误往回传话

还有个难题:几百万个旋钮,每个该往哪边拧、拧多少?电脑用的办法叫反向传播。我们用一个做柠檬水的小队来想(示意):

挤柠檬加糖加冰水试喝 做的时候:从左往右 改的时候:从“太酸了!”往回传

试喝的人说:“太酸了!”这句话往回传。加冰水的人想:“水影响小,我少改一点。”加糖的人想:“糖影响大,我多加一些。”挤柠檬的人收到:“柠檬汁多了。”下次少挤一点。每个人只要知道两件事:传回来的话,和自己这一步影响多大。电脑从最后的错误分开始一站一站往回算,走一趟就算出所有旋钮该怎么拧。

6卷积网络的积木

CS231n 教的卷积网络,是用几种积木一层层搭起来的。好几种你已经认识了:

积木做什么在哪课见过
小窗口(卷积)一个小窗口在图上一格一格扫,找一种小花纹。第 8 课
缩小汇总(池化)把图缩小,只留下最要紧的数。见下图。新积木
近路给几层修一条近路,让很深的网络也能练好。第 9 课
请假练习时零件随机请假,防止死记硬背。第 3、12 课

池化是新积木。它把图切成 2×2 的小块,每块 4 个数只留最大的 1 个。图的宽和高都缩成一半,要算的数少了很多。池化没有旋钮,不用学。

1320 5214 0172 2633 留最大的 5467

小窗口还很省旋钮,因为同一个窗口在整张图上到处用。讲义拿 AlexNet 第一层算过:每个位置配自己的窗口,旋钮会超过 1 亿个;到处共用,只要约 3.5 万个。

7一门向全世界敞开的课

2012 年 AlexNet(第 8 课)赢了看图比赛后,很多人想学,却没有好教材。2015 年冬天,李飞飞和她的博士生 Karpathy 开出了 CS231n。2016 年,Justin Johnson 也加入讲课。讲义、作业和录像都在网上,全世界很多人靠它入了门。讲义里的例子正好有第 8、9 课的网络,还有专讲跳格小窗口(第 11 课)和请假(第 12 课)的小节。

这门课最特别的是什么都自己写:学生要亲手写出往前算和往回传,再用笨办法检查。Karpathy 认为,不懂往回传话,网络出了毛病就修不好。后来他又做了一套从零写代码的视频课,叫“Neural Networks: Zero to Hero”。

8这和今天有什么关系

今天很多聊天 AI 能看图,但看图的部分很多已经不用卷积网络了。2020 年,有人把图切成小块,每块当成一个“字”。这些“字”交给第 13 课的 Transformer 去读。不过 CS231n 的基本功没过时:错误变成一个数,往回传话,顺着下坡调旋钮。训练今天的聊天 AI,用的还是这几样。这门课换了名字,2026 年春天还在开。

9动手:方格纸像素画

玩法(2 个人,约 15 分钟,需要彩笔和铅笔)

1. 约好颜色代号:0 = 白,1 = 黑,2 = 红,3 = 黄,4 = 蓝。2. A 背着 B 在格子①里画一个图案,每格只涂一种颜色。
3. A 把每格换成代号写进格子②,只把②交给 B。4. B 只看数字,在格子③里涂色,再和①比一比。格子太小,就用最后一页附页上的大格子来玩。

① A 的画 ② 数字表 ③ B 画回来

记录:64 格里,B 涂对了格。涂错的格子,是数字写错了,还是看错了?

你会发现:只要数字没错,B 就能画出一模一样的图。电脑存照片、发照片,传的也只是数字。

10动手:蒙眼下山

玩法(2–3 个人,约 15 分钟,需要 20 张小纸片)

1. “地图员”照下表在 20 张纸片背面写高度,按号码排成一排,写字的一面朝下。别让“下山的人”看见高度表。
2. 下山的人从 1 号出发。每步只能翻开左右正好隔“步子大小”张的两张纸片(一边没有就只翻一边)。
3. 哪张比脚下低就走过去,两张都低就走更低的。都不比脚下低,就停下。
4. 每轮从 1 号重来。第 4 轮停下后换小一号的步子:7 换 3,3 换 1。

号1234567891011121314151617181920
高度12111098765432124689101112
第几轮步子大小走了几步停在几号那里多高到谷底了吗
11 张
23 张
37 张
4先 7,再 3,再 1

你会发现:小步子一定能走到谷底,但要走很多步。大步子走得快,却可能停在半山腰。先大步、再换小步,又快又能到底。科学家训练电脑时,也常常先大后小地调学习率。

11词语小卡片

像素图片上的一个小方格。彩色的像素用 3 个数记下红、绿、蓝有多亮。
损失(错误分)把“错了多少”变成一个数。越小越好。
梯度下降(蒙眼下山)每次往“少错一点”的方向拧一小下旋钮,一步一步走到谷底。
反向传播(往回传话)从最后的错误往回,一站一站算出每个旋钮该怎么改。

12想一想

  1. “找最像的那张”为什么会把草地上的猫认成狗?你有什么办法让它不被背景骗?
  2. 在“蒙眼下山”里,步子太大会怎样?太小会怎样?你最喜欢哪种走法,为什么?
  3. CS231n 要学生自己写出每一步,不直接用现成工具。你学哪样东西时,也值得从头自己做一遍?
一句话记住:图片就是一大张数字表。电脑打分、往回传话、顺着下坡一小步一小步调旋钮,就学会了看图。

给家长和老师:本课讲斯坦福课程 CS231n: Convolutional Neural Networks for Visual Recognition(2015 年冬季首开,李飞飞、Andrej Karpathy 主讲,2016 年 Justin Johnson 加入,现名 Deep Learning for Computer Vision)。讲义从 k 近邻、线性分类器、SGD、反向传播讲到卷积网络,作业要求用 numpy 手写前向/反向并做梯度检查。AlexNet 第一层不共享参数超过 1 亿,共享后 34,944;VGGNet 约 1.38 亿参数。

爱心数字表、像素苹果的 RGB 值、猫狗格子对比、打分卡、柠檬水小队、池化数字和山路高度都是示意;讲义的最近邻用 L1/L2 距离比较 CIFAR-10 像素。蒙眼下山答案:1 张步走 11 步停在 12 号(高 1);3 张步走 4 步停在 13 号(高 2);7 张步走 1 步停在 8 号(高 5);先 7 再 3 再 1 共 3 步,停在 12 号(高 1)。热身答案是爱心。

详见本站 第 28 天中文导读,代码见开源项目 30u30 第 28 天目录(英文) · 极客教育 jikejiao.com 原创讲义 · 2026-10

附附页:像素画大格子

配合第 9 节“方格纸像素画”使用。颜色代号:0 = 白,1 = 黑,2 = 红,3 = 黄,4 = 蓝。可以剪开,A 拿①,B 拿③,②交给 B。

① A 的画 ② 数字表(写颜色代号) ③ B 画回来