從手AI到底聰明在哪起識別說機人臉
比如下麵這個 5×5 的到底小圖:

在電腦裏 ,它專門用來檢測垂直方向的聪明从手邊緣。GPU 訓練神經網絡比 CPU 快約 70 倍。机人
現在我用一個"檢測器"來掃描它。脸识重複幾百萬次之後,别说所以還能匹配上。到底手機"看到"的聪明从手是這樣的東西 :
142 98 87 134 156 178 ... 78 45 52 89 123 145 ...134 167 189 201 178 156 ...... (幾百萬個數字)手機要做的事情是:看這幾百萬個數字
,現在你隻需要知道:電腦有辦法算出調整的机人方向和幅度。但也很簡單——本質就是脸识"比較左右兩邊的亮度差"。我們先用一個更簡單的别说任務來說明這個過程——區分貓和狗。什麽是"鼻子"
。其中前 5 層做的就是我們前麵演示的操作——用檢測器在圖片上滑動 、建議零售價 $499 如果覺得有意思,但對所有數字同時做這種微調,弧線訂閱
就像考試之後對答案:
- 最終結果錯了
- 是因為最後一步的某個數字偏了
- 那個數字偏了
,

每天早上 ,然後全部加起來 。
而訓練神經網絡恰好也是這種活——對幾百萬個數字做大量簡單的乘法和加法。我一直很好奇 AI 到底是怎麽工作的 ,就是一串能代表你長相特征的數字)
- 比較 :把這個數字指紋和你第一次錄入時存下的數字指紋做比較
- 判斷 :如果兩組數字足夠接近——解鎖
整個過程沒有任何"理解" 。發現了很多有意思的東西 ,就無法判斷對錯,你就找到了輪廓、為什麽 ?
先別急著回答。AlexNet 將錯誤率從同年第二名的 26.2% 直接降到了 15.3%(這裏的"錯誤率"叫 top-5 錯誤率——給電腦 5 次機會猜圖片內容 ,
核心突破:讓電腦自己學
還記得前麵的 Sobel 算子嗎?
-1 0 1-2 0 2-1 0 1這 9 個數字是人類設計的 。就有 100 萬個像素 。把部件變成一組代表你這張臉的數字 ,這個方法叫"反向傳播",從 1.6 億張候選圖片中篩選和標注。
彩色照片稍微複雜一點 :每個像素需要三個數字,就能看到一個個小方塊 ,但邊緣隻是一堆線條。也會同時在左右和上下兩個方向上產生亮度差,但眼睛、需要對幾百萬張圖片 、最終的錯誤會變大還是變小 ?
- 如果變小——好 ,就 9 個像素,一個三角形在中間
,
一個現代的人臉識別模型可能有幾百萬到上億個參數。比如 Google 在 2015 年發表的 FaceNet,而發型屬於臉的外圍 ,處理一下、算出每一個數字對這個錯誤的"貢獻"有多大。

每個像素都有一個顏色,但疊加四五層之後,不能告訴你"這是一隻眼睛"。叫"參數"。

這個類比最早來自 1943 年 McCulloch 和 Pitts 的論文,
那次突破有多震撼?在 ImageNet 圖像識別比賽中,不過你不需要把這個類比想得太深——它隻是一種"層層傳遞 、豎線、
整個網絡包含 6000 萬個可調整的數字。從左到右顏色在變亮 。
- 如果上下顏色一樣——結果是 0(沒有水平邊緣)
- 如果下麵比上麵亮——結果是正數(有一條水平邊緣)
兩個檢測器配合使用——一個管左右 ,這些技術讓更深的網絡變得可訓練。
那些檢測器裏的數字,我產生了一個新的疑問:
AI 能"看"了——圖片在它眼裏是數字矩陣,
為什麽 2012 年才成功?
你可能會好奇 :如果"讓電腦自己學"這個想法這麽好,怎麽可能認出一張臉 ?
第一個線索 :邊緣
什麽是邊緣 ?就是照片裏顏色突然變化的地方。是因為上一層的某個檢測器輸出偏了
- 那個檢測器偏了
,
有的變成了顏色變化檢測器 。你拿起手機 ,你能看出來這是一個十字形嗎?——中間一橫一豎的數字是 200(亮),排成 3×3:10 10 1010 10 20010 200 200左上角是深色(數字 10,"測量鼻子的位置"
但這些方法都撞上了同一堵牆 :需要人類告訴電腦什麽是"眼睛" 、
電腦用隨機檢測器算出一個結果,它"看到"的是什麽?不是一個水果的畫麵,這些"正確答案"是電腦學習的前提——沒有答案,
讓我把完整的過程串起來:
- 采集麵部數據 :手機用攝像頭和傳感器采集你的麵部信息,
神奇的事情發生了:那些原本隨機的數字,

"標注好"的意思是:每張圖片都有人告訴你"這是貓" 、發表於 Nature
- ImageNet: A Large-Scale Hierarchical Image Database - Deng, Dong, Socher, Li, Li, Fei-Fei (2009) — ImageNet 數據集論文
,再傳給下一個。中間一行全是 0。所以 GPU 特別擅長"同時做很多簡單的計算"
。它怎麽找到邊緣?
答案讓我很驚訝 :隻用簡單的加減乘除就能做到 。第一層隻能看到線條,測量臉的立體形狀 ,無數種光線 。訓練這樣一個模型,不是咬一口的味道——那它"看到"的是什麽 ?
文字怎麽變成數字 ?AI 又怎麽"理解"這些數字的意思?
下一篇,結果是負數(有一條從亮到暗的邊緣)
- 層層檢測
:這些數字經過很多層檢測器——第一層找邊緣,
一個新的問題
理解了 AI 怎麽"認人"之後,
三個條件——海量數據 、涵蓋 2 萬多個類別 。檢測器提取出來的數字指紋和你錄入時的差太遠了。打個比方:所有人都在 74 分左右競爭,就叫"深度神經網絡" ,一種讓深層網絡更容易訓練的數學技巧(叫 ReLU),隻是方向變了 :它比較的是"下麵的亮度 - 上麵的亮度" 。什麽是"眼睛",一堆線條還不能告訴我們"這是一張臉"。包含 5749 個人的 13000 多張照片)上達到了 99.63% 的準確率。隨機填一組數字 ,而今天的大型模型 ,這就形成了一條邊緣 ,
讓我一步一步算給你看:
圖片: 檢測器:10 10 10 -1 0 110 10 200 -2 0 210 200 200 -1 0 1對應位置相乘,隻用加減乘除,接近白色) 。綜合判斷最終結果) 。重複這個過程幾百萬次。
那為什麽到 2012 年才突然成功?
因為三個條件終於同時湊齊了:
1. 數據
2009 年,就要比較左右兩邊的亮度",
有的變成了紋理檢測器。中間有一條從左上到右下的分界線——這就是一條邊緣。第二層找形狀 ,每一張都要把所有參數調整一遍 。而關鍵是 :每一層的檢測器裏的數字 ,
這就是電腦"看到"的東西。就是邊緣。能識別的東西就越複雜 。下巴這些區域的麵部特征被口罩擋住了,就是"深度學習" 。但核心識別原理——把采集到的數據變成數字、就能得到每個位置的"邊緣強度"和"邊緣方向"。
這個設計很聰明,會自己變成有意義的檢測器。但永遠覆蓋不了真實世界的複雜性 。
這個數字的意思是 :這裏有一條明顯的邊緣,
想象這樣一個過程:
- 第一層檢測器:從原始像素中找到各種邊緣——橫線、沒有人告訴電腦"要檢測眼睛",就是一組數字組成的小模板——把它疊到圖片上
,
現在可以回答文章開頭的那個問題了:為什麽戴口罩手機就不認識你 ,這可能要算好幾個月甚至幾年 。純白是 255,AlexNet 的 6000 萬個參數震驚了整個計算機視覺領域。
一個人的臉可以有無數種表情 、以及一種防止網絡"死記硬背"訓練數據的方法(叫 Dropout——隨機"關掉"一部分檢測器,想分享給你。而是一堆數字。結果肯定是亂七八糟的 。曲線
- 第二層檢測器
:把第一層找到的邊緣組合起來
,
實際使用時 ,

這就是 AI 在"看"這件事上卡住了幾十年的地方。側臉怎麽辦 ?戴帽子怎麽辦?隻露出半張臉怎麽辦 ?
你怎麽可能把所有情況都寫成規則?
規則越寫越多,
2012 年的突破用了一個聰明的辦法:用遊戲顯卡(GPU,無數種角度 、直到一個想法改變了一切:
不要人類來設計檢測器,
怎麽用呢?把檢測器疊放到圖片上,
一堆數字,結果是 0(沒有邊緣)
- 如果右邊比左邊亮——正數那邊貢獻更大,
這需要大量的計算。但正確答案是"狗"。
這就是"訓練" 。
順便說一下這個檢測器的來曆:Sobel 算子是 1968 年由 Irwin Sobel 和 Gary Feldman 在斯坦福人工智能實驗室的一次演講中提出的 ,
但如果我們告訴電腦"正確答案"呢?
就像老師批改作業一樣。是因為它的工作方式有點像人腦中的神經元——每個神經元接收信號 、原理完全一樣,叫 Sobel 算子("算子"就是"計算工具"的意思) 。你會看到一個讓我非常震撼的例子:"國王"減去"男人",數字越小越暗 ,49000 名標注工人來自 167 個國家
- Large-scale Deep Unsupervised Learning using Graphics Processors - Raina, Madhavan, Ng (2009) — GPU 訓練神經網絡比 CPU 快約 70 倍
- NVIDIA GeForce GTX 580 - VideoCardz — GTX 580 於 2010 年 11 月發布
,人臉識別的學習過程完全一樣 。一層一層往回追溯
,
2009 年 ,貓臉 、動輒幾十層、在人臉識別領域常用的測試集 LFW(Labeled Faces in the Wild,
-1 0 1-2 0 2-1 0 1當它掃描圖片的一個區域時,現在一些新手機即使戴口罩也能解鎖——那是因為廠商後來專門用大量戴口罩的照片重新訓練了模型,下麵一行全是正數,top-5 錯誤率 15.3%
- AlexNet - Wikipedia — AlexNet 架構細節與參數量
- FaceNet: A Unified Embedding for Face Recognition and Clustering - Schroff, Kalenichenko, Philbin (2015) — Google 的人臉識別模型
,
讓我用一個具體例子來演示。
但電腦隻看到數字啊,這樣就能得到一張新的"邊緣地圖"——原圖中每個位置的數字,
一個邊緣檢測器隻能告訴你"這裏有一條線" ,它隻是在做加減乘除 :把像素變成邊緣 ,檢測的東西連人類都說不清楚——但它們確實對區分貓和狗有用。從互聯網上收集的真實場景人臉照片 ,
這個困境持續了幾十年,眼睛也是:眼白是淺色的 ,
一道簡單的數學題
假設我們有一小塊圖片,而不是死記每張圖的細節) 。就能看到"臉"了。嘴巴(兩條曲線)
- 第四層檢測器:把部件組合成整體——人臉、
邊緣勾勒出了圖片裏"有東西"的地方 。
還有一些,層層疊加 - 提取特征:最後一層輸出一組數字——你可以把它理解為你這張臉的"數字指紋"(專業術語叫"特征向量"
,動用了來自 167 個國家的近 5 萬名標注工人,8 層網絡,

- 如果左右兩邊顏色一樣——正數和負數互相抵消,
電腦沒有被告知"要檢測邊緣"。讓電腦自己學。
Alex Krizhevsky 正是用兩塊遊戲顯卡(NVIDIA GTX 580 ,它就是這樣一張表格:
0 0 200 0 0 0 0 200 0 0200 200 200 200 200 0 0 200 0 0 0 0 200 0 00 是黑色,
回到手機人臉識別

現在你知道手機是怎麽認出你的了。它通過層層檢測器從數字中提取特征。瞳孔是深色的 ,
至於中間那列的係數(-2, 0, 2)比兩側的(-1, 0, 1)更大,第三層找五官部件 ,
整個過程不到一秒 。
2012 年 ,歡迎分享+關注 。其餘全是 0(暗)。讓檢測結果更穩定 。把所有檢測器發現的信息都匯集在一起,擅長一件一件地處理複雜任務) ,幾千萬個參數反複做計算。
這是 「AI是怎麽回事」係列的第
1篇。遊戲畫麵需要同時計算屏幕上幾百萬個像素的顏色 ,層數越多,把那個數字調大一點 - 如果變大——反過來 ,叫神經網絡 。是因為裏麵的某個數字該大一點
電腦會計算:如果某個檢測器裏的某個數字稍微變大一點
- 如果左右兩邊顏色一樣——正數和負數互相抵消,
- 第一層檢測器:從原始像素中找到各種邊緣——橫線、沒有人告訴電腦"要檢測眼睛",就是一組數字組成的小模板——把它疊到圖片上
,
差異越大,
解決方法是:疊加很多層 。
這就是"學習"的本質:不是有人教了它規則,
給電腦看 1000 張貓的照片和 1000 張狗的照片,一個管上下——就能找到圖片中任意方向的邊緣 。
這就是電腦"看"圖片的第一步:找到所有顏色突變的位置。檢測更複雜的東西。都不是人類設計的,是為了讓檢測器更關注正中間一行的變化 ,也就是你臉的輪廓。加上"女人",是從幾百萬張人臉照片中"學"出來的 。每張都貼好標簽——"這是貓"、
你看,才有了 2012 年的突破 。電腦的"大腦",綠色、把邊緣變成形狀 ,
疊加:從線條到人臉
但一層檢測器還不夠。
為什麽這個檢測器能工作?
你可能會好奇 :-1, 0, 1, -2, 0, 2, -1, 0, 1這幾個數字是怎麽來的
?為什麽這樣排列就能檢測邊緣
?
讓我解釋一下它的邏輯 。汽車
像素 → 邊緣 → 形狀 → 部件 → 整體
每一層都是在上一層的基礎上 ,

GPU 原本是用來生成(渲染)遊戲畫麵的。用它來學習的方法 ,分別表示紅色 、沒有人花這麽大力氣去收集和標注這麽多圖片 。層層提取特征——和我們前麵講的完全一樣)
