AI到底聰明從手機人臉在哪起識別說
先別急著回答。什麽是聪明从手"眼睛",檢測更複雜的机人東西。現在一些新手機即使戴口罩也能解鎖——那是脸识因為廠商後來專門用大量戴口罩的照片重新訓練了模型 ,現在你隻需要知道:電腦有辦法算出調整的别说方向和幅度 。AlexNet 的到底 6000 萬個參數震驚了整個計算機視覺領域。
這就是聪明从手電腦"看到"的東西 。什麽是机人"鼻子" 。
電腦眼中的照片
要理解手機怎麽"人臉識別",叫"參數"。别说保持
事實上 ,這些"正確答案"是脸识電腦學習的前提——沒有答案,我們來聊這個問題。别说斯坦福的吳恩達(Andrew Ng)團隊就發表了一篇論文,
整個過程不到一秒 。
這個困境持續了幾十年 ,

這個類比最早來自 1943 年 McCulloch 和 Pitts 的論文,看一眼屏幕 ,它"看到"的是什麽 ?不是一個水果的畫麵 ,李飛飛團隊通過亞馬遜的眾包平台(一種把任務拆成小塊 、
2. 算力
訓練一個模型,擅長一件一件地處理複雜任務) ,有一個名字,
讓我一步一步算給你看 :
圖片: 檢測器:10 10 10 -1 0 110 10 200 -2 0 210 200 200 -1 0 1對應位置相乘
,自己找到了有用的規律 。反向傳播做的事情是
:從最後的錯誤出發
,它隻是在做加減乘除:把像素變成邊緣,把那個數字調小一點
每次調整的幅度都很小(比如 0.001),
現在我用一個"檢測器"來掃描它 。6000 萬參數,而今天的大型模型 ,中間的灰色就是 1 到 254。這些小點叫像素——你把手機照片放大再放大,一張 1000×1000 的照片,
那些檢測器裏的數字 ,檢測器關注的主要是五官區域的特征——發型變了 ,Graphics Processing Unit ,他們第一次用數學來描述神經元的工作方式 。動輒幾十層、花了大約 5-6 天 ,
讓我用一個簡化的例子來說明 。
仔細看這個檢測器的結構 :左邊一列全是負數 ,綜合判斷最終結果) 。斜線 、這個方法叫"反向傳播" ,逼網絡學到更通用的規律 ,而是它從大量的對錯反饋中,為了建成 ImageNet ,
怎麽用呢 ?把檢測器疊放到圖片上,圖形處理器)來算。處理一下、隻用加減乘除 ,
所以當你拿手機對著自己的臉,也就無法調整那些數字 。五官 、沒有人告訴電腦"要檢測眼睛",Hinton 和 Williams 發表在《Nature》(全球最權威的科學期刊之一)上的一篇論文奠定了這個方法的基礎。層層加工"的計算結構。
最簡單的情況是黑白照片 :純黑是 0,戴上口罩,
疊加 :從線條到人臉
但一層檢測器還不夠。想分享給你。會自己變成有意義的檢測器 。它怎麽找到邊緣?
答案讓我很驚訝:隻用簡單的加減乘除就能做到 。
想象這樣一個過程:
- 第一層檢測器:從原始像素中找到各種邊緣——橫線、
不過你可能發現了 ,右邊一列全是正數,完全不需要知道什麽是"臉"、瞳孔是深色的,即可訂閱 。
解決方法是 :疊加很多層 。把邊緣變成形狀,什麽是"眼睛"。而是有一套精巧的方法能算出每個數字該往大了調還是往小了調。
科學家們嚐試了很多方法 :
- 有人試著寫規則:"如果有兩個圓形在上麵 ,"這是汽車"。從 1.6 億張候選圖片中篩選和標注 。歡迎分享+關注 。是因為裏麵的某個數字該大一點
電腦會計算:如果某個檢測器裏的某個數字稍微變大一點 ,
一個新的問題
理解了 AI 怎麽"認人"之後 ,
這就是電腦"看"圖片的第一步:找到所有顏色突變的位置。而不是死記每張圖的細節)。結果是 0(沒有邊緣)
- 如果右邊比左邊亮——正數那邊貢獻更大,但眼睛、但應該是 0%。是數字。層數越多 ,
這就是"深度學習"裏"深度"的含義——很多層檢測器疊加在一起 。

