AI到底聰明在哪起識別說從手機人臉
但如果讓電腦自己來選呢 ?到底
假設我們不再指定這 9 個數字,
那次突破有多震撼?聪明从手在 ImageNet 圖像識別比賽中 ,就能得到每個位置的机人"邊緣強度"和"邊緣方向" 。
不過你可能發現了,脸识有一個名字,别说排成 3×3 :
10 10 1010 10 20010 200 200左上角是到底深色(數字 10,中間的聪明从手灰色就是 1 到 254 。所以這幾層叫"卷積層")。机人錯了多少 ?脸识差了很多——它說 60% 是貓 ,涵蓋 2 萬多個類別 。别说就叫"深度神經網絡" ,到底
2012 年的聪明从手突破用了一個聰明的辦法:用遊戲顯卡(GPU,旗艦模型超過 1 億個參數 ,机人
不過你可能注意過一個奇怪的脸识事:在幾年前,
有的别说變成了紋理檢測器。不過你不需要把這個類比想得太深——它隻是一種"層層傳遞、檢測的東西連人類都說不清楚——但它們確實對區分貓和狗有用。沒有人花這麽大力氣去收集和標注這麽多圖片。遊戲畫麵需要同時計算屏幕上幾百萬個像素的顏色,不是咬一口的味道——那它"看到"的是什麽
?
文字怎麽變成數字 ?AI 又怎麽"理解"這些數字的意思?
下一篇 ,是數字。Graphics Processing Unit,後 3 層負責把前麵提取到的所有信息匯總起來做最終判斷(叫"全連接層"——你可以把它想象成"匯總投票" ,其餘全是 0(暗)。判斷"這是不是主人的臉"。
3. 算法
AlexNet 還用了幾個關鍵的技術改進 。它隻是在做加減乘除 :把像素變成邊緣 ,ChatGPT 回答你的那三秒鍾裏究竟在算什麽,
邊緣勾勒出了圖片裏"有東西"的地方。現在你隻需要知道:電腦有辦法算出調整的方向和幅度。建議零售價 $499 如果覺得有意思
, 神奇的事情發生了:那些原本隨機的數字,下巴這些區域的麵部特征被口罩擋住了, 這種"很多層檢測器疊加"的結構,層數很多的神經網絡
,8 層網絡 ,神經網絡研究的先驅 Geoffrey Hinton 的學生 Alex Krizhevsky 用這種"多層疊加"的方法做了一個圖像識別程序
,把那個數字調小一點 每次調整的幅度都很小(比如 0.001) ,之所以叫這個名字,瞳孔是深色的,包含 5749 個人的 13000 多張照片)上達到了 99.63% 的準確率。手機"看到"的是這樣的東西 : 手機要做的事情是
:看這幾百萬個數字, 這就是電腦"看到"的東西 。無數種角度、"測量鼻子的位置" 但這些方法都撞上了同一堵牆:需要人類告訴電腦什麽是"眼睛"、 重複這個過程幾百萬次
。側臉怎麽辦?戴帽子怎麽辦 ?隻露出半張臉怎麽辦 ? 你怎麽可能把所有情況都寫成規則? 規則越寫越多,參數量更是以億計。這個檢測器會在整張圖片上一格一格地滑動
,是因為裏麵的某個數字該大一點 電腦會計算:如果某個檢測器裏的某個數字稍微變大一點,就有 100 萬個像素
。花了大約 5-6 天,解鎖 。而是它從大量的對錯反饋中
,電腦的"大腦",層層加工"的計算結構 。現在一些新手機即使戴口罩也能解鎖——那是因為廠商後來專門用大量戴口罩的照片重新訓練了模型
,GPU 算力、一種讓深層網絡更容易訓練的數學技巧(叫 ReLU) , 一堆數字,發現了很多有意思的東西, 反向傳播做的事情是 :從最後的錯誤出發 ,同步更新在個人博客和微信公眾號 微信搜索"我沒有三顆心髒"或者掃描二維碼 ,我們來聊這個問題
。 理解了 AI 怎麽"認人"之後,就是"深度學習" 。以及一種防止網絡"死記硬背"訓練數據的方法(叫 Dropout——隨機"關掉"一部分檢測器, 答案讓我很驚訝:隻用簡單的加減乘除就能做到。看一眼屏幕,即可訂閱。對應位置的數字相乘,檢測更複雜的東西 。 2. 算力 訓練一個模型,再傳給下一個。LFW 準確率 99.63%訂閱
142 98 87 134 156 178 ... 78 45 52 89 123 145 ...134 167 189 201 178 156 ...... (幾百萬個數字)一個新的問題
疊加:從線條到人臉
但一層檢測器還不夠。它有 8 層 。訓練出了 AlexNet。49000 名標注工人來自 167 個國家
至於中間那列的係數(-2, 0, 2)比兩側的(-1, 0, 1)更大,能識別的東西就越複雜。
2012 年,證明在特定任務上 ,也會同時在左右和上下兩個方向上產生亮度差 ,反向傳播算法在 1986 年就發表了。這個係列就是我的探索筆記,算法改進——同時到位,你就找到了輪廓、藍色的強度(也是 0 到 255)。右邊一列全是正數,突然有人考了 85 分 。豎線 、
這就是"訓練"。
如果我們換一塊顏色完全相同、它輸出"60% 可能是貓",每一張都要把所有參數調整一遍。檢測器提取出來的數字指紋和你錄入時的差太遠了。訓練這樣一個模型 ,
整個網絡包含 6000 萬個可調整的數字。
讓我用一個具體例子來演示。表情——這些讓一張臉變得獨特的要素。
有的變成了邊緣檢測器(類似 Sobel 算子——電腦自己"發明"了類似的東西)。
這個困境持續了幾十年 ,叫做反向傳播——1986 年由 Rumelhart、但正確答案是"狗"。它自己在反複的"猜對了/猜錯了"中發現了某些數字組合對區分不同人臉特別有用 。歡迎分享+關注。隨機填一組數字 ,讓電腦自己學。三角形 、你能看出來這是一個十字形嗎?——中間一橫一豎的數字是 200(亮) ,但換發型還能認出來 ?
因為口罩遮住了臉的下半部分——嘴巴、把兩個結果綜合起來,自己找到了有用的規律 。斯坦福的吳恩達(Andrew Ng)團隊就發表了一篇論文,層層提取特征——和我們前麵講的完全一樣)
AI 能"看"了——圖片在它眼裏是數字矩陣,
這就是"深度學習"裏"深度"的含義——很多層檢測器疊加在一起。"神經網絡"名稱的起源

GPU 原本是用來生成(渲染)遊戲畫麵的 。
它錯了 。在人臉識別領域常用的測試集 LFW(Labeled Faces in the Wild ,
為什麽 2012 年才成功?
你可能會好奇 :如果"讓電腦自己學"這個想法這麽好,和正確答案對比 :
- 如果猜對了——不錯,才有了 2012 年的突破。結果是正數(有一條從暗到亮的邊緣)
- 如果左邊比右邊亮——負數那邊貢獻更大
,是電腦自己從數據裏學出來的。無數種光線。說明邊緣越明顯。需要對幾百萬張圖片
、

這個類比最早來自 1943 年 McCulloch 和 Pitts 的論文,
讓我一步一步算給你看:
圖片: 檢測器:10 10 10 -1 0 110 10 200 -2 0 210 200 200 -1 0 1對應位置相乘,那為什麽到 2012 年才突然成功 ?
因為三個條件終於同時湊齊了 :
1. 數據
2009 年,李飛飛團隊通過亞馬遜的眾包平台(一種把任務拆成小塊、
比如下麵這個 5×5 的小圖:

在電腦裏,

這就是 AI 在"看"這件事上卡住了幾十年的地方。
順便說一下這個檢測器的來曆:Sobel 算子是 1968 年由 Irwin Sobel 和 Gary Feldman 在斯坦福人工智能實驗室的一次演講中提出的,但永遠覆蓋不了真實世界的複雜性。五官、擅長一件一件地處理複雜任務),接近黑色),AlexNet 將錯誤率從同年第二名的 26.2% 直接降到了 15.3%(這裏的"錯誤率"叫 top-5 錯誤率——給電腦 5 次機會猜圖片內容 ,
彩色照片稍微複雜一點 :每個像素需要三個數字 ,在 AI 領域有一個專門的名稱 ,
手機不知道什麽是眼睛 、
但電腦隻看到數字啊 ,它自己發現了"檢測邊緣有助於區分貓和狗"。每張都貼好標簽——"這是貓"、圖形處理器)來算 。結果肯定是亂七八糟的。這就形成了一條邊緣 ,鼻子(一個三角形輪廓) 、神經網絡的概念在 1940 年代就有了,這個檢測器也是 9 個數字:
-1 0 1-2 0 2-1 0 1這個檢測器有個名字,分給大量網上工人完成的平台),會自己變成有意義的檢測器 。
這個設計很聰明,它照樣能解鎖 。
實際使用時 ,
電腦沒有被告知"要檢測邊緣"。最終這個數據集包含了超過 1400 萬張標注好的圖片,數字越小越暗,為了建成 ImageNet ,
一個現代的人臉識別模型可能有幾百萬到上億個參數 。
有的變成了顏色變化檢測器 。我們得先搞清楚一個更基本的問題 :手機到底是怎麽"人臉識別"的?答案要從一個讓人意外的事實說起——
你的手機看到的不是一張臉,就是邊緣 。但換了個發型,隻用加減乘除 ,那些數字就會逐漸穩定下來,
這就是電腦"看"圖片的第一步 :找到所有顏色突變的位置 。比如 Google 在 2015 年發表的 FaceNet ,純白是 255,從 1.6 億張候選圖片中篩選和標注。
但如果我們告訴電腦"正確答案"呢?
就像老師批改作業一樣。這些"正確答案"是電腦學習的前提——沒有答案,
最簡單的情況是黑白照片:純黑是 0 ,算出每一個數字對這個錯誤的"貢獻"有多大 。到達一個"很少出錯"的狀態。
所以當你拿手機對著自己的臉,
解決方法是:疊加很多層 。對每個位置都做一次這樣的計算。
還有一些 ,所以 GPU 特別擅長"同時做很多簡單的計算"。第三層找五官部件,等於什麽 ?參考資料
- Sobel operator - Wikipedia — Sobel 算子由 Irwin Sobel 和 Gary Feldman 於 1968 年在斯坦福人工智能實驗室提出
- A logical calculus of the ideas immanent in nervous activity - McCulloch & Pitts (1943) — 第一個神經元數學模型
,但疊加四五層之後 ,你很快就會明白
。
科學家們嚐試了很多方法 :
- 有人試著寫規則:"如果有兩個圓形在上麵 ,結果的數字越大(不管是正還是負),數字大的地方
,
仔細看這個檢測器的結構:左邊一列全是負數 ,然後全部加起來。但也很簡單——本質就是"比較左右兩邊的亮度差" 。數字越大,
這些小點叫像素——你把手機照片放大再放大 ,當時售價 499 美元) ,叫 Sobel 算子("算子"就是"計算工具"的意思) 。這個方法叫"反向傳播" ,後續文章也會持續更新。完全不需要知道什麽是"臉" 、
電腦用隨機檢測器算出一個結果,要理解這件事,人類知道"要檢測垂直邊緣 ,
這個數字的意思是:這裏有一條明顯的邊緣 ,那就是像素。
2009 年 ,重複幾百萬次之後,把形狀變成部件,把所有檢測器發現的信息都匯集在一起,它不知道什麽是"臉" 、保持
- 如果猜錯了——調整那 9 個數字 ,這也是邊緣。什麽是"眼睛"。用普通電腦的 CPU(中央處理器 ,然後全部相加:(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,就 9 個像素,背景可能是深色的,5 次都猜錯才算錯)——領先超過 10 個百分點。它專門用來檢測垂直方向的邊緣 。什麽是"鼻子" 。說明邊緣越明顯。如果邊緣是水平的(上下亮度差)呢?
很簡單——把檢測器旋轉 90°:
-1 -2 -1 0 0 0 1 2 1看出來了嗎?現在上麵一行全是負數,那可能是一張臉"
- 有人試著提取更複雜的特征
:"檢測眼睛的形狀"
、都是黑色線框" loading="lazy">
比如你的臉和背景之間——皮膚是淺色的 ,加上"女人",就是一串能代表你長相特征的數字)
- 比較
口是心非網