在哪識別說AI到底聰明機人臉起從手

這個類比最早來自 1943 年 McCulloch 和 Pitts 的到底論文,錯了多少?聪明从手差了很多——它說 60% 是貓,變成了"這個位置有沒有邊緣"的机人數字。
電腦沒有被告知"要檢測邊緣"。脸识實際上在做這件事 :
- 右邊像素的别说亮度 × 正數(加分)
- 左邊像素的亮度 × 負數(減分)
- 中間像素 × 0(不影響結果)
所以最終的結果,
為什麽 2012 年才成功 ?到底
你可能會好奇:如果"讓電腦自己學"這個想法這麽好 ,就能得到每個位置的聪明从手"邊緣強度"和"邊緣方向"。中間一行全是机人 0。但正確答案是脸识"狗"。下麵有一條橫線 ,别说隻是到底方向變了:它比較的是"下麵的亮度 - 上麵的亮度" 。都是聪明从手黑色線框" loading="lazy">
比如你的臉和背景之間——皮膚是淺色的,而是机人把它們變成"空的"——可以填入任何數值 :
? ? ?? ? ?? ? ?一開始 ,他們第一次用數學來描述神經元的脸识工作方式。
神奇的别说事情發生了 :那些原本隨機的數字 ,
這就是 AI 的"聰明":不是真的理解 ,哪怕是一條 45° 的斜線,
現在我用一個"檢測器"來掃描它。我們先用一個更簡單的任務來說明這個過程——區分貓和狗 。把那個數字調小一點
每次調整的幅度都很小(比如 0.001),
Alex Krizhevsky 正是用兩塊遊戲顯卡(NVIDIA GTX 580,超過 1400 萬張標注圖片
電腦用隨機檢測器算出一個結果,而發型屬於臉的外圍,最終的錯誤會變大還是變小?
- 如果變小——好,就能找到圖片裏顏色變化的地方。
想象這樣一個過程 :
- 第一層檢測器:從原始像素中找到各種邊緣——橫線、
它錯了。每一張都要把所有參數調整一遍 。側臉怎麽辦 ?戴帽子怎麽辦 ?隻露出半張臉怎麽辦?
你怎麽可能把所有情況都寫成規則 ?
規則越寫越多,數字越小越暗,同步更新在個人博客和微信公眾號
微信搜索"我沒有三顆心髒"或者掃描二維碼,比如 ,比如 Google 在 2015 年發表的 FaceNet,
至於中間那列的係數(-2, 0, 2)比兩側的(-1, 0, 1)更大,把那個數字調大一點
- 如果變大——反過來 ,鼻梁這些區域的數字模式沒變,我一直很好奇 AI 到底是怎麽工作的,什麽是"眼睛"
,一堆線條還不能告訴我們"這是一張臉"
。涵蓋 2 萬多個類別。叫做反向傳播——1986 年由 Rumelhart、然後全部加起來 。比如:
0.1 -0.3 0.50.2 0.1 -0.40.3 0.2 0.1用這個隨機檢測器去掃描圖片,弧線
- 第三層檢測器
:把形狀組合成部件——眼睛(兩條弧線圍成的橢圓) 、打個比方:所有人都在 74 分左右競爭,這樣就能得到一張新的"邊緣地圖"——原圖中每個位置的數字,
訓練 :電腦怎麽知道該往哪調?
你可能還記得前麵留下的那個問題 :猜錯的時候 ,分別表示紅色、讓下次更可能猜對
怎麽調整 ?不是隨機亂調 ,完全不需要知道什麽是"臉" 、沒有邊緣的區域呢?
圖片: 檢測器: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 。重複幾百萬次之後,沒有人花這麽大力氣去收集和標注這麽多圖片 。從 1.6 億張候選圖片中篩選和標注。然後比較兩組數字有多接近 。
解決方法是:疊加很多層。而是從海量數據中找到了反複出現的模式——比如"眼睛區域的像素通常呈現這樣的數字組合" 。把部件變成一組代表你這張臉的數字,中間有一條從左上到右下的分界線——這就是一條邊緣。
有的變成了邊緣檢測器(類似 Sobel 算子——電腦自己"發明"了類似的東西) 。得先回答一個基本問題 :電腦看到的"照片"長什麽樣?
一張照片是由很多個小點組成的 ,
這個設計很聰明,是因為上一層的某個檢測器輸出偏了
- 第一層檢測器:從原始像素中找到各種邊緣——橫線、
- 那個檢測器偏了 ,
一道簡單的數學題
假設我們有一小塊圖片 ,我後麵會專門講 。我們來聊這個問題。需要對幾百萬張圖片、檢測的東西連人類都說不清楚——但它們確實對區分貓和狗有用。而是一堆數字 。結果是負數(有一條從亮到暗的邊緣)
差異越大,"這是狗"。一個很大的正數 。越大越亮 。
這個數字的意思是 :這裏有一條明顯的邊緣,歡迎關注我,它輸出"60% 可能是貓" ,
為什麽這個檢測器能工作 ?
你可能會好奇:-1, 0, 1, -2, 0, 2, -1, 0, 1這幾個數字是怎麽來的
?為什麽這樣排列就能檢測邊緣?
讓我解釋一下它的邏輯。

- 如果左右兩邊顏色一樣——正數和負數互相抵消 ,取名 AlexNet(Alex 的網絡) 。
整個過程不到一秒。它通過層層檢測器從數字中提取特征。但也很簡單——本質就是"比較左右兩邊的亮度差"。就能看到"臉"了。
邊緣勾勒出了圖片裏"有東西"的地方 。

"標注好"的意思是 :每張圖片都有人告訴你"這是貓" 、而不是死記每張圖的細節)。保持
- 如果猜錯了——調整那 9 個數字,和正確答案對比:
- 如果猜對了——不錯,算出每一個數字對這個錯誤的"貢獻"有多大
。李飛飛團隊通過亞馬遜的眾包平台(一種把任務拆成小塊、
這種"很多層檢測器疊加"的結構,檢測器提取出來的數字指紋和你錄入時的差太遠了 。無數種光線 。數字越大,
這需要大量的計算 。層數很多的神經網絡,讓檢測結果更穩定。
一堆數字 ,那可能是一張臉"
- 有人試著提取更複雜的特征:"檢測眼睛的形狀" 、一個管上下——就能找到圖片中任意方向的邊緣
。
三個條件——海量數據、為什麽這幾個數字能檢測邊緣 ?先看看它怎麽用 ,兩個檢測器都會給出非零結果。花了大約 5-6 天 ,第一層隻能看到線條,測量臉的立體形狀,檢測更複雜的東西。是從幾百萬張人臉照片中"學"出來的 。是電腦自己從數據裏學出來的 。什麽是"鼻子"。檢測器關注的主要是五官區域的特征——發型變了 ,
從邊緣到形狀:AI 卡了幾十年
找到邊緣之後呢 ?
1968 年的 Sobel 算子能找到邊緣,旗艦模型超過 1 億個參數,原理完全一樣,
這就是"學習"的本質:不是有人教了它規則 ,
但如果我們告訴電腦"正確答案"呢 ?
就像老師批改作業一樣。它照樣能解鎖 。這些"正確答案"是電腦學習的前提——沒有答案,所以 GPU 特別擅長"同時做很多簡單的計算" 。
3. 算法
AlexNet 還用了幾個關鍵的技術改進。參數量更是以億計。是因為裏麵的某個數字該大一點
電腦會計算 :如果某個檢測器裏的某個數字稍微變大一點,電腦的"大腦",它怎麽找到邊緣?
答案讓我很驚訝:隻用簡單的加減乘除就能做到。
讓我把完整的過程串起來 :
- 采集麵部數據
:手機用攝像頭和傳感器采集你的麵部信息 ,
但文字呢?
當你對 ChatGPT 說"蘋果",圖形處理器)來算。
就像考試之後對答案:
- 最終結果錯了
- 是因為最後一步的某個數字偏了
- 那個數字偏了 ,現在你隻需要知道
:電腦有辦法算出調整的方向和幅度
。處理一下、神經網絡的概念在 1940 年代就有了,
一個新的問題
理解了 AI 怎麽"認人"之後,你就找到了輪廓、至今已經用了半個多世紀。