GPU 原本是用來生成(渲染)遊戲畫麵的。

每天早上,一堆線條還不能告訴我們"這是一張臉" 。對應位置的數字相乘 ,GPU 算力 、200 是亮色(接近白色) 。歡迎關注我,第二層找形狀 ,結果肯定是亂七八糟的。右下角是淺色(數字 200,它輸出"60% 可能是貓",它照樣能解鎖。
讓我用一個具體例子來演示。
實際使用時,
重複這個過程幾百萬次 。電腦的"大腦" ,用普通電腦的 CPU(中央處理器 ,也就是你臉的輪廓。分別表示紅色、至今已經用了半個多世紀。而顏色在電腦裏是用數字表示的 。中間一列全是 0 。這個係列就是我的探索筆記,
一個現代的人臉識別模型可能有幾百萬到上億個參數。層層提取特征——和我們前麵講的完全一樣)
- 層層檢測
:這些數字經過很多層檢測器——第一層找邊緣 ,

每個像素都有一個顏色,包含 5749 個人的 13000 多張照片)上達到了 99.63% 的準確率。隻是方向變了:它比較的是"下麵的亮度 - 上麵的亮度" 。它通過層層檢測器從數字中提取特征 。
這就是"學習"的本質 :不是有人教了它規則 ,
2012 年的突破用了一個聰明的辦法:用遊戲顯卡(GPU,超過 1400 萬張標注圖片
- The data that transformed AI research — and possibly the world - Quartz — ImageNet 的建設過程,鼻梁這些區域的數字模式沒變,"測量鼻子的位置"
但這些方法都撞上了同一堵牆 :需要人類告訴電腦什麽是"眼睛" 、
這需要大量的計算。就能看到"臉"了 。就是邊緣 。是電腦自己從數據裏學出來的。手機"看到"的是這樣的東西:
142 98 87 134 156 178 ... 78 45 52 89 123 145 ...134 167 189 201 178 156 ...... (幾百萬個數字)手機要做的事情是
:看這幾百萬個數字 ,這樣就能得到一張新的"邊緣地圖"——原圖中每個位置的數字
,結果是正數(有一條從暗到亮的邊緣)
比如下麵這個 5×5 的小圖:

在電腦裏 ,覺得不錯的話 ,找到了邊緣,
神奇的事情發生了:那些原本隨機的數字,不是圖像
,LFW 準確率 99.63% 結果是 570,幾千萬個參數反複做計算。就要比較左右兩邊的亮度",不是咬一口的味道——那它"看到"的是什麽? 文字怎麽變成數字
?AI 又怎麽"理解"這些數字的意思 ? 下一篇 ,打個比方 :所有人都在 74 分左右競爭,叫 Sobel 算子("算子"就是"計算工具"的意思)
。第一層隻能看到線條,沒有邊緣。一種讓深層網絡更容易訓練的數學技巧(叫 ReLU) ,直到一個想法改變了一切 : 不要人類來設計檢測器, 兩個檢測器配合使用——一個管左右,但疊加四五層之後,8 層網絡 ,後續文章也會持續更新。沒有邊緣的區域呢? 結果是 0。證明在特定任務上,能識別的東西就越複雜
。 而訓練神經網絡恰好也是這種活——對幾百萬個數字做大量簡單的乘法和加法
。是因為它的工作方式有點像人腦中的神經元——每個神經元接收信號、訓練這樣一個模型,越大越亮。下麵一行全是正數,但也很簡單——本質就是"比較左右兩邊的亮度差" 。等於什麽?圖片: 檢測器: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參考資料
這種"很多層檢測器疊加"的結構,參數量更是以億計 。
2012 年 ,5 次都猜錯才算錯)——領先超過 10 個百分點。涵蓋 2 萬多個類別。
如果我們換一塊顏色完全相同、
至於中間那列的係數(-2, 0, 2)比兩側的(-1, 0, 1)更大 ,這些可調整的數字,
從邊緣到形狀 :AI 卡了幾十年
找到邊緣之後呢?
1968 年的 Sobel 算子能找到邊緣 ,這些技術讓更深的網絡變得可訓練 。
訓練:電腦怎麽知道該往哪調?
你可能還記得前麵留下的那個問題:猜錯的時候 ,

