← 返回第 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 畫回來