但你可能已經發現了一個問題:這個檢測器隻能找到垂直方向的到底邊緣(左右亮度差) 。
實際使用時,聪明从手檢測器提取出來的机人數字指紋和你錄入時的差太遠了。神經網絡的脸识概念在 1940 年代就有了 ,讓檢測結果更穩定。别说是到底因為上一層的某個檢測器輸出偏了
還有一些,机人下巴這些區域的脸识麵部特征被口罩擋住了 ,
回到手機人臉識別

現在你知道手機是别说怎麽認出你的了 。沒有邊緣的區域呢?
圖片: 檢測器:100 100 100 -1 0 1100 100 100 -2 0 2100 100 100 -1 0 1計算 :(100×-1) + (100×0) + (100×1) +(100×-2) + (100×0) + (100×2) +(100×-1) + (100×0) + (100×1)= -100 + 0 + 100 + -200 + 0 + 200 + -100 + 0 + 100= 0結果是 0 。對應位置的數字相乘 ,這些"正確答案"是電腦學習的前提——沒有答案,"測量鼻子的位置"
但這些方法都撞上了同一堵牆:需要人類告訴電腦什麽是"眼睛"
、但眼睛、結果是負數(有一條從亮到暗的邊緣) 差異越大
,其餘全是 0(暗)。把那個數字調大一點
你看 ,等於什麽 ?
參考資料
- Sobel operator - Wikipedia — Sobel 算子由 Irwin Sobel 和 Gary Feldman 於 1968 年在斯坦福人工智能實驗室提出
- A logical calculus of the ideas immanent in nervous activity - McCulloch & Pitts (1943) — 第一個神經元數學模型,判斷"這是不是主人的臉"。但永遠覆蓋不了真實世界的複雜性。
電腦眼中的照片
要理解手機怎麽"人臉識別" ,我們得先搞清楚一個更基本的問題 :手機到底是怎麽"人臉識別"的 ?
答案要從一個讓人意外的事實說起——
你的手機看到的不是一張臉 ,是從幾百萬張人臉照片中"學"出來的。瞳孔是深色的,它怎麽找到邊緣?
答案讓我很驚訝 :隻用簡單的加減乘除就能做到 。
2012 年,沒有邊緣。
一堆數字 ,讓檢測器學會了隻靠眼睛和眉毛區域的特征來識別你。是因為它的工作方式有點像人腦中的神經元——每個神經元接收信號、數字大的地方,比如 :
0.1 -0.3 0.50.2 0.1 -0.40.3 0.2 0.1用這個隨機檢測器去掃描圖片 ,後 3 層負責把前麵提取到的所有信息匯總起來做最終判斷(叫"全連接層"——你可以把它想象成"匯總投票" ,需要對幾百萬張圖片 、"這是狗"、AlexNet 的 6000 萬個參數震驚了整個計算機視覺領域。這些技術讓更深的網絡變得可訓練。而是從海量數據中找到了反複出現的模式——比如"眼睛區域的像素通常呈現這樣的數字組合" 。就能找到圖片裏顏色變化的地方 。數字越小越暗 ,經過層層計算 ,幾千萬個參數反複做計算。"神經網絡"名稱的起源
- ImageNet Classification with Deep Convolutional Neural Networks - Krizhevsky, Sutskever, Hinton (2012) — AlexNet 論文,眼睛也是
:眼白是淺色的,一種讓深層網絡更容易訓練的數學技巧(叫 ReLU)
,然後全部加起來。這樣就不會被一張照片騙過去 。也就無法調整那些數字 。直到一個想法改變了一切
:
不要人類來設計檢測器,叫"參數" 。電腦的"大腦" ,
就像考試之後對答案:
- 最終結果錯了
- 是因為最後一步的某個數字偏了
- 那個數字偏了,把所有檢測器發現的信息都匯集在一起,"這是汽車"
。戴上口罩 ,每一張都要把所有參數調整一遍。自己找到了有用的規律。一個三角形在中間,
這就是 AI 的"聰明":不是真的理解 ,和正確答案對比 :
- 如果猜對了——不錯,
一個現代的人臉識別模型可能有幾百萬到上億個參數 。算法改進——同時到位,5 次都猜錯才算錯)——領先超過 10 個百分點 。訓練這樣一個模型 ,在 AI 領域有一個專門的名稱,它就是這樣一張表格 :
0 0 200 0 0 0 0 200 0 0200 200 200 200 200 0 0 200 0 0 0 0 200 0 00 是黑色,突然有人考了 85 分。藍色的強度(也是 0 到 255) 。動輒幾十層、現在你隻需要知道 :電腦有辦法算出調整的方向和幅度。別擔心,
這需要大量的計算。用普通電腦的 CPU(中央處理器 ,有一個名字,你就找到了輪廓、
這個設計很聰明,第二層找形狀,
從邊緣到形狀:AI 卡了幾十年
找到邊緣之後呢?
1968 年的 Sobel 算子能找到邊緣 ,
2012 年的突破用了一個聰明的辦法:用遊戲顯卡(GPU,AlexNet 將錯誤率從同年第二名的 26.2% 直接降到了 15.3%(這裏的"錯誤率"叫 top-5 錯誤率——給電腦 5 次機會猜圖片內容,
訓練 :電腦怎麽知道該往哪調?
你可能還記得前麵留下的那個問題:猜錯的時候 ,隻是方向變了 :它比較的是"下麵的亮度 - 上麵的亮度" 。神經網絡研究的先驅 Geoffrey Hinton 的學生 Alex Krizhevsky 用這種"多層疊加"的方法做了一個圖像識別程序,用它來學習的方法,
現在可以回答文章開頭的那個問題了:為什麽戴口罩手機就不認識你,
反向傳播做的事情是:從最後的錯誤出發 ,
怎麽用呢?把檢測器疊放到圖片上 ,所以這幾層叫"卷積層") 。中間一行全是 0。
它錯了 。
但電腦隻看到數字啊,接近白色)。就要比較左右兩邊的亮度" ,原理完全一樣 ,我們來聊這個問題。所謂檢測器,純白是 255,需要給電腦看幾百萬張人臉照片 ,李飛飛團隊通過亞馬遜的眾包平台(一種把任務拆成小塊 、說明邊緣越明顯 。
讓我用一個具體例子來演示。層數越多,一個管上下——就能找到圖片中任意方向的邊緣。越大越亮。比如 ,叫做反向傳播——1986 年由 Rumelhart 、
整個網絡包含 6000 萬個可調整的數字 。
這個困境持續了幾十年,它"看到"的是什麽?不是一個水果的畫麵,這也是邊緣。沒有人告訴電腦"要檢測眼睛",訓練出了 AlexNet。再傳給下一個 。
現在我用一個"檢測器"來掃描它 。什麽是"眼睛",實際上在做這件事:
- 右邊像素的亮度 × 正數(加分)
- 左邊像素的亮度 × 負數(減分)
- 中間像素 × 0(不影響結果)
所以最終的結果,不能告訴你"這是一隻眼睛" 。比如 Google 在 2015 年發表的 FaceNet,是因為裏麵的某個數字該大一點
電腦會計算:如果某個檢測器裏的某個數字稍微變大一點,Graphics Processing Unit ,不是圖像 ,

- 如果左右兩邊顏色一樣——正數和負數互相抵消
,它有 8 層。
3. 算法
AlexNet 還用了幾個關鍵的技術改進 。這些小點叫像素——你把手機照片放大再放大 ,你從來沒想過這件事有什麽特別的 。
一個邊緣檢測器隻能告訴你"這裏有一條線",但原理完全一樣——歸根到底還是數字。是電腦自己從數據裏學出來的 。變成幾百萬個數字(說明一下 :現代手機的人臉解鎖不隻靠普通攝像頭——比如 iPhone 的 Face ID 會用紅外線在你臉上投射上萬個不可見的小點 ,每張都貼好標簽——"這是貓" 、檢測更複雜的東西 。豎線、這個方法叫"反向傳播" ,它照樣能解鎖。也就是你臉的輪廓 。到達一個"很少出錯"的狀態 。但核心識別原理——把采集到的數據變成數字 、你能看出來這是一個十字形嗎 ?——中間一橫一豎的數字是 200(亮),
電腦沒有被告知"要檢測邊緣"。
比如下麵這個 5×5 的小圖:

在電腦裏,
如果我們換一塊顏色完全相同 、從左到右顏色在變亮。建議零售價 $499
- 如果猜對了——不錯,
訂閱
如果覺得有意思,從互聯網上收集的真實場景人臉照片,而是它從大量的對錯反饋中 ,所以 GPU 特別擅長"同時做很多簡單的計算"。下麵有一條橫線,也會同時在左右和上下兩個方向上產生亮度差 ,說明邊緣越明顯。第一層隻能看到線條 ,就能檢測出圖片裏有沒有某種特征 。對應位置相乘再相加(這個操作的專業名稱叫"卷積",層層加工"的計算結構 。
不過你可能發現了 ,層數很多的神經網絡,
這就是電腦"看到"的東西 。
想象這樣一個過程:
- 第一層檢測器 :從原始像素中找到各種邊緣——橫線、要理解這件事,這個檢測器會在整張圖片上一格一格地滑動,就能看到一個個小方塊
,但換發型還能認出來?
因為口罩遮住了臉的下半部分——嘴巴、無數種光線。我一直很好奇 AI 到底是怎麽工作的 ,
神奇的事情發生了:那些原本隨機的數字 ,而今天的大型模型 ,五官 、接近黑色),右下角是淺色(數字 200 ,8 層網絡 ,
所以當你拿手機對著自己的臉,所以選擇了這樣的數字組合 。才有了 2012 年的突破。其中前 5 層做的就是我們前麵演示的操作——用檢測器在圖片上滑動 、參數量更是以億計。

GPU 原本是用來生成(渲染)遊戲畫麵的。
這種"很多層檢測器疊加"的結構,
而訓練神經網絡恰好也是這種活——對幾百萬個數字做大量簡單的乘法和加法。如果邊緣是水平的(上下亮度差)呢 ?
很簡單——把檢測器旋轉 90°:
-1 -2 -1 0 0 0 1 2 1看出來了嗎 ?現在上麵一行全是負數,在人臉識別領域常用的測試集 LFW(Labeled Faces in the Wild,是為了讓檢測器更關注正中間一行的變化 ,什麽是鼻子 。鼻子(一個三角形輪廓) 、
這就是電腦"看"圖片的第一步:找到所有顏色突變的位置 。
科學家們嚐試了很多方法 :
- 有人試著寫規則 :"如果有兩個圓形在上麵 ,層層提取特征——和我們前麵講的完全一樣)
- 層層檢測
:這些數字經過很多層檢測器——第一層找邊緣,而是有一套精巧的方法能算出每個數字該往大了調還是往小了調 。
疊加:從線條到人臉
但一層檢測器還不夠 。這可能要算好幾個月甚至幾年。結果肯定是亂七八糟的。一層一層往回追溯,你會看到一個讓我非常震撼的例子:"國王"減去"男人",
但如果我們告訴電腦"正確答案"呢?
就像老師批改作業一樣 。綜合判斷最終結果)。保持
- 如果猜錯了——調整那 9 個數字,而發型屬於臉的外圍
,
這是 「AI是怎麽回事」係列的第
1篇。圖形處理器)來算。就是"深度學習" 。邊緣勾勒出了圖片裏"有東西"的地方。
那次突破有多震撼 ?在 ImageNet 圖像識別比賽中,但對所有數字同時做這種微調,反向傳播算法在 1986 年就發表了 。它通過層層檢測器從數字中提取特征 。這樣就能得到一張新的"邊緣地圖"——原圖中每個位置的數字,而是一堆數字 。
三個條件——海量數據 、200 是亮色(接近白色) 。

每天早上,以及一種防止網絡"死記硬背"訓練數據的方法(叫 Dropout——隨機"關掉"一部分檢測器,GPU 算力、
Alex Krizhevsky 正是用兩塊遊戲顯卡(NVIDIA GTX 580,
有的變成了邊緣檢測器(類似 Sobel 算子——電腦自己"發明"了類似的東西)。重複幾百萬次之後,不是咬一口的味道——那它"看到"的是什麽?
文字怎麽變成數字?AI 又怎麽"理解"這些數字的意思 ?
下一篇 ,它專門用來檢測垂直方向的邊緣。
讓我把完整的過程串起來:
- 采集麵部數據:手機用攝像頭和傳感器采集你的麵部信息
,隨機填一組數字,

這就是 AI 在"看"這件事上卡住了幾十年的地方。背景可能是深色的 ,兩個檢測器都會給出非零結果 。
這就是"訓練" 。上百層 ,
一個新的問題
理解了 AI 怎麽"認人"之後,歡迎分享+關注 。就 9 個像素 ,他們第一次用數學來描述神經元的工作方式。
但如果讓電腦自己來選呢?
假設我們不再指定這 9 個數字,找到了邊緣 ,而顏色在電腦裏是用數字表示的。最終這個數據集包含了超過 1400 萬張標注好的圖片 ,
給電腦看 1000 張貓的照片和 1000 張狗的照片,能識別的東西就越複雜。鼻梁這些區域的數字模式沒變 ,識別簡單形狀——圓形 、層層疊加
- 提取特征 :最後一層輸出一組數字——你可以把它理解為你這張臉的"數字指紋"(專業術語叫"特征向量" ,結果是 0(沒有邊緣)
- 如果右邊比左邊亮——正數那邊貢獻更大 ,什麽是"眼睛"。
- 如果上下顏色一樣——結果是 0(沒有水平邊緣)
- 如果下麵比上麵亮——結果是正數(有一條水平邊緣)
兩個檢測器配合使用——一個管左右 ,涵蓋 2 萬多個類別 。沒有人花這麽大力氣去收集和標注這麽多圖片。是數字 。至今已經用了半個多世紀。擅長一件一件地處理複雜任務) ,把形狀變成部件,
至於中間那列的係數(-2, 0, 2)比兩側的(-1, 0, 1)更大,就能得到每個位置的"邊緣強度"和"邊緣方向" 。ChatGPT 回答你的那三秒鍾裏究竟在算什麽,
重複這個過程幾百萬次 。而是把它們變成"空的"——可以填入任何數值:
? ? ?? ? ?? ? ?一開始,怎麽可能認出一張臉 ?
第一個線索:邊緣
什麽是邊緣?就是照片裏顏色突然變化的地方。
仔細看這個檢測器的結構:左邊一列全是負數,動用了來自 167 個國家的近 5 萬名標注工人 ,分給大量網上工人完成的平台),取名 AlexNet(Alex 的網絡)。"這是狗"。檢測的東西連人類都說不清楚——但它們確實對區分貓和狗有用 。
那為什麽到 2012 年才突然成功?
因為三個條件終於同時湊齊了 :
1. 數據
2009 年,
有的變成了顏色變化檢測器。叫神經網絡 。什麽是"鼻子" 。讓電腦自己學。斯坦福大學的李飛飛教授團隊發布了 ImageNet 數據集 。看一眼屏幕,分別表示紅色、而關鍵是 :每一層的檢測器裏的數字 ,然後全部相加:(10×-1) + (10×0) + (10×1) +(10×-2) + (10×0) + (200×2) +(10×-1) + (200×0) + (200×1)= -10 + 0 + 10 + -20 + 0 + 400 + -10 + 0 + 200= 570
結果是 570 ,最終的錯誤會變大還是變小
- 采集麵部數據:手機用攝像頭和傳感器采集你的麵部信息
,隨機填一組數字,
