【本文經(jīng)機器之心(微信公眾號:almosthuman2014)授權(quán)轉(zhuǎn)載,禁止二次轉(zhuǎn)載?!?/p>
2017 年 1 月 6 日,百度首席科學(xué)家吳恩達帶著小度機器人來到了《最強大腦》現(xiàn)場,與人類選手展開了對決,并在人臉識別比賽里以 3:2 的比分贏得勝利。Master 事件引發(fā)大眾熱議人工智能的余熱未退,小度機器人又在跨年齡人臉識別挑戰(zhàn)中戰(zhàn)勝了本屆最強大腦隊長王峰——擁有數(shù)個世界冠軍頭銜的“世界記憶大師”。與以往主要考驗空間搜索能力的人機 PK 不同,此次比拼主要集中在識別領(lǐng)域,而識別過程中需要模糊推理的能力,百度深度學(xué)習(xí)實驗室(IDL)主任林元慶坦言,這場應(yīng)戰(zhàn)也并不輕松。
對于此次比賽任務(wù),百度 IDL 人臉團隊主要是使用了“度量學(xué)習(xí)”,即通過學(xué)習(xí)一個非線性投影函數(shù)把圖像空間投影到特征空間中。在這個特征空間里,跨年齡的同一個人的兩張人臉的距離會比不同人的相似年齡的兩張人臉的距離要小。同時考慮到跨年齡人臉數(shù)據(jù)的稀缺性,百度大腦使用了一個用大規(guī)模人臉數(shù)據(jù)訓(xùn)練好的模型作為“底座”,然后用跨年齡數(shù)據(jù)對它做更新。這樣不容易過擬合。然后再將這兩點結(jié)合起來做端到端的訓(xùn)練,從而大幅度地提升了小度跨年齡人臉識別的識別率。
百度人工智能機器人《最強大腦》現(xiàn)場
下面是微信公眾號“機器之心”對百度深度學(xué)習(xí)實驗室(IDL)主任林元慶獨家專訪文字整理:
機器之心:請簡單介紹一下人臉識別。
林元慶:人臉識別簡單說就是給你一張人臉的照片,然后我希望能識別照片里面是哪一個人。
人臉識別其實有兩種技術(shù)。
一種技術(shù)我們經(jīng)常叫 1:1 的人臉比對,比如像銀行的應(yīng)用場景,就是你給一個身份證信息,然后再給一張人臉,通過比對希望知道這張人臉是不是身份證上面的那個人。系統(tǒng)會拿這個身份證的信息給到公安的系統(tǒng)里面取一張照片回來,然后跟你現(xiàn)在的照片比對看是不是同一個人。
還有一種更通用的 1:N 人臉識別,N 可以是幾千、幾萬或者幾十萬進行比對,這叫 1:N 的比對或者是 1:N 的人臉識別。
機器之心:機器是通過哪些特征進行人臉識別的?
林元慶:深度學(xué)習(xí)還沒有特別流行起來之前,一般會設(shè)計一些特征對人臉進行識別?,F(xiàn)在用深度學(xué)習(xí)的方法其實是一層一層的去學(xué)不同的特征,底層會是非常低級別的特征,越往上會學(xué)到一些非常高級別的特征。像我們的系統(tǒng)應(yīng)該是千萬到億的低級別特征,慢慢一層一層學(xué)上去,最后那一層其實只有 128 個特征。
機器之心:在不同的應(yīng)用場景中,機器學(xué)習(xí)算法如何決定人臉特征點的數(shù)目?
林元慶:像我們現(xiàn)在做的方法,在不同的應(yīng)用場景里面其實特征數(shù)目是確定的,只是可能會是不同的特征。特征數(shù)目的大小是由深度學(xué)習(xí)的架構(gòu)決定的。一旦我們把神經(jīng)網(wǎng)絡(luò)的架構(gòu)確定下來,這個數(shù)目就是固定的。我們只是根據(jù)不同的場景(不同的場景意思就是不同的訓(xùn)練數(shù)據(jù))訓(xùn)練出來的特征可能是很不一樣的。因此在不同的場景里面特征數(shù)目可能是一樣的,但具體特征會是很不一樣的。
機器之心:比賽中,小度機器人能將少年時期和中年時期的人臉識別出來,如果是將年齡擴大拉長,嬰兒和老人的照片是否可以識別和匹配出來?
林元慶:跨年齡識別是非常難的。就我們現(xiàn)在的系統(tǒng),年齡跨度在 20 到 30 歲的時候我們?nèi)匀荒茏龅奖容^高的精度。當(dāng)我們把這個跨度進一步增加到 50 歲或 60 歲的話,難度肯定也會進一步增加,精度會下降。我們還沒有很仔細地做過這么大年齡跨度的實驗。這是我們下一步要做的事情。
《最強大腦》現(xiàn)場,選手從童年照中識別現(xiàn)場少女組合成員,在第二輪雙胞胎識別中人工智能獲勝。
機器之心:介紹一下跨年齡人臉識別使用的度量學(xué)習(xí)?
林元慶:我們這次去參加《最強大腦》的這套系統(tǒng),使用的其實是基于深度學(xué)習(xí)的“端到端”的度量學(xué)習(xí)方法 (Metric Learning)。這個方法通過學(xué)習(xí)一個非線性映射函數(shù)(用深度神經(jīng)網(wǎng)絡(luò)模型),把圖像空間投影到一個 128 維的特征空間中。深度學(xué)習(xí)要實現(xiàn)的是,對于同一個人的兩張照片,不管年齡差距有多大,它們映射到這 128 唯特征空間的兩個點(即兩個 128 維的向量)要離得很近;對于不同人的兩張照片,它們映射到這 128 唯特征空間的兩個點要離得足夠遠 – 即使他們年齡相近。當(dāng)這個映射函數(shù)學(xué)習(xí)好之后,看兩張照片是否是同一個人變得簡單:把他們映射到這個 128 維的空間了,如果映射到的兩個點離得近,那這兩張照片就是同一個人,否則就是不同人。因此核心是如何訓(xùn)練這個用深度神經(jīng)網(wǎng)絡(luò)建模的映射函數(shù),即調(diào)整深度神經(jīng)網(wǎng)絡(luò)的參數(shù)。我們用大規(guī)模人臉數(shù)據(jù)訓(xùn)練出深度神經(jīng)網(wǎng)絡(luò)模型,實現(xiàn)高識別率。
機器之心:百度通過非線性投影函數(shù)進行映射減少訓(xùn)練損失,那么這個非線性投影函數(shù)是如何得出來的,是通過訓(xùn)練集得出來的嗎?
林元慶:定義度量學(xué)習(xí)的目標(biāo)函數(shù)之后,我們是通過梯度下降法來進行訓(xùn)練,慢慢把目標(biāo)函數(shù)給降下來。梯度下降法是很通用的做法。這里面很重要的是要定義度量學(xué)習(xí)的目標(biāo)函數(shù),然后要定義深度神經(jīng)網(wǎng)絡(luò)的架構(gòu),最后通過訓(xùn)練實現(xiàn)目標(biāo)函數(shù)的逐漸優(yōu)化。
機器之心:人臉識別業(yè)務(wù)的核心問題是人臉關(guān)鍵特征點的定位,錯誤的特征定位會導(dǎo)致提取的人臉描述特征嚴重變形,進而導(dǎo)致識別性能下降,百度是如何解決這個問題的?
林元慶:其實是兩個方面。一個方面是我們要想辦法去做出非常好的特征點定位的算法,然后要訓(xùn)練非常好的模型。在一些極端的情況下,得到的特征點定位可能不準(zhǔn)確,因此我們希望后面的識別模塊有一定的容錯能力。我們是在訓(xùn)練的時候制造一些數(shù)據(jù),在定位上人為地產(chǎn)生一些誤差,然后拿這些數(shù)據(jù)放在深度神經(jīng)網(wǎng)絡(luò)里面一起去參加訓(xùn)練,這樣的話最后訓(xùn)出來的模型對定位的誤差會有一定的容錯能力。
機器之心:百度大腦的這種能力的培養(yǎng)使用了多少的訓(xùn)練樣本?訓(xùn)練了多長時間?
林元慶:我們的訓(xùn)練其實是分兩部分,最重要的一部分叫通用的人臉識別的能力,就是百度這幾年來一直在積累搭建的技術(shù),到比賽為止我們大概用了 200 萬人的 2 億張照片進行人臉識別基礎(chǔ)模型訓(xùn)練。
另一方面,為了這次比賽,我們也收集了一些跨年齡的數(shù)據(jù),根據(jù)跨年齡這個場景再進一步優(yōu)化模型,跨年齡數(shù)據(jù)大概在幾千張這個級別,并不算特別的多。
機器之心:角度、表情、光線、陰影化妝、和配飾等會在多大程度上影響人臉識別準(zhǔn)確率?
林元慶:我們主要是針對人臉角度在 45 度之內(nèi)的應(yīng)用場景,因此我們的訓(xùn)練模型基本上在 45 度之內(nèi)識別的還是比較準(zhǔn)確的。在這個范圍之內(nèi),角度影響不會特別大。但是在大于 45 度之后精度就會開始下降。如果是 90 度,特別是當(dāng)我們沒辦法檢測到五官的時候,精度就會下降比較嚴重,比如說一邊眼睛看不到的情況下下降會比較嚴重。
化妝肯定會有影響,但如果只是很局部的化妝其實還好。像美瞳只是造成一個局部被改變,人臉整體基本上變化不是那么大。這些其實我們的算法都能夠比較好的處理。整形整容就很難,屬于比較大的改變,識別難度就比較大。
機器之心:小度機器人是通過安裝的攝像頭直接觀察還是接入圖像信號?
林元慶:在錄制的現(xiàn)場,節(jié)目組會在選手前面的顯示屏上給出一路信號,同樣的信號也給到小度這邊。我們的系統(tǒng)得到的信號和選手肉眼可以看到的信號是一樣的。
機器之心:小度機器人分析處理是在本地完成還是在云端?此次使用的計算資源情況如何?
林元慶:訓(xùn)練都是在云端。云端我們有非常多、非常大的一個計算集群來專門做剛才提到的 200 萬人的 2 億張照片的訓(xùn)練。但真正訓(xùn)練完之后,計算是在本地完成的,我們在本地只用了一個 GPU。
實際上,我們希望我們的人臉識別技術(shù)能夠廣泛應(yīng)用到各個領(lǐng)域,甚至是讓很多人在手機上就可以用到這一功能。因此,我們希望在訓(xùn)練的時候用非常多的計算機,但是真正應(yīng)用時的計算量不要太大。
機器之心:節(jié)目中,人類選手在介紹判斷方法時也提到選取一些人臉特征,是否意味著這方面機器和人類的識別原理類似,就像 CNN (卷積神經(jīng)網(wǎng)絡(luò))從某種程度上來說是借鑒了人類的視覺原理一樣?
林元慶:從廣義上來說肯定都是通過特征來識別,但是區(qū)別在于提取的是什么特征。深度學(xué)習(xí)系統(tǒng)其實是從海量的數(shù)據(jù)里學(xué)一些共同特征,對共性的特征也更加敏感。但是人其實不僅僅會用共性的特征,還會用一些很特別的特征。舉個例子,假如說一個人的鼻子上有一顆痣,目前我們的這個系統(tǒng)是不會學(xué)出來的,因為它在我們數(shù)據(jù)庫里的兩百萬人身上不常見,它就會把這個特征忽略掉,但人去識別的時候,他會把這顆痣變成一個非常重要的特征去跟蹤。
CNN 架構(gòu)毫無疑問在相當(dāng)程度上都是模仿人的視覺系統(tǒng)。和人的視覺系統(tǒng)類似,CNN 有很多層,然后一層層進行非線性映射,從非常低級別的特征一層層映射上去,最后生成一個非常高級別的有分辨能力的特征。
機器之心:作為機器學(xué)習(xí)和計算機視覺領(lǐng)域的專家,你認為一家公司在人臉識別技術(shù)方面足夠領(lǐng)先的標(biāo)準(zhǔn)是什么?
林元慶:關(guān)鍵在于看技術(shù)能力的強大與否,具體還要看三個層次。第一個是算法層次,大家通常會選擇在一些通用和公開的測試集上進行測試,看這套算法究竟有多強。但這種方法也是有局限性的,公開測試集的樣本量可能比較小,所以你在這種測試集上的表現(xiàn)做得很好,并不代表你在實際問題上也能做得很好。因此,在百度內(nèi)部,我們會搭建的一些規(guī)模很大的測試集。我們通常的做法是,在我們算法研發(fā)的過程中,我們會在這些大測試集上去測。如果要和別人比的話,我們會在公開的測試集上進行測試。
下一個層面是技術(shù)層面。其實技術(shù)不單單是算法,它需要的是算法加數(shù)據(jù)。前面我們提到的公開測試集,它等于假設(shè)說我們不需要去管數(shù)據(jù)了。而實際上非常重要的是算法要跟數(shù)據(jù)一起發(fā)展。人臉的數(shù)據(jù)就是這樣的例子。我們有兩百萬人的人臉,有的算法可能沒辦法在這上面應(yīng)用,因為你需要非常長的時間去訓(xùn)練。并且有些算法可能不能完全利用大數(shù)據(jù)里面的一些特點。所以,算法和技術(shù)一定要一起發(fā)展的。
最后一個層面是應(yīng)用層面。非常重要的是研發(fā)出一些技術(shù),并在實際問題的解決上擁有較高的精度。這既是技術(shù)是否滿足實際應(yīng)用的重要指標(biāo),更是檢驗人工智能技術(shù)最重要的一個指標(biāo)。不同公司的技術(shù)有多好在于他們能解決多少實際的問題。特別是對于人工智能而言,被應(yīng)用的廣度和深度就是衡量一項人工智能技術(shù)是否強大的一個重要指標(biāo)。
所以總的來說就是算法、技術(shù)和應(yīng)用三個層面。我們希望能夠研發(fā)出非常好的技術(shù)和算法來滿足更多實際場景應(yīng)用的需要。人工智能領(lǐng)域里的很多技術(shù)是需要不斷增長的數(shù)據(jù)去訓(xùn)練,從而不斷提高模型精準(zhǔn)度的。大應(yīng)用是非常重要的一環(huán)。所以,即便你的公司搭建了一套非常好的基礎(chǔ)技術(shù),但如果你背后沒有大的應(yīng)用給你形成閉環(huán)的話,這個技術(shù)也很難往前發(fā)展。拿圖像識別來說,它需要算法加數(shù)據(jù),然后再將這項技術(shù)應(yīng)用。有了應(yīng)用,用戶會給你提交更多數(shù)據(jù),這又會幫你訓(xùn)練出更好的模型。然后你就有了更好的技術(shù)。這是一個正循環(huán),直到把技術(shù)發(fā)展到極致。因此大應(yīng)用是非常重要的。對人工智能來說,研發(fā)一項技術(shù)要短期做到極致是不太可能的,一定是要有很好的應(yīng)用場景能夠迭代起來,最后才能把技術(shù)做到極致。
機器之心:接下來,百度會將人臉識別這項技術(shù)重點應(yīng)用于哪些領(lǐng)域?
林元慶:我們這次決定去參加人機 PK,最重要的出發(fā)點就是希望看看百度通過這幾年的研發(fā)積累,我們的人工智能水平跟最頂尖的人類相比處于哪一個水平上。節(jié)目組跟我們定的“圖片識別”和“聲音識別”兩個方向,我們也非常喜歡。其實之前有很多次人機 PK 的比賽,最早的“深藍”,后來的 Watson 在《危險邊緣》節(jié)目上的比賽,還有最近的 AlphaGo,這些更多是在比這一步棋我該怎么走、下一步該怎么走,或是去尋找答案,和這次 PK 有較大區(qū)別。這次應(yīng)該是人類歷史上第一次在圖像和聲音的識別能力上跟人進行高水平 PK。
之所以我們會對這兩個技術(shù)特別感興趣,是因為這兩個技術(shù)有非常多應(yīng)用,實用性很強。人臉識別的應(yīng)用領(lǐng)域中很重要的一個場景是互聯(lián)網(wǎng)金融的身份認證。百度有一個金融事業(yè)部,他們的主營業(yè)務(wù)就是互聯(lián)網(wǎng)金融,已經(jīng)用到我們的人臉識別技術(shù)。我們認為要做好互聯(lián)網(wǎng)金融,身份認證是第一件你必須做的非常好的事情,你一定要知道在計算機或手機前面的那個人到底是誰,身份認證甚至可以說是互聯(lián)網(wǎng)金融的第一步。我們也希望以后這項技術(shù)不單單用在百度,也可以用到更多的金融公司里面。
另一個很重要的應(yīng)用是人臉識別可以用在門禁系統(tǒng)中,百度大廈現(xiàn)在就使用了人臉閘機。是去年在互聯(lián)網(wǎng)大會時,我們在烏鎮(zhèn)落地了一個人臉識別的閘機,之前景區(qū)使用的是指紋認證系統(tǒng),在烏鎮(zhèn)參觀游玩的游客會需要多次進入,需要身份認證。如果每一次要進出的時間過長,非常影響用戶的體驗,甚至要排很長的隊。在這樣的場景下,人臉識別系統(tǒng)跟指紋系統(tǒng)相比,有相當(dāng)大的優(yōu)勢,烏鎮(zhèn)現(xiàn)在用這種 1:N 的認證,游客走到附近就被識別出來,馬上可以通暢進出。為什么這些原來沒有,其實也是因為最近百度在人臉識別上有非常好的技術(shù)突破,今年我們真正實現(xiàn)了高精度 1:N 的人臉識別,我們現(xiàn)在外面公布的是能做到 99% 以上的精度,這應(yīng)該在國內(nèi)是首創(chuàng)。
人臉識別可用于金融領(lǐng)域的人臉識別
機器之心:首期節(jié)目之后,我們還有哪些收獲?
林元慶:我們希望百度的人臉識別以后能有更多的人來用起來。之前更多的是應(yīng)用在互聯(lián)網(wǎng)上,比如打開百度的圖片搜索,搜“劉德華”會出來很多劉德華的照片,里面就使用了人臉識別,因為照片庫里既會有劉德華也會有梁朝偉,系統(tǒng)需要通過人臉識別知道哪一張照片是劉德華哪一張是梁朝偉。這背后其實是我們做了全網(wǎng)的明星人臉的索引,這是之前我們?nèi)四樧R別一個非常重要的用處,但后面我們希望能讓人臉識別用在更廣的地方,給大家的生活帶來更多便利。
機器之心:細粒度視覺分類(FGVC/Fine-Grained Visual Categorization)是今年 CVPR 的熱門研究方向,可否分享一下 IDL 在人臉細粒度識別的研究方面有何進展?
林元慶:細粒度圖像識別其實跟通常我們說的圖像識別有不太一樣的地方,比如我們普通的識別可能只需要知道這是一只狗、一只貓、一個桌子,但細粒度圖像識別,就要明確這一只貓是哪一個品種、這個桌子是哪個廠家哪個型號的。
舉個例子,百度有一個非常瘋狂的項目是菜品識別,我們希望能實現(xiàn)這樣的場景:你在餐館里拍一張菜品照片就能識別它是哪一個餐館的哪一道菜,你能想象其中的難度會非常大。這里面用到的很多技術(shù)跟普通的圖片識別也有很大區(qū)別。更多方面的信息需要通過算法去估計。比如,對于鳥類識別,可能得粗略的知道這是鳥的頭部,這是鳥的尾巴,鳥頭部是長這個樣子,等等。從學(xué)術(shù)上來講,我們稱之為注意力模型?,F(xiàn)在百度在這方面做了很多研發(fā)工作。
我們最近在 CVPR 提交了一篇文章,我們充分利用位置信息自動地去學(xué)習(xí)物體位置信息和位置上的特征信息,最后得到非常高的識別精度。在幾個公開的測試集上,我們的表現(xiàn)應(yīng)該都是業(yè)界最好的。同時,我們也把這項技術(shù)用到百度的產(chǎn)品里。在去年的烏鎮(zhèn)互聯(lián)網(wǎng)大會上,我們結(jié)合百度糯米在景區(qū)里的 18 家餐館應(yīng)用了菜品識別的功能,實現(xiàn)了我之前描述的場景。烏鎮(zhèn)只是一個起點,我們現(xiàn)在其實早期能覆蓋大概 4000 家國內(nèi)餐館,然后希望能一步一步地覆蓋到國內(nèi)上大部分的餐館。
機器之心:菜品識別這個應(yīng)用,實現(xiàn)大規(guī)模推廣所面臨的挑戰(zhàn)是什么?
林元慶:從難度上講,基本上有兩個方面。一個是數(shù)據(jù),我們需要收集足夠多的數(shù)據(jù)來訓(xùn)練模型,這就需要跟百度糯米等產(chǎn)品端配合才能去各個餐館里收集數(shù)據(jù),而全國餐館數(shù)量是百萬級別的,我們要訓(xùn)練的模型的類別會是幾千萬或上億類別。二是技術(shù)方面。這里,我們的技術(shù)跟普通普通識別的差別在于我們要能夠處理千萬個類別,還要處理非常小的類間區(qū)別和非常大的類內(nèi)區(qū)別。比如,麻婆豆腐長得都很像,不同餐館的麻婆豆腐只有非常細微差別,然而從不同角度,用不同光線拍的即使同一個餐館的麻婆豆腐也會很不一樣。因此,對于識別來說,這就是很難的問題。通常大家也會把人臉識別當(dāng)成一個非常特殊的細粒度圖像識別的例子,我們不單單要識別照片里有人臉,還要識別出是哪個人的人臉。
機器之心:要實現(xiàn)李彥宏所說的“讓百度大腦像人類大腦”這個目標(biāo),接下來人工智能是不是也應(yīng)該從人腦和神經(jīng)科學(xué)中獲得更多線索和靈感?
林元慶:在最強大腦比賽現(xiàn)場,對于一個識別對象,我們的系統(tǒng)只看到的一張或者是幾張這個人的照片,然后去做比對。從一定程度上來說,我們用的是遷移學(xué)習(xí)(transfer learning),這在一定程度上跟人很類似。平??戳撕芏嗟娜耍寺龑W(xué)會了辯臉的能力,機器也一樣,在這個能力上有很強的通用性。從更長遠來看,在推理方面,人比機器要強很多,機器還需要從人腦機理等各個方面再去學(xué)習(xí),設(shè)計出更好的算法,希望機器能夠跟人一樣思考推理。
機器之心:通過《最強大腦》這類面向大眾的節(jié)目,百度希望傳遞關(guān)于人工智能的哪些理念?
林元慶:我們參與這次活動很重要的一個目的是希望能讓大眾能深切感覺到人工智能能做什么。我們配合節(jié)目播出的同時也會把我們辯臉技術(shù)做成 App 開放出來,大家可以上傳照片直接去體驗一下。我們希望通過節(jié)目讓大眾深刻體驗到人工智能技術(shù),這對人工智能技術(shù)的推廣有非常好的作用。像 AlphaGo,他們做得非常棒的一個事情就是一下子讓很多人都知道人工智能,之前可能還只是停留在行業(yè)內(nèi)。這其實非常重要,因為后面的人工智能能夠做得非常好,需要大眾的這種接受度,他們覺得這些技術(shù)真的很有價值、愿意使用這些技術(shù)才是整個行業(yè)發(fā)展至關(guān)重要的一步。
機器之心:這次在節(jié)目的現(xiàn)場比拼中,百度大腦擊敗了頂級選手,您認為這有什么樣的意義?
林元慶:我其實不太同意用“擊敗”這個詞。這次我們和最強大腦選手比賽,在人臉識別這個特定任務(wù)上,我們證明了通過海量數(shù)據(jù)、深度學(xué)習(xí)算法,機器學(xué)習(xí)系統(tǒng)能夠?qū)W到非常強的人臉識別的能力。目前這方面我們做的水平還不錯,但人類除此之外還有非常多的能力。另一方面,其實也等于說驗證了我們在這條路上探出了非常有效的研發(fā)路徑,后面我們可以把類似的經(jīng)驗應(yīng)用到更多更廣的范圍。人工智能在很多方面仍然并不強于人類,從研發(fā)角度來講,我們希望我們的技術(shù)能越來越強大,能做的事情越來越多。
機器之心:在機器越來越智能的今天,我們應(yīng)該如何對待人類與機器之間的關(guān)系?
林元慶:其實,機器在一些能力上超過人是很正常的,比如我們之前也發(fā)明了汽車,汽車肯定跑得比人快。但人工智想要整體全面地超越人類還有非常長的路要走,現(xiàn)在還只是做了一些非常小的事情,離智能機器的威脅還非常遠。對這個行業(yè)里面的研究人員來說,我們還有很多的事情要做,這條路還很長。