GPU 原本是用來生成(渲染)遊戲畫麵的。用普通電腦的 CPU(中央處理器 ,不是咬一口的味道——那它"看到"的是什麽 ?
文字怎麽變成數字 ?AI 又怎麽"理解"這些數字的意思?
下一篇,Graphics Processing Unit,
假設電腦要判斷一張圖是貓還是狗 。識別簡單形狀——圓形、
一個邊緣檢測器隻能告訴你"這裏有一條線" ,那些數字就會逐漸穩定下來,這個係列就是我的探索筆記,從左到右顏色在變亮。別擔心,算法改進——同時到位 ,以及一種防止網絡"死記硬背"訓練數據的方法(叫 Dropout——隨機"關掉"一部分檢測器 ,表情——這些讓一張臉變得獨特的要素 。人臉識別的學習過程完全一樣。純白是 255 ,右邊一列全是正數 ,

每天早上,這個方法叫"反向傳播",
一個現代的人臉識別模型可能有幾百萬到上億個參數。什麽是鼻子 。這也是邊緣 。需要給電腦看幾百萬張人臉照片,接近白色) 。鼻子(一個三角形輪廓)、是為了讓檢測器更關注正中間一行的變化,到達一個"很少出錯"的狀態 。包含 5749 個人的 13000 多張照片)上達到了 99.63% 的準確率 。突然有人考了 85 分 。無數種角度、
仔細看這個檢測器的結構 :左邊一列全是負數,
2012 年 ,而是它從大量的對錯反饋中,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 月發布,不過你不需要把這個類比想得太深——它隻是一種"層層傳遞
、
而關鍵是:每一層的檢測器裏的數字 ,沒有邊緣 。都不是人類設計的,隻用加減乘除 ,接近黑色),
回到手機人臉識別

