編者按:本文作者 Andrej KarPathy,由閱面科技翻譯整理。
卷積神經(jīng)網(wǎng)絡(luò)是非常強(qiáng)大的,它能在你的個(gè)人照片里識(shí)別出物體,地點(diǎn)和人物,又能在自動(dòng)駕駛汽車?yán)锬茏R(shí)別出路標(biāo),行人和交通燈,還能在航空影像中識(shí)別出莊稼,森林和道路,在醫(yī)療圖像中識(shí)別出多種異常,諸如此類,不勝枚舉。在這些嚴(yán)肅的問題之外,這種高大上的視覺識(shí)別模型也可以用在消遣和娛樂上,博眾一笑。
在接下來我要給大家介紹的這個(gè)趣味實(shí)驗(yàn)中,我們要做這樣一件事:我們從網(wǎng)絡(luò)中收集了2百萬張自拍圖,并將它們作為一個(gè)具有1億4千萬個(gè)參數(shù),當(dāng)今世界最先進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)模型的輸入,來訓(xùn)練一個(gè)分類器用以識(shí)別好的自拍和差的自拍。這么做的原因僅僅是因?yàn)檫@很簡(jiǎn)單,而且我們也能輕松實(shí)現(xiàn)。讀完本文,你將會(huì)學(xué)到如何自拍的法門。
卷積神經(jīng)網(wǎng)絡(luò)
在我們深入介紹這個(gè)實(shí)驗(yàn)之前,我們先來簡(jiǎn)單介紹一下卷積神經(jīng)網(wǎng)絡(luò)是什么,這樣能讓更多的受好奇心驅(qū)使閱讀本文的讀者不至于始終處于云山霧罩的狀態(tài)。用通俗一點(diǎn)的話來說,卷積神經(jīng)網(wǎng)絡(luò)是一把大錘,而計(jì)算機(jī)視覺問題不過是一些釘子。假如你在2015年聽說過或者閱讀過一些關(guān)于計(jì)算機(jī)如何識(shí)別圖像或者視頻中的物體的文章,大部分文章都會(huì)提到卷積神經(jīng)網(wǎng)絡(luò)。下面就是一些例子:
卷積神經(jīng)網(wǎng)絡(luò)眾多成功案例中的一部分。從上到下,從左到右依次是:街景圖片中識(shí)別門牌號(hào),醫(yī)療圖像中識(shí)別壞東西,中文識(shí)別,路牌識(shí)別以及人臉識(shí)別。
卷積神經(jīng)網(wǎng)絡(luò)恰好有著一段有趣的背景故事。卷積神經(jīng)網(wǎng)絡(luò)最早是由Yann Lecun等人于上世紀(jì)80年代發(fā)展出來的技術(shù)(當(dāng)然,還是基于前人,像是Fukushima的工作)。當(dāng)時(shí)的卷積神經(jīng)網(wǎng)絡(luò)被叫做LeNet 1,其中一個(gè)有趣的應(yīng)用是在1993年用來識(shí)別數(shù)字??上У氖?,這類模型并不被當(dāng)時(shí)的計(jì)算機(jī)視覺界接受,因?yàn)榇蠹移毡檎J(rèn)為這些模型沒辦法處理“真實(shí)世界”中的海量圖片。
這種觀念一直到2012年才被扭轉(zhuǎn)過來,那一年開始我們總算有了足夠的計(jì)算能力(特指GPU計(jì)算)以及足夠的數(shù)據(jù)(ImageNet),使得我們能夠真正地將這類模型應(yīng)用到大規(guī)模的圖像上。首先取得突破的是Alex Krizhevsky,Ilya Sutskever和Geoff Hinton的工作,他們?cè)?012年的ImageNet挑戰(zhàn)賽(把它當(dāng)成計(jì)算機(jī)視覺界的世界杯即可)上取得了壓倒性的勝利(16.4%的錯(cuò)誤率,遠(yuǎn)低于第二名的26.2%的錯(cuò)誤率)。
由于過去幾年的ImageNet挑戰(zhàn)賽是由Fei-Fei Li的實(shí)驗(yàn)室組織的,恰好我就在她實(shí)驗(yàn)室工作,因此我得以親眼見證了這一歷史的轉(zhuǎn)折點(diǎn)。我還記得當(dāng)Hinton組的結(jié)果提交上來后,實(shí)驗(yàn)室的一個(gè)妹子那一臉什么鬼的表情(因?yàn)閷?shí)在太強(qiáng)了)。后來,我們大家都注意到了這個(gè)結(jié)果,紛紛站了起來,從實(shí)驗(yàn)室的一頭走到另一頭,試圖去弄清楚剛才發(fā)生的一切。
在接下來的幾個(gè)月中,卷積神經(jīng)網(wǎng)絡(luò)從一個(gè)備受質(zhì)疑的晦澀模型一躍成為了計(jì)算機(jī)視覺界的香餑餑,幾乎所有新發(fā)表的計(jì)算機(jī)視覺論文都講其作為核心模型。ImageNet挑戰(zhàn)賽也反映出了這個(gè)趨勢(shì)——2012年的時(shí)候,只有Hinton一家用卷積神經(jīng)網(wǎng)絡(luò)模型參賽,在那之后的2013年和2014年挑戰(zhàn)賽中,幾乎所有的參賽者都采用了卷積神經(jīng)網(wǎng)絡(luò)模型。另一個(gè)有趣的現(xiàn)象是,每一年的冠軍小組都立刻被某一公司吸納。
這幾年里,比起2012年的AlexNet(這些模型名稱),我們見到了更加完美,簡(jiǎn)潔并且處理更大規(guī)模的模型。2013年是ZFNet,2014年是GoogLeNet(這是Google版的LeNet,)和VGGNet??傊?,現(xiàn)在我們知道卷積神經(jīng)網(wǎng)絡(luò)有如下優(yōu)點(diǎn):
簡(jiǎn)單:同一個(gè)操作在原始圖像上會(huì)被一遍一遍的重復(fù)數(shù)十次。
快速:在幾十毫秒內(nèi)處理一個(gè)圖像。
有效:他們的工作原理在某些方面和我們組的視覺皮層工作很類似。
深入內(nèi)部
那么,卷積神經(jīng)網(wǎng)絡(luò)模型到底是怎么做的呢?如果你看一下模型的細(xì)節(jié),