豆瓣最高评分8.1!万维钢:读懂这本书,你会比身边人更深的理解这个时代
▲
數(shù)據(jù)汪特別推薦
點(diǎn)擊上圖進(jìn)入玩酷屋
小木用真金白銀來給大家送禮物啦,特別感謝這些年一直以來大家對我們的支持,才讓我們越做越好。(點(diǎn)我參與送禮活動(dòng))
這幾年全球各大科技巨頭紛紛進(jìn)入人工智能領(lǐng)域,催生了一大批技術(shù)的發(fā)展和落地:AI醫(yī)療、智能翻譯、圖像識別、智能社交機(jī)器人、無人駕駛……這些技術(shù)的背后都離不開“深度學(xué)習(xí)”。科技改變我們生活的同時(shí),也給我們帶來了某些隱憂:人工智能會不會取代我們甚至統(tǒng)治我們?
我們一起來探索這本由特倫斯·謝諾夫斯基著作的《深度學(xué)習(xí):智能時(shí)代的核心驅(qū)動(dòng)力量》
神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)
為什么要了解深度學(xué)習(xí)?首先,“深度學(xué)習(xí)”現(xiàn)在太熱門了,圖形識別、語音識別、汽車導(dǎo)航全都能用上,非常值錢。
更重要的是,“深度學(xué)習(xí)”算法包含精妙的思想,能夠代表這個(gè)時(shí)代的精神。這個(gè)思想并不難,但是一旦領(lǐng)會了,你就能窺探一點(diǎn)腦神經(jīng)科學(xué)和現(xiàn)代工程學(xué)。
我將重點(diǎn)使用兩份參考資料:一個(gè)是Arstechnica網(wǎng)站近期發(fā)布的一篇文章《計(jì)算機(jī)圖形識別能力如何好到令人震驚》,作者是蒂莫西·李(Timothy Lee)。 一個(gè)是一本新書《深度學(xué)習(xí):智能時(shí)代的核心驅(qū)動(dòng)力量》,作者是特倫斯·謝諾夫斯基(Terrence Sejnowski),中信出版社剛剛出了中文版。
《深度學(xué)習(xí):智能時(shí)代的核心驅(qū)動(dòng)力量》
特倫斯·謝諾夫斯基 著
不知道大家注意到?jīng)]有,你的手機(jī)相冊,知道你每一張照片里都有什么東西。不管你用的是 iPhone還是安卓,相冊都有一個(gè)搜索功能,你輸入“beach”,它能列舉所有包含海灘的照片;輸入“car”,它能列舉畫面中有汽車的照片,而且它還能識別照片中的每一個(gè)人。
每拍攝一張照片,手機(jī)都自動(dòng)識別其中的典型物體。這是一個(gè)細(xì)思極恐的技術(shù)。怎么才能教會計(jì)算機(jī)識別物體呢?
心急的朋友可以點(diǎn)擊下方小程序購買~
▼
沒有規(guī)則的學(xué)習(xí)
不到十年之前,人們總認(rèn)為模式識別方面人腦比計(jì)算機(jī)厲害,甚至谷歌投入巨大精力研究都做不到從照片里識別出一只貓。然而,從2012年開始,“深度學(xué)習(xí)”讓計(jì)算機(jī)識別圖形的能力突然變得無比強(qiáng)大,甚至已經(jīng)超過了人類。
首先來看人是怎么識別貓的。觀察一下這張圖,你怎么判斷這張照片里有沒有貓呢?
你可能會說,這很簡單,所有人都知道貓長什么樣——好,那請問貓長什么樣?
你也許可以用科學(xué)語言描寫“三角形”是什么樣的——這是一種圖形,它有三條直線的邊,有三個(gè)頂點(diǎn)。可是你能用比較科學(xué)的語言描寫貓嗎?它有耳朵、有尾巴,但這么形容遠(yuǎn)遠(yuǎn)不夠,最起碼你得能把貓和狗區(qū)分開來才行。
再看下面這張圖片,你怎么判斷 ta 是男還是女呢?
圖片來自 design.tutsplus.com
你可能會說女性長得更秀氣一些——那什么叫“秀氣”?是說眉毛比較細(xì)嗎?是輪廓比較小嗎?
這是一個(gè)非常奇怪的感覺。你明明知道貓長什么樣,你明明一眼就能區(qū)分男性和女性,可是說不清是怎么看出來的。
古老的計(jì)算機(jī)圖形識別方法,就是非要規(guī)定一些明確的識別規(guī)則,讓計(jì)算機(jī)根據(jù)規(guī)則判斷,結(jié)果發(fā)現(xiàn)非常不可行。
人腦并不是通過什么規(guī)則做的判斷。那到底是怎么判斷的呢?
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)計(jì)算并不是一項(xiàng)新技術(shù),幾十年前就有了,但是一開始并不被看好。《深度學(xué)習(xí)》的作者謝諾夫斯基,上世紀(jì)80年代就在研究神經(jīng)網(wǎng)絡(luò)計(jì)算,那時(shí)候他是一個(gè)少數(shù)派。
1989年,謝諾夫斯基到麻省理工學(xué)院計(jì)算機(jī)實(shí)驗(yàn)室訪問。氣氛不算融洽,那里的人都質(zhì)疑他的方法。午餐之前,謝諾夫斯基有五分鐘的時(shí)間,給所有人介紹一下他講座的主題。謝諾夫斯基臨場發(fā)揮,以食物上的一只蒼蠅為題,說了幾句話。
謝諾夫斯基說,你看這只蒼蠅的大腦只有10萬個(gè)神經(jīng)元,能耗那么低,但是它能看、能飛、能尋找食物,還能繁殖。MIT有臺價(jià)值一億美元的超級計(jì)算機(jī),消耗極大的能量,有龐大的體積,可是它的功能為什么還不如一只蒼蠅?
在場的教授都未能回答好這個(gè)問題,倒是一個(gè)研究生給出了正確答案。他說這是因?yàn)樯n蠅的大腦是高度專業(yè)化的,進(jìn)化使得蒼蠅的大腦只具備這些特定的功能,而我們的計(jì)算機(jī)是通用的,你可以對它進(jìn)行各種編程,它理論上可以干任何事情。
這個(gè)關(guān)鍵在于,大腦的識別能力,不是靠臨時(shí)弄一些規(guī)則臨時(shí)編程。大腦的每一個(gè)功能都是專門的神經(jīng)網(wǎng)絡(luò)長出來的,那計(jì)算機(jī)能不能效法大腦呢?
謝諾夫斯基說,大腦已經(jīng)給計(jì)算機(jī)科學(xué)家提供了四個(gè)暗示。
第一個(gè)暗示:大腦是一個(gè)強(qiáng)大的模式識別器。人腦非常善于在一個(gè)混亂的場景之中識別出你想要的那個(gè)東西。比如你能從滿大街的人中,一眼就認(rèn)出你熟悉的人。
第二個(gè)暗示:大腦的識別功能可以通過訓(xùn)練提高。
第三個(gè)暗示:大腦不管是練習(xí)還是使用識別能力,都不是按照各種邏輯和規(guī)則進(jìn)行的。我們識別一個(gè)人臉,并不是跟一些抽象的規(guī)則進(jìn)行比對。我們不是通過測量這個(gè)人兩眼之間的距離來識別這個(gè)人。我們一眼看過去,就知道他是誰了。
第四個(gè)暗示:大腦是由神經(jīng)元組成的。我們大腦里有數(shù)百億個(gè)神經(jīng)元,大腦計(jì)算不是基于明確規(guī)則的計(jì)算,而是基于神經(jīng)元的計(jì)算。
這就是神經(jīng)網(wǎng)絡(luò)計(jì)算要做的事情。
什么是“深度學(xué)習(xí)”
下面這張圖代表一個(gè)最簡單的計(jì)算機(jī)神經(jīng)網(wǎng)絡(luò)。?
圖片來自 hackernoon.com
它從左到右分為三層。
第一層代表輸入的數(shù)據(jù),第二和第三層的每一個(gè)圓點(diǎn)代表一個(gè)神經(jīng)元。
第二層叫“隱藏層”。
第三層是“輸出層”。
數(shù)據(jù)輸入進(jìn)來,經(jīng)過隱藏層各個(gè)神經(jīng)元的一番處理,再把信號傳遞給輸出層,輸出層神經(jīng)元再處理一番,最后作出判斷。
從下面這張圖,你可以看到它的運(yùn)行過程。
圖片來自 Analytics India Magazine
那什么叫“深度學(xué)習(xí)”呢?
最簡單的理解,就是中間有不止一層隱藏層神經(jīng)元的神經(jīng)網(wǎng)絡(luò)計(jì)算。“深度”的字面意思就是層次比較“深”。
接著看下面這張圖,你可以看到
左邊是簡單神經(jīng)網(wǎng)絡(luò),右邊是深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)。
圖片來自 Towards Data Science 網(wǎng)站
計(jì)算機(jī)最底層的單元是晶體管,而神經(jīng)網(wǎng)絡(luò)最底層的單元就是神經(jīng)元。神經(jīng)元是什么東西呢?我們看一個(gè)最簡單的例子。
下面這張圖表現(xiàn)了一個(gè)根據(jù)交通信號燈判斷要不要前進(jìn)的神經(jīng)元。它由三部分組成:輸入、內(nèi)部參數(shù)和輸出。?
這個(gè)神經(jīng)元的輸入就是紅燈、黃燈和綠燈這三個(gè)燈哪個(gè)亮了。我們用1表示亮,0表示不亮,那么按照順序,“1,0,0” 這一組輸入數(shù)字,就代表紅燈亮,黃燈和綠燈不亮。?
神經(jīng)元的內(nèi)部參數(shù)包括“權(quán)重(weight)”,它對每個(gè)輸入值都給一個(gè)權(quán)重,比如圖中給紅燈的權(quán)重是 -1,黃燈的權(quán)重是 0,給綠燈的權(quán)重是 1。另外,它還有一個(gè)參數(shù)叫“偏移(bias)”,圖中偏移值是-0.5。
神經(jīng)元做的計(jì)算,就是把輸入的三個(gè)數(shù)字分別乘以各自的權(quán)重,相加,然后再加上偏移值。比如現(xiàn)在是紅燈,那么輸入的三個(gè)數(shù)值就是1、0、0,權(quán)重是 -1、0、1,所以計(jì)算結(jié)果就是:
1×(-1) + 0×0 + 0×1 - 0.5 = -1.5
輸出是做判斷,判斷標(biāo)準(zhǔn)是如果計(jì)算結(jié)果大于 0 就輸出“前進(jìn)”命令,小于 0 就輸出“停止”命令。現(xiàn)在計(jì)算結(jié)果小于0,所以神經(jīng)元就輸出“停止”。
這就是神經(jīng)元的基本原理。真實(shí)應(yīng)用中的神經(jīng)元會在計(jì)算過程中加入非線性函數(shù)的處理,并且確保輸出值都在 0 和 1 之間。?
本質(zhì)上,神經(jīng)元做的事情就是按照自己的權(quán)重參數(shù)把輸入值相加,再加入偏移值,形成一個(gè)輸出值。如果輸出值大于某個(gè)閾值,我們就說這個(gè)神經(jīng)元被“激發(fā)”了。
神經(jīng)元的內(nèi)部參數(shù),包括權(quán)重和偏移值,都是可調(diào)的。
用數(shù)據(jù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程,就是調(diào)整更新各個(gè)神經(jīng)元的內(nèi)部參數(shù)的過程。神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)在訓(xùn)練中不變,是其中神經(jīng)元的參數(shù)決定了神經(jīng)網(wǎng)絡(luò)的功能。
接下來我們要用一個(gè)實(shí)戰(zhàn)例子說明,神經(jīng)網(wǎng)絡(luò)是怎樣進(jìn)行圖形識別的。我們要用一個(gè)簡單的神經(jīng)網(wǎng)絡(luò)識別手寫的阿拉伯?dāng)?shù)字。
計(jì)算機(jī)如何識別手寫數(shù)字?
用神經(jīng)網(wǎng)絡(luò)識別手寫的阿拉伯?dāng)?shù)字,是一個(gè)非常成熟的項(xiàng)目,網(wǎng)上有現(xiàn)成的數(shù)據(jù)庫和很多教程。有個(gè)叫邁克爾·尼爾森(Michael Nielsen)的人只用了74行Python程序代碼就做成了這件事。
給你幾個(gè)手寫阿拉伯?dāng)?shù)字,可能是信封上的郵政編碼也可能是支票上的錢數(shù),你怎么教會計(jì)算機(jī)識別這些數(shù)字呢?
簡化
想要讓計(jì)算機(jī)處理,首先要把問題“數(shù)學(xué)化”。寫在紙上的字千變?nèi)f化,我們首先把它簡化成一個(gè)數(shù)學(xué)問題。我們用幾個(gè)正方形把各個(gè)數(shù)字分開,就像下面這張圖一樣。
現(xiàn)在問題變成給你一個(gè)包含一個(gè)手寫數(shù)字的正方形區(qū)域,你能不能識別是什么數(shù)字?
再進(jìn)一步,我們忽略字的顏色,降低正方形的分辨率,就考慮一個(gè)28×28=784個(gè)像素的圖像。我們規(guī)定每一個(gè)像素值都是0到1之間的一個(gè)小數(shù),代表灰度的深淺,0表示純白色,1表示純黑。這樣一來,手寫的數(shù)字“1”就變成了下面這個(gè)樣子 ——?
圖片來自packtpub.com, The MNIST dataset。實(shí)際分辨率是28×28。
這就完全是一個(gè)數(shù)學(xué)問題了。現(xiàn)在無非就是給你784個(gè)0-1之間的數(shù),你能不能對這組數(shù)做一番操作,判斷它們對應(yīng)的是哪個(gè)阿拉伯?dāng)?shù)字。輸入784個(gè)數(shù),輸出一個(gè)數(shù)。
這件事從常理來說并不是一點(diǎn)頭緒都沒有。比如任何人寫數(shù)字“7”,左下角的區(qū)域應(yīng)該是空白的,這就意味著784個(gè)像素點(diǎn)中對應(yīng)正方形左下角區(qū)域那些點(diǎn)的數(shù)值應(yīng)該是0。再比如說,寫“0”的時(shí)候的中間是空的,那么對應(yīng)正方形中間的那些像素點(diǎn)的數(shù)值應(yīng)該是0。
然而,這種人為找規(guī)律的思路非常不可行。首先你很難想到所有的規(guī)則,更重要的是很多規(guī)則都是模糊的——比如,7的左下角空白,那這個(gè)空白區(qū)域應(yīng)該有多大呢?不同人的寫法肯定不一樣。
設(shè)定
我們要用的方法叫做“誤差反向傳播網(wǎng)絡(luò)”,它最早起源于1986年發(fā)表在《自然》雜志上的一篇論文,這篇論文的被引用次數(shù)已經(jīng)超過了4萬次,是深度學(xué)習(xí)的里程碑。
根據(jù)尼爾森的教程,我們建一個(gè)三層的神經(jīng)網(wǎng)絡(luò),就是下面這張圖 ——
第一層是輸入數(shù)據(jù),圖中只畫了8個(gè)點(diǎn),但其實(shí)上有784個(gè)數(shù)據(jù)點(diǎn)。
第二層是隱藏層,由15個(gè)神經(jīng)元組成。
第三層是輸出層,有10個(gè)神經(jīng)元,對應(yīng)0-9這10個(gè)數(shù)字。
每個(gè)神經(jīng)元都由輸入、權(quán)重和偏移值參數(shù)、輸出三個(gè)部分組成。
隱藏層15個(gè)神經(jīng)元中的每一個(gè)都要接收全部784個(gè)像素的數(shù)據(jù)輸入,總共有784×15=11760個(gè)權(quán)重和15個(gè)偏移值。
第三層10個(gè)神經(jīng)元的每一個(gè)都要跟第二層的所有15個(gè)神經(jīng)元連接,總共有150個(gè)權(quán)重和10個(gè)偏移值。這樣下來,整個(gè)神經(jīng)網(wǎng)絡(luò)一共有11935個(gè)可調(diào)參數(shù)。
理想狀態(tài)下,784個(gè)輸入值在經(jīng)過隱藏層和輸出層這兩層神經(jīng)元的處理后,輸出層的哪個(gè)神經(jīng)元的輸出結(jié)果最接近于1,神經(jīng)網(wǎng)絡(luò)就判斷這是哪一個(gè)手寫數(shù)字。
訓(xùn)練
網(wǎng)上有個(gè)公開的現(xiàn)成數(shù)據(jù)庫叫“MNIST”,其中包括6萬個(gè)手寫的數(shù)字圖像,都標(biāo)記了它們代表的是哪些數(shù)字。
我們要做的是用這些圖像訓(xùn)練神經(jīng)網(wǎng)絡(luò),去調(diào)整好那11935個(gè)參數(shù)。我們可以用其中3萬個(gè)圖像訓(xùn)練,用剩下3萬個(gè)圖像檢驗(yàn)訓(xùn)練效果。
這個(gè)訓(xùn)練調(diào)整參數(shù)的方法,就是“誤差反向傳播”。比如我們輸入一個(gè)數(shù)字“7”的圖像。
神經(jīng)網(wǎng)絡(luò)實(shí)際收到的是784個(gè)像素值。
經(jīng)過兩層神經(jīng)元的傳播計(jì)算,理想情況下,輸出層的7號神經(jīng)元的輸出值應(yīng)該最接近于1,其他的都很接近于0。一開始結(jié)果并不是這么準(zhǔn)確,我們要用一套特定的規(guī)則去調(diào)整各個(gè)神經(jīng)元的參數(shù)。
參數(shù)調(diào)整有個(gè)方向,叫做“誤差梯度”。比如對輸出層的7號神經(jīng)元來說,調(diào)整方向就是要讓它的輸出值變大;對其他9個(gè)神經(jīng)元,調(diào)整方向則是讓輸出值變小。這個(gè)調(diào)整策略是看哪個(gè)輸入信息對結(jié)果的影響大,對它的權(quán)重的調(diào)整就要大一點(diǎn)。
幾萬個(gè)訓(xùn)練圖像可能會被反復(fù)使用多次,神經(jīng)網(wǎng)絡(luò)參數(shù)不斷修改,最終將會達(dá)到穩(wěn)定。慢慢地,新圖像喂進(jìn)來,這11935個(gè)參數(shù)的變化越來越小,最終幾乎不動(dòng)了。
那就是說,這個(gè)識別手寫數(shù)字的神經(jīng)網(wǎng)絡(luò),已經(jīng)練成了。事實(shí)證明這個(gè)簡單網(wǎng)絡(luò)的識別準(zhǔn)確率能達(dá)到95%!?
在理論上,這個(gè)方法可以用來學(xué)習(xí)識別一切圖像。你只要把一張張的圖片喂給神經(jīng)網(wǎng)絡(luò),告訴它圖上有什么,它終將自己發(fā)現(xiàn)各個(gè)東西的像素規(guī)律……但是在實(shí)踐上,這個(gè)方法非常不可行。
卷積網(wǎng)絡(luò)如何實(shí)現(xiàn)圖像識別
計(jì)算機(jī)不怕“笨辦法”,但是哪怕你能讓它稍微變聰明一點(diǎn),你的收獲都是巨大的。
“笨辦法”和人的辦法
下面這張圖中有一只貓、一只狗、綠色的草地和藍(lán)天白云。它的分辨率是350×263,總共92050個(gè)像素點(diǎn)。考慮到這是一張彩色照片,每個(gè)像素點(diǎn)必須用三個(gè)數(shù)來代表顏色,這張圖要用27萬個(gè)數(shù)來描寫。
要想用誤差反向傳播神經(jīng)網(wǎng)絡(luò)識別這樣的圖,它第二層每一個(gè)神經(jīng)元都要有27萬個(gè)權(quán)重參數(shù)。要想識別包括貓、狗、草地、藍(lán)天白云這種水平的常見物體,它的輸出層必須有上千個(gè)神經(jīng)元才行。這樣訓(xùn)練一次的計(jì)算量將是巨大的?—— 但這還不是最大的難點(diǎn)。
最大的難點(diǎn)是神經(jīng)網(wǎng)絡(luò)中的參數(shù)越多,它需要的訓(xùn)練素材就越多。并不是任何照片都能用作訓(xùn)練素材,你必須事先靠人工標(biāo)記照片上都有什么東西作為標(biāo)準(zhǔn)答案,才能給神經(jīng)網(wǎng)絡(luò)提供有效反饋。這么多訓(xùn)練素材上哪找呢?
我聽羅胖跨年演講學(xué)到一個(gè)詞叫“回到母體”,意思大約是從新技術(shù)后退一步,返回基本常識,也許能發(fā)現(xiàn)新的創(chuàng)新點(diǎn)。現(xiàn)在我們回到人腦,想想為什么簡單神經(jīng)網(wǎng)絡(luò)是個(gè)笨辦法。
人腦并不是每次都把一張圖中所有的像素都放在一起考慮。我們有一個(gè)“看什么”,和一個(gè)“往哪看”的思路。
讓你找貓,你會先大概想象一下貓是什么樣子,然后從一張大圖上一塊一塊地找,你沒必要同時(shí)考慮圖片的左上角和右下角。這是“往哪看”。
還有,當(dāng)你想象貓的時(shí)候,雖然不能完全說清,但你畢竟還是按照一定的規(guī)律去找。比如貓身上有毛,它有兩個(gè)眼睛和一條尾巴等等。你看的不是單個(gè)的像素點(diǎn),你看的是一片一片的像素群的模式變化。這是“看什么”。
我理解“卷積網(wǎng)絡(luò)”,就是這兩個(gè)思路的產(chǎn)物。
競賽
斯坦福大學(xué)的華裔計(jì)算機(jī)科學(xué)家李飛飛,組織了一個(gè)叫做ImageNet的機(jī)器學(xué)習(xí)圖形識別比賽,從2010年開始每年舉行一次。這個(gè)比賽每年都給參賽者提供一百萬張圖片作為訓(xùn)練素材!其中每一張圖都由人工標(biāo)記了圖中的每個(gè)物體。
??
圖片素材中共有大約一千個(gè)物體分類。這就意味著,對每一種物體,人工智能都有大約一千次訓(xùn)練機(jī)會。
比賽規(guī)則是參賽者用這一百萬張圖片訓(xùn)練自己的程序,然后讓程序識別一些新的圖片。每張新圖片有一個(gè)事先設(shè)定的標(biāo)準(zhǔn)答案,而參賽者的程序可以猜五個(gè)答案,只要其中有一個(gè)判斷跟標(biāo)準(zhǔn)答案相符合,就算識別結(jié)果準(zhǔn)確。
上圖是歷屆比賽冠軍的成績。2010和2011年,最好成績的判斷錯(cuò)誤率都在26%以上,但是2012年,錯(cuò)誤率下降到了16%,從此之后更是直線下降。2017年的錯(cuò)誤率是2.3%,這個(gè)水平已經(jīng)超過人類。
那2012年到底發(fā)生了什么呢?
發(fā)生了“卷積網(wǎng)絡(luò)”。
卷積網(wǎng)絡(luò)
2012年的冠軍是多倫多大學(xué)的一個(gè)研究組,他們使用的方法就是卷積網(wǎng)絡(luò)。正是因?yàn)檫@個(gè)方法太成功了,“深度學(xué)習(xí)”才流行起來,現(xiàn)在搞圖形識別幾乎全都是用這個(gè)方法。
獲獎(jiǎng)團(tuán)隊(duì)描述卷積網(wǎng)絡(luò)的論文的第一作者叫艾利克斯·克里澤夫斯基(Alex Krizhevsky),當(dāng)時(shí)他只是一個(gè)研究生,這篇論文現(xiàn)在被人稱為“AlexNet” 。
簡單來說,AlexNet的方法是在最基本的像素到最終識別的物體之間加入了幾個(gè)邏輯層,也就是“卷積層”。“卷積”是一種數(shù)學(xué)操作,可以理解成“過濾”,或者叫“濾波”,意思是從細(xì)致的信號中識別尺度更大一點(diǎn)的結(jié)構(gòu)。
每一個(gè)卷積層識別一種特定規(guī)模的圖形模式,然后后面一層只要在前面一層的基礎(chǔ)上進(jìn)行識別,這就解決了“看什么”和“往哪看”的問題。
比如說我們要搞人臉識別,卷積網(wǎng)絡(luò)方法把問題分解為三個(gè)卷積層。
圖片來自cdn.edureka.co
第一層,是先從像素點(diǎn)中識別一些小尺度的線條結(jié)構(gòu)。第二層,是根據(jù)第一層識別出來的小尺度結(jié)構(gòu)識別像眼睛、耳朵、嘴之類的局部器官。第三層,才是根據(jù)這些局部器官識別人臉。其中每一層的神經(jīng)網(wǎng)絡(luò)從前面一層獲得輸入,經(jīng)過深度學(xué)習(xí)之后再輸出到后面一層。
AlexNet的論文提到,他的識別系統(tǒng)足足分了五個(gè)卷積層,每一層都由很多個(gè)“特征探測器”組成。第一層有96個(gè)特征探測器,各自負(fù)責(zé)探測整個(gè)圖形中哪些地方有下面這96種特征中的一種。
比如說,第一層的第一個(gè)特征探測器,專門負(fù)責(zé)判斷圖中哪里有像下面這樣,從左下到右上的線條結(jié)構(gòu)。
這個(gè)特征探測器本身也是一個(gè)神經(jīng)網(wǎng)絡(luò),有自己的神經(jīng)元——而這里的妙處在于,它的每一個(gè)神經(jīng)元只負(fù)責(zé)原始圖像中一個(gè)11×11小區(qū)塊。考慮到三種顏色,輸入值只有 11×11×3= 363個(gè)。而且因?yàn)檫@個(gè)探測器只負(fù)責(zé)探測一種結(jié)構(gòu),每個(gè)神經(jīng)元的參數(shù)都是一樣的!這就大大降低了運(yùn)算量。
第一層的其他探測器則負(fù)責(zé)判斷像垂直條紋、斑點(diǎn)、顏色從亮到暗等各種小結(jié)構(gòu),一共是96種。
也就是說,卷積網(wǎng)絡(luò)的第一層先把整個(gè)圖像分解成11×11的區(qū)塊,看看每個(gè)區(qū)塊里都是什么結(jié)構(gòu)。為了避免結(jié)構(gòu)被區(qū)塊拆散,相鄰的區(qū)塊之間還要有相當(dāng)大的重疊。經(jīng)過第一層的過濾,我們看到的就不再是一個(gè)個(gè)的像素點(diǎn),而是一張小結(jié)構(gòu)的邏輯圖。
然后第二卷積層再從這些小結(jié)構(gòu)上識別出更大、更復(fù)雜也更多的結(jié)構(gòu)來。以此類推,一直到第五層。下面這張圖表現(xiàn)了從第一層到第三層識別的模塊(灰色)和對應(yīng)的實(shí)例(彩色)。
我們看到,第二個(gè)卷積層已經(jīng)能識別圓形之類的結(jié)構(gòu),第三層已經(jīng)能識別車輪和小的人臉。五個(gè)卷積層之外,AlexNet還設(shè)置了三個(gè)全局層,用于識別更大的物體。整個(gè)分層的結(jié)構(gòu)是下面這樣。
圖片來自 Machine Learning Blog
這樣分層方式有很多好處:第一,卷積層中的神經(jīng)元只要處理一個(gè)小區(qū)域的數(shù)據(jù),而且參數(shù)可以重復(fù)使用,大大減少了運(yùn)算量。第二,因?yàn)榭梢砸粋€(gè)區(qū)域一個(gè)區(qū)域地搜索,就可以發(fā)現(xiàn)小尺度的物體。
意識到圖形識別有多難,你就能體會到AlexNet的識別水平有多神奇。下面這張圖中有個(gè)紅色的螨蟲,它出現(xiàn)在圖像的邊緣,但是被正確識別出來了。
AlexNet還猜測它可能是蜘蛛、蟑螂、虱子或者海星,但是認(rèn)為它是螨蟲的可能性最高。這個(gè)判斷水平已經(jīng)超過了我,我都不知道那是個(gè)螨蟲。
再比如下面這張圖,標(biāo)準(zhǔn)答案是“蘑菇”,但AlexNet給的第一判斷是更精確的“傘菌”,“蘑菇”是它的第二選項(xiàng)!
而現(xiàn)在基于類似的卷積網(wǎng)絡(luò)方法的深度學(xué)習(xí)程序,水平已經(jīng)遠(yuǎn)遠(yuǎn)超過了AlexNet。
深度學(xué)習(xí)(不)能干什么
AlexNet那篇論文的幾個(gè)作者成立了一家創(chuàng)業(yè)公司,這家公司在2013年被Google收購了。半年之后,Google相冊就有了基于圖片識別的搜索能力。
緊接著,Google就可以從自家拍攝的街景圖像中識別每家每戶的門牌號碼了。Google還奪得了2014年的ImageNet競賽冠軍。
所以千萬別低估工程師迭代新技術(shù)的能力。他們舉一反三,一旦發(fā)現(xiàn)這個(gè)技術(shù)好,馬上就能給用到極致。2012年之前深度學(xué)習(xí)還是機(jī)器學(xué)習(xí)中的“非主流”,現(xiàn)在是絕對主流。
深度學(xué)習(xí)能做一些令人贊嘆的事情。比如說對于一個(gè)不太容易判斷的物體,如果網(wǎng)絡(luò)知道圖中有草地,那么它就會自動(dòng)判斷這應(yīng)該是一個(gè)經(jīng)常放在戶外的東西,而不太可能是一件家具。
這完全是基于經(jīng)驗(yàn)的判斷,你不需要告訴它家具一般不放戶外。看的圖多了,它仿佛獲得了一些智慧!一個(gè)生活經(jīng)驗(yàn)少的人可做不到這一點(diǎn)。
但是蒂莫西·李也提醒了我們深度學(xué)習(xí)不能做什么。
比如說把一個(gè)物體放大一點(diǎn)、或者旋轉(zhuǎn)一個(gè)角度、或者調(diào)整一下光線,卷積網(wǎng)絡(luò)就不知道那是同一個(gè)東西,它必須重新判斷。深度學(xué)習(xí)完全是基于經(jīng)驗(yàn)的判斷,它沒有任何邏輯推理能力。
在我看來,這種學(xué)習(xí)方法,就如同在數(shù)學(xué)考試前夜背誦習(xí)題集。你能猜對答案是因?yàn)槟惚痴b過類似的題,但是你并不真的理解數(shù)學(xué)。
這樣的算法會有創(chuàng)造力嗎?深度學(xué)習(xí)能發(fā)現(xiàn)圖像中從來沒有被人命名過的“怪異”物體嗎?我們見識了光憑經(jīng)驗(yàn)的操作能強(qiáng)大到什么程度,但是我們也能看出來,它距離真正的智能還非常遙遠(yuǎn)。
?《深度學(xué)習(xí):智能時(shí)代的核心驅(qū)動(dòng)力量》
原價(jià)88元
玩酷粉絲特惠價(jià):66元!
▲
點(diǎn)擊【添加到我的小程序】
更方便找到玩酷屋哦!
▲
關(guān)注即可領(lǐng)取新人專屬福利,即領(lǐng)即用
※本文改編自得到專欄《萬維鋼·精英日課3》,已獲授權(quán),轉(zhuǎn)載請聯(lián)系原作者。萬維鋼,網(wǎng)名“同人于野”,前物理學(xué)家,現(xiàn)科學(xué)作家。
玩酷屋——超級數(shù)學(xué)建模自營店
?點(diǎn)擊“閱讀原文"立即購買
總結(jié)
以上是生活随笔為你收集整理的豆瓣最高评分8.1!万维钢:读懂这本书,你会比身边人更深的理解这个时代的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这些Python骚操作,你值得拥有
- 下一篇: 比乐高便宜十倍!4合1电动遥控积木玩法百