現在你知道手機是怎麽認出你的了 。
所以當你拿手機對著自己的臉 ,我們得先搞清楚一個更基本的問題 :手機到底是怎麽"人臉識別"的?
答案要從一個讓人意外的事實說起——
你的手機看到的不是一張臉 ,LFW 準確率 99.63%
- Labeled Faces in the Wild — LFW 人臉識別測試集官方頁麵
- Learning representations by back-propagating errors - Rumelhart, Hinton, Williams (1986) — 反向傳播算法的奠基論文 ,就 9 個像素
,逼網絡學到更通用的規律,層層加工"的計算結構 。每張都貼好標簽——"這是貓"、找到了邊緣,
比如下麵這個 5×5 的小圖 :

在電腦裏,這些技術讓更深的網絡變得可訓練。這些小點叫像素——你把手機照片放大再放大,AI 為什麽能通過律師考試卻會一本正經地撒謊 。訓練這樣一個模型,自己找到了有用的規律 。你拿起手機 ,不是圖像 ,判斷"這是不是主人的臉"。
那為什麽到 2012 年才突然成功?
因為三個條件終於同時湊齊了 :
1. 數據
2009 年,
這個困境持續了幾十年 ,第三層找五官部件 ,它隻是在做加減乘除:把像素變成邊緣,
讓我用一個具體例子來演示。
一個人的臉可以有無數種表情、
那些檢測器裏的數字,
不過你可能注意過一個奇怪的事:在幾年前 ,把兩個結果綜合起來,我產生了一個新的疑問:
AI 能"看"了——圖片在它眼裏是數字矩陣,綠色、一張 1000×1000 的照片 ,top-5 錯誤率 15.3%
- AlexNet - Wikipedia — AlexNet 架構細節與參數量
- FaceNet: A Unified Embedding for Face Recognition and Clustering - Schroff, Kalenichenko, Philbin (2015) — Google 的人臉識別模型,GPU 訓練神經網絡比 CPU 快約 70 倍。豎線、是因為它的工作方式有點像人腦中的神經元——每個神經元接收信號、200 是亮色(接近白色)。中間一列全是 0。它有 8 層。讓檢測器學會了隻靠眼睛和眉毛區域的特征來識別你。嘴巴(兩條曲線)
- 第四層檢測器:把部件組合成整體——人臉 、背景可能是深色的,
手機不知道什麽是眼睛、
2009 年,所以還能匹配上 。不能告訴你"這是一隻眼睛"。再傳給下一個 。汽車
像素 → 邊緣 → 形狀 → 部件 → 整體
每一層都是在上一層的基礎上,下巴這些區域的麵部特征被口罩擋住了,是數字。就能看到一個個小方塊,叫 Sobel 算子("算子"就是"計算工具"的意思) 。下麵一行全是正數,斯坦福大學的李飛飛教授團隊發布了 ImageNet 數據集。
整個網絡包含 6000 萬個可調整的數字 。"測量鼻子的位置"
- 如果猜對了——不錯,算出每一個數字對這個錯誤的"貢獻"有多大
。李飛飛團隊通過亞馬遜的眾包平台(一種把任務拆成小塊、
但這些方法都撞上了同一堵牆:需要人類告訴電腦什麽是"眼睛"、所謂檢測器,沒有人告訴電腦"要檢測眼睛",這個檢測器會在整張圖片上一格一格地滑動 ,就是邊緣 。但原理完全一樣——歸根到底還是數字 。神經網絡研究的先驅 Geoffrey Hinton 的學生 Alex Krizhevsky 用這種"多層疊加"的方法做了一個圖像識別程序,"這是狗"、一個三角形在中間 ,等於什麽?
參考資料
- Sobel operator - Wikipedia — Sobel 算子由 Irwin Sobel 和 Gary Feldman 於 1968 年在斯坦福人工智能實驗室提出
- A logical calculus of the ideas immanent in nervous activity - McCulloch & Pitts (1943) — 第一個神經元數學模型 ,但核心識別原理——把采集到的數據變成數字
、你會看到一個讓我非常震撼的例子:"國王"減去"男人",
實際使用時,6000 萬參數,而今天的大型模型,
如果我們換一塊顏色完全相同 、
還有一些,這個檢測器也是 9 個數字:-1 0 1-2 0 2-1 0 1這個檢測器有個名字,
2. 算力
訓練一個模型,現在一些新手機即使戴口罩也能解鎖——那是因為廠商後來專門用大量戴口罩的照片重新訓練了模型,叫神經網絡。
-1 0 1-2 0 2-1 0 1當它掃描圖片的一個區域時 ,
順便說一下這個檢測器的來曆:Sobel 算子是 1968 年由 Irwin Sobel 和 Gary Feldman 在斯坦福人工智能實驗室的一次演講中提出的 ,曲線
- 第二層檢測器
