本课讲的不是一篇文章,而是一门课。2015 年,斯坦福大学的李飞飞和她的学生 Karpathy 开了一门教电脑看图的课,叫 CS231n。他就是第 1 课的作者。这一课是“看图 AI”的总复习。
下面是一张写满数字的表格。把写着 1 的格子涂黑,写着 0 的格子不涂。涂完看看,藏的是什么?
| 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 1 | 1 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 |
我涂出来的是:
提示:从第 1 行开始,一行一行涂。
在电脑眼里,一张图就是一大张数字表格。CS231n 这门课,就是教电脑从这堆数字里认出东西。
把照片放大很多倍,会看到一个个小方格。每个小方格叫一个像素,只有一种颜色。彩色的点要用 3 个数记:红光、绿光、蓝光各有多亮。每个数从 0(不亮)到 255(最亮)。
比如红色是 255、0、0,白色是 255、255、255,黑色是 0、0、0。CS231n 的讲义常用一种 32×32 格的小图,一共有 3072 个数。手机照片的数字就更多了。
最简单的认图办法是:先记住很多张标好答案的照片。来了新图,就和每张照片比一比,抄最像的那张的答案。这叫最近邻,意思是“找离得最近的邻居”。比法是把对应格子的数相减,差得越少越像。
上图是示意。最近邻会说:“这是狗!”它只比格子的颜色,背景占的格子多,就说了算。照片挪一挪,数字也全变了。而且每认一张图,都要和所有照片比一遍,很慢。所以 CS231n 马上换了个办法:学会打分。
新办法给每种答案打一个分。看到一张猫的图,电脑可能打出:猫 3 分、狗 5 分、车 1 分(示意)。狗的分最高,它就答错了。错了多少也变成一个数,叫损失,也可以叫“错误分”。错误分越小越好。
打分靠的是电脑里很多个旋钮(第 4 课讲过)。怎么调旋钮?想象你蒙着眼睛站在山坡上,山有多高就是错误分有多大。你只能用脚感觉哪边往下最陡,再往那边走一小步。然后再感觉,再走。
这个办法叫梯度下降。“梯度”就是“哪边最陡、陡多少”。第 1 课里电脑猜错了就“悄悄调整自己”,用的就是它。每步迈多大,叫学习率。步子大小很要紧:
电脑里的“山”有几百万个方向,每个旋钮一个。办法还是一样:每个旋钮都往“少错一点”的那边拧一小下。
还有个难题:几百万个旋钮,每个该往哪边拧、拧多少?电脑用的办法叫反向传播。我们用一个做柠檬水的小队来想(示意):
试喝的人说:“太酸了!”这句话往回传。加冰水的人想:“水影响小,我少改一点。”加糖的人想:“糖影响大,我多加一些。”挤柠檬的人收到:“柠檬汁多了。”下次少挤一点。每个人只要知道两件事:传回来的话,和自己这一步影响多大。电脑从最后的错误分开始一站一站往回算,走一趟就算出所有旋钮该怎么拧。
CS231n 教的卷积网络,是用几种积木一层层搭起来的。好几种你已经认识了:
| 积木 | 做什么 | 在哪课见过 |
|---|---|---|
| 小窗口(卷积) | 一个小窗口在图上一格一格扫,找一种小花纹。 | 第 8 课 |
| 缩小汇总(池化) | 把图缩小,只留下最要紧的数。见下图。 | 新积木 |
| 近路 | 给几层修一条近路,让很深的网络也能练好。 | 第 9 课 |
| 请假 | 练习时零件随机请假,防止死记硬背。 | 第 3、12 课 |
池化是新积木。它把图切成 2×2 的小块,每块 4 个数只留最大的 1 个。图的宽和高都缩成一半,要算的数少了很多。池化没有旋钮,不用学。
小窗口还很省旋钮,因为同一个窗口在整张图上到处用。讲义拿 AlexNet 第一层算过:每个位置配自己的窗口,旋钮会超过 1 亿个;到处共用,只要约 3.5 万个。
2012 年 AlexNet(第 8 课)赢了看图比赛后,很多人想学,却没有好教材。2015 年冬天,李飞飞和她的博士生 Karpathy 开出了 CS231n。2016 年,Justin Johnson 也加入讲课。讲义、作业和录像都在网上,全世界很多人靠它入了门。讲义里的例子正好有第 8、9 课的网络,还有专讲跳格小窗口(第 11 课)和请假(第 12 课)的小节。
这门课最特别的是什么都自己写:学生要亲手写出往前算和往回传,再用笨办法检查。Karpathy 认为,不懂往回传话,网络出了毛病就修不好。后来他又做了一套从零写代码的视频课,叫“Neural Networks: Zero to Hero”。
今天很多聊天 AI 能看图,但看图的部分很多已经不用卷积网络了。2020 年,有人把图切成小块,每块当成一个“字”。这些“字”交给第 13 课的 Transformer 去读。不过 CS231n 的基本功没过时:错误变成一个数,往回传话,顺着下坡调旋钮。训练今天的聊天 AI,用的还是这几样。这门课换了名字,2026 年春天还在开。
1. 约好颜色代号:0 = 白,1 = 黑,2 = 红,3 = 黄,4 = 蓝。2. A 背着 B 在格子①里画一个图案,每格只涂一种颜色。
3. A 把每格换成代号写进格子②,只把②交给 B。4. B 只看数字,在格子③里涂色,再和①比一比。格子太小,就用最后一页附页上的大格子来玩。
记录:64 格里,B 涂对了格。涂错的格子,是数字写错了,还是看错了?
你会发现:只要数字没错,B 就能画出一模一样的图。电脑存照片、发照片,传的也只是数字。
1. “地图员”照下表在 20 张纸片背面写高度,按号码排成一排,写字的一面朝下。别让“下山的人”看见高度表。
2. 下山的人从 1 号出发。每步只能翻开左右正好隔“步子大小”张的两张纸片(一边没有就只翻一边)。
3. 哪张比脚下低就走过去,两张都低就走更低的。都不比脚下低,就停下。
4. 每轮从 1 号重来。第 4 轮停下后换小一号的步子:7 换 3,3 换 1。
| 号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 高度 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 2 | 4 | 6 | 8 | 9 | 10 | 11 | 12 |
| 第几轮 | 步子大小 | 走了几步 | 停在几号 | 那里多高 | 到谷底了吗 |
|---|---|---|---|---|---|
| 1 | 1 张 | ||||
| 2 | 3 张 | ||||
| 3 | 7 张 | ||||
| 4 | 先 7,再 3,再 1 |
你会发现:小步子一定能走到谷底,但要走很多步。大步子走得快,却可能停在半山腰。先大步、再换小步,又快又能到底。科学家训练电脑时,也常常先大后小地调学习率。
给家长和老师:本课讲斯坦福课程 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。