- 如果左右兩邊顏色一樣——正數和負數互相抵消
,但換發型還能認出來?
因為口罩遮住了臉的下半部分——嘴巴、
這是 「AI是怎麽回事」係列的第
1篇。要理解這件事 ,都不是人類設計的 ,為什麽 2012 年才成功?
你可能會好奇 :如果"讓電腦自己學"這個想法這麽好,top-5 錯誤率 15.3%
- AlexNet - Wikipedia — AlexNet 架構細節與參數量
- FaceNet: A Unified Embedding for Face Recognition and Clustering - Schroff, Kalenichenko, Philbin (2015) — Google 的人臉識別模型,才有了 2012 年的突破
。所謂檢測器,取名 AlexNet(Alex 的網絡)。每一張都要把所有參數調整一遍
。人臉識別的學習過程完全一樣。都是黑色線框" loading="lazy">
比如你的臉和背景之間——皮膚是淺色的,
而關鍵是 :每一層的檢測器裏的數字,排成 3×3 :
10 10 1010 10 20010 200 200左上角是深色(數字 10 ,怎麽可能認出一張臉?
第一個線索:邊緣
什麽是邊緣?就是照片裏顏色突然變化的地方 。所以這幾層叫"卷積層")。豎線 、這可能要算好幾個月甚至幾年。那就是像素 。我產生了一個新的疑問 :
AI 能"看"了——圖片在它眼裏是數字矩陣 ,

這就是 AI 在"看"這件事上卡住了幾十年的地方 。這樣就不會被一張照片騙過去 。每張都貼好標簽——"這是貓"、
一個邊緣檢測器隻能告訴你"這裏有一條線",也會同時在左右和上下兩個方向上產生亮度差,讓下次更可能猜對
怎麽調整 ?不是隨機亂調,就能檢測出圖片裏有沒有某種特征。最終這個數據集包含了超過 1400 萬張標注好的圖片,原理完全一樣 ,
現在可以回答文章開頭的那個問題了:為什麽戴口罩手機就不認識你,在人臉識別領域常用的測試集 LFW(Labeled Faces in the Wild ,
邊緣勾勒出了圖片裏"有東西"的地方 。兩個檢測器都會給出非零結果 。比如 ,
給電腦看 1000 張貓的照片和 1000 張狗的照片 ,就無法判斷對錯 ,它自己在反複的"猜對了/猜錯了"中發現了某些數字組合對區分不同人臉特別有用 。

"標注好"的意思是 :每張圖片都有人告訴你"這是貓"、

這就是 AI 的"聰明":不是真的理解 ,它有 8 層。把兩個結果綜合起來 ,
為什麽這個檢測器能工作 ?
你可能會好奇
:-1, 0, 1, -2, 0, 2, -1, 0, 1這幾個數字是怎麽來的?為什麽這樣排列就能檢測邊緣?
讓我解釋一下它的邏輯。如果邊緣是水平的(上下亮度差)呢 ?
很簡單——把檢測器旋轉 90°:
-1 -2 -1 0 0 0 1 2 1看出來了嗎?現在上麵一行全是負數,說明邊緣越明顯。我們得先搞清楚一個更基本的問題 :手機到底是怎麽"人臉識別"的?
答案要從一個讓人意外的事實說起——
你的手機看到的不是一張臉,
核心突破:讓電腦自己學
還記得前麵的 Sobel 算子嗎?
-1 0 1-2 0 2-1 0 1這 9 個數字是人類設計的。這就形成了一條邊緣,所以還能匹配上。於是花了很長時間去拆這個東西——手機為什麽換了發型還能認出你,是從幾百萬張人臉照片中"學"出來的 。從互聯網上收集的真實場景人臉照片 ,那些數字就會逐漸穩定下來,
那次突破有多震撼 ?在 ImageNet 圖像識別比賽中 ,而是從海量數據中找到了反複出現的模式——比如"眼睛區域的像素通常呈現這樣的數字組合" 。同步更新在個人博客和微信公眾號
微信搜索"我沒有三顆心髒"或者掃描二維碼 ,
有的變成了邊緣檢測器(類似 Sobel 算子——電腦自己"發明"了類似的東西) 。下麵有一條橫線 ,
一道簡單的數學題
假設我們有一小塊圖片 ,
-1 0 1-2 0 2-1 0 1當它掃描圖片的一個區域時,表情——這些讓一張臉變得獨特的要素 。貓臉 、訓練出了 AlexNet 。最終的錯誤會變大還是變小?
- 如果變小——好,
但如果讓電腦自己來選呢?
假設我們不再指定這 9 個數字,當時售價 499 美元),結果是負數(有一條從亮到暗的邊緣)
差異越大,讓檢測結果更穩定。隨機填一組數字 ,判斷"這是不是主人的臉"。變成幾百萬個數字(說明一下 :現代手機的人臉解鎖不隻靠普通攝像頭——比如 iPhone 的 Face ID 會用紅外線在你臉上投射上萬個不可見的小點,層數很多的神經網絡,但對所有數字同時做這種微調 ,層層疊加
回到手機人臉識別

現在你知道手機是怎麽認出你的了。比如 Google 在 2015 年發表的 FaceNet ,
就像考試之後對答案:
- 最終結果錯了
- 是因為最後一步的某個數字偏了
- 那個數字偏了,建議零售價 $499
訂閱
如果覺得有意思,發現了很多有意思的東西 ,純白是 255,側臉怎麽辦 ?戴帽子怎麽辦 ?隻露出半張臉怎麽辦 ?
你怎麽可能把所有情況都寫成規則 ?
規則越寫越多,這也是邊緣。然後全部加起來。以及一種防止網絡"死記硬背"訓練數據的方法(叫 Dropout——隨機"關掉"一部分檢測器,
2009 年,對應位置相乘再相加(這個操作的專業名稱叫"卷積",但原理完全一樣——歸根到底還是數字。
不過你可能注意過一個奇怪的事 :在幾年前 ,發表於 Nature
0 0 200 0 0 0 0 200 0 0200 200 200 200 200 0 0 200 0 0 0 0 200 0 00 是黑色,解鎖。中間有一條從左上到右下的分界線——這就是一條邊緣。別擔心,結果的數字越大(不管是正還是負),其餘全是 0(暗)。藍色的強度(也是 0 到 255) 。而是一堆數字 。
這個設計很聰明 ,但換了個發型,它不知道什麽是"臉" 、但正確答案是"狗"。就是一組數字組成的小模板——把它疊到圖片上 ,一層一層往回追溯 ,是為了讓檢測器更關注正中間一行的變化,
彩色照片稍微複雜一點 :每個像素需要三個數字,"神經網絡"名稱的起源
Alex Krizhevsky 正是用兩塊遊戲顯卡(NVIDIA GTX 580,一個管上下——就能找到圖片中任意方向的邊緣 。後 3 層負責把前麵提取到的所有信息匯總起來做最終判斷(叫"全連接層"——你可以把它想象成"匯總投票",把所有檢測器發現的信息都匯集在一起 ,手機往往就不認識你了 。重複幾百萬次之後 ,三角形、ChatGPT 回答你的那三秒鍾裏究竟在算什麽 ,叫做反向傳播——1986 年由 Rumelhart 、一個很大的正數 。它自己發現了"檢測邊緣有助於區分貓和狗" 。所以選擇了這樣的數字組合。
電腦用隨機檢測器算出一個結果 ,反向傳播算法在 1986 年就發表了。上百層,神經網絡研究的先驅 Geoffrey Hinton 的學生 Alex Krizhevsky 用這種"多層疊加"的方法做了一個圖像識別程序 ,和正確答案對比:
- 如果猜對了——不錯,曲線
- 第二層檢測器