你可能已經(jīng)接觸過編程,并開發(fā)過一兩款程序。同時(shí)你可能讀過關(guān)于深度學(xué)習(xí)或者機(jī)器學(xué)習(xí)的鋪天蓋地的報(bào)道张漂,盡管很多時(shí)候它們被賦予了更廣義的名字:人工智能。實(shí)際上谨娜,或者說幸運(yùn)的是航攒,大部分程序并不需要深度學(xué)習(xí)或者是更廣義上的人工智能技術(shù)。例如趴梢,如果我們要為一臺(tái)微波爐編寫一個(gè)用戶界面屎债,只需要一點(diǎn)兒工夫我們便能設(shè)計(jì)出十幾個(gè)按鈕以及一系列能精確描述微波爐在各種情況下的表現(xiàn)的規(guī)則。再比如垢油,假設(shè)我們要編寫一個(gè)電子郵件客戶端盆驹。這樣的程序比微波爐要復(fù)雜一些,但我們還是可以沉下心來一步一步思考:客戶端的用戶界面將需要幾個(gè)輸入框來接受收件人滩愁、主題躯喇、郵件正文等,程序?qū)⒈O(jiān)聽鍵盤輸入并寫入一個(gè)緩沖區(qū)硝枉,然后將它們顯示在相應(yīng)的輸入框中廉丽。當(dāng)用戶點(diǎn)擊“發(fā)送”按鈕時(shí),我們需要檢查收件人郵箱地址的格式是否正確妻味,并檢查郵件主題是否為空正压,或在主題為空時(shí)警告用戶,而后用相應(yīng)的協(xié)議傳送郵件责球。
值得注意的是焦履,在以上兩個(gè)例子中拓劝,我們都不需要收集真實(shí)世界中的數(shù)據(jù),也不需要系統(tǒng)地提取這些數(shù)據(jù)的特征嘉裤。只要有充足的時(shí)間郑临,我們的常識(shí)與編程技巧已經(jīng)足夠讓我們完成任務(wù)。
與此同時(shí)屑宠,我們很容易就能找到一些連世界上最好的程序員也無法僅用編程技巧解決的簡單問題厢洞。例如,假設(shè)我們想要編寫一個(gè)判定一張圖像中有沒有貓的程序典奉。這件事聽起來好像很簡單躺翻,對(duì)不對(duì)?程序只需要對(duì)每張輸入圖像輸出“真”(表示有貓)或者“假”(表示無貓)即可卫玖。但令人驚訝的是获枝,即使是世界上最優(yōu)秀的計(jì)算機(jī)科學(xué)家和程序員也不懂如何編寫這樣的程序。
我們該從哪里入手呢骇笔?我們先進(jìn)一步簡化這個(gè)問題:若假設(shè)所有圖像的高和寬都是同樣的400像素大小,一個(gè)像素由紅綠藍(lán)三個(gè)值構(gòu)成嚣崭,那么一張圖像就由近50萬個(gè)數(shù)值表示笨触。那么哪些數(shù)值隱藏著我們需要的信息呢?是所有數(shù)值的平均數(shù)雹舀,還是四個(gè)角的數(shù)值芦劣,抑或是圖像中的某一個(gè)特別的點(diǎn)?事實(shí)上说榆,要想解讀圖像中的內(nèi)容虚吟,需要尋找僅僅在結(jié)合成千上萬的數(shù)值時(shí)才會(huì)出現(xiàn)的特征,如邊緣签财、質(zhì)地串慰、形狀、眼睛唱蒸、鼻子等邦鲫,最終才能判斷圖像中是否有貓。
一種解決以上問題的思路是逆向思考神汹。與其設(shè)計(jì)一個(gè)解決問題的程序庆捺,不如從最終的需求入手來尋找一個(gè)解決方案。事實(shí)上屁魏,這也是目前的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)應(yīng)用共同的核心思想:我們可以稱其為“用數(shù)據(jù)編程”滔以。與其枯坐在房間里思考怎么設(shè)計(jì)一個(gè)識(shí)別貓的程序,不如利用人類肉眼在圖像中識(shí)別貓的能力。我們可以收集一些已知包含貓與不包含貓的真實(shí)圖像此迅,然后我們的目標(biāo)就轉(zhuǎn)化成如何從這些圖像入手得到一個(gè)可以推斷出圖像中是否有貓的函數(shù)。這個(gè)函數(shù)的形式通常通過我們的知識(shí)來針對(duì)特定問題選定甲献。例如撬即,我們使用一個(gè)二次函數(shù)來判斷圖像中是否有貓立磁,但是像二次函數(shù)系數(shù)值這樣的函數(shù)參數(shù)的具體值則是通過數(shù)據(jù)來確定。
通俗來說剥槐,機(jī)器學(xué)習(xí)是一門討論各式各樣的適用于不同問題的函數(shù)形式唱歧,以及如何使用數(shù)據(jù)來有效地獲取函數(shù)參數(shù)具體值的學(xué)科。深度學(xué)習(xí)是指機(jī)器學(xué)習(xí)中的一類函數(shù)粒竖,它們的形式通常為多層神經(jīng)網(wǎng)絡(luò)颅崩。近年來,仰仗著大數(shù)據(jù)集和強(qiáng)大的硬件蕊苗,深度學(xué)習(xí)已逐漸成為處理圖像沿后、文本語料和聲音信號(hào)等復(fù)雜高維度數(shù)據(jù)的主要方法。
我們現(xiàn)在正處于一個(gè)程序設(shè)計(jì)得到深度學(xué)習(xí)的幫助越來越多的時(shí)代朽砰。這可以說是計(jì)算機(jī)科學(xué)歷史上的一個(gè)分水嶺尖滚。舉個(gè)例子,深度學(xué)習(xí)已經(jīng)在你的手機(jī)里:拼寫校正瞧柔、語音識(shí)別漆弄、認(rèn)出社交媒體照片里的好友們等。得益于優(yōu)秀的算法造锅、快速而廉價(jià)的算力撼唾、前所未有的大量數(shù)據(jù)以及強(qiáng)大的軟件工具,如今大多數(shù)軟件工程師都有能力建立復(fù)雜的模型來解決十年前連最優(yōu)秀的科學(xué)家都覺得棘手的問題哥蔚。
本書希望能幫助讀者進(jìn)入深度學(xué)習(xí)的浪潮中倒谷。我們希望結(jié)合數(shù)學(xué)、代碼和樣例讓深度學(xué)習(xí)變得觸手可及糙箍。本書不要求具有高深的數(shù)學(xué)或編程背景渤愁,我們將隨著章節(jié)的發(fā)展逐一解釋所需要的知識(shí)。更值得一提的是深夯,本書的每一節(jié)都是一個(gè)可以獨(dú)立運(yùn)行的Jupyter記事本猴伶。讀者可以從網(wǎng)上獲得這些記事本,并且可以在個(gè)人電腦或云端服務(wù)器上執(zhí)行它們塌西。這樣讀者就可以隨意改動(dòng)書中的代碼并得到及時(shí)反饋他挎。我們希望本書能幫助和啟發(fā)新一代的程序員、創(chuàng)業(yè)者捡需、統(tǒng)計(jì)學(xué)家办桨、生物學(xué)家,以及所有對(duì)深度學(xué)習(xí)感興趣的人站辉。
起源
雖然深度學(xué)習(xí)似乎是最近幾年剛興起的名詞呢撞,但它所基于的神經(jīng)網(wǎng)絡(luò)模型和用數(shù)據(jù)編程的核心思想已經(jīng)被研究了數(shù)百年损姜。自古以來,人類就一直渴望能從數(shù)據(jù)中分析出預(yù)知未來的竅門殊霞。實(shí)際上摧阅,數(shù)據(jù)分析正是大部分自然科學(xué)的本質(zhì),我們希望從日常的觀測中提取規(guī)則绷蹲,并找尋不確定性棒卷。
早在17世紀(jì),雅各比·伯努利(1655--1705)提出了描述只有兩種結(jié)果的隨機(jī)過程(如拋擲一枚硬幣)的伯努利分布祝钢。大約一個(gè)世紀(jì)之后比规,卡爾·弗里德里希·高斯(1777--1855)發(fā)明了今日仍廣泛用在從保險(xiǎn)計(jì)算到醫(yī)學(xué)診斷等領(lǐng)域的最小二乘法拦英。概率論蜒什、統(tǒng)計(jì)學(xué)和模式識(shí)別等工具幫助自然科學(xué)的實(shí)驗(yàn)學(xué)家們從數(shù)據(jù)回歸到自然定律,從而發(fā)現(xiàn)了如歐姆定律(描述電阻兩端電壓和流經(jīng)電阻電流關(guān)系的定律)這類可以用線性模型完美表達(dá)的一系列自然法則疤估。
即使是在中世紀(jì)灾常,數(shù)學(xué)家也熱衷于利用統(tǒng)計(jì)學(xué)來做出估計(jì)。例如铃拇,在雅各比·科貝爾(1460--1533)的幾何書中記載了使用16名男子的平均腳長來估計(jì)男子的平均腳長钞瀑。
<center style="-webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-size-adjust: none; box-sizing: border-box; font-size: 15px; color: rgb(52, 73, 94); font-family: "Source Sans Pro", "Helvetica Neue", Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">圖1.1 在中世紀(jì),16名男子的平均腳長被用來估計(jì)男子的平均腳長</center>
如圖1.1所示锚贱,在這個(gè)研究中,16位成年男子被要求在離開教堂時(shí)站成一排并把腳貼在一起关串,而后他們腳的總長度除以16得到了一個(gè)估計(jì):這個(gè)數(shù)字大約相當(dāng)于今日的一英尺拧廊。這個(gè)算法之后又被改進(jìn),以應(yīng)對(duì)特異形狀的腳:最長和最短的腳不計(jì)入晋修,只對(duì)剩余的腳長取平均值吧碾,即裁剪平均值的雛形。
現(xiàn)代統(tǒng)計(jì)學(xué)在20世紀(jì)的真正起飛要?dú)w功于數(shù)據(jù)的收集和發(fā)布墓卦。統(tǒng)計(jì)學(xué)巨匠之一羅納德·費(fèi)雪(1890--1962)對(duì)統(tǒng)計(jì)學(xué)理論和統(tǒng)計(jì)學(xué)在基因?qū)W中的應(yīng)用功不可沒倦春。他發(fā)明的許多算法和公式,例如線性判別分析和費(fèi)雪信息落剪,仍經(jīng)常被使用睁本。即使是他在1936年發(fā)布的Iris數(shù)據(jù)集,仍然偶爾被用于演示機(jī)器學(xué)習(xí)算法忠怖。
克勞德·香農(nóng)(1916--2001)的信息論以及阿蘭·圖靈 (1912--1954)的計(jì)算理論也對(duì)機(jī)器學(xué)習(xí)有深遠(yuǎn)影響呢堰。圖靈在他著名的論文《計(jì)算機(jī)器與智能》中提出了“機(jī)器可以思考嗎?”這樣一個(gè)問題 [1]凡泣。在他描述的“圖靈測試”中枉疼,如果一個(gè)人在使用文本交互時(shí)不能區(qū)分他的對(duì)話對(duì)象到底是人類還是機(jī)器的話皮假,那么即可認(rèn)為這臺(tái)機(jī)器是有智能的。時(shí)至今日骂维,智能機(jī)器的發(fā)展可謂日新月異惹资。
另一個(gè)對(duì)深度學(xué)習(xí)有重大影響的領(lǐng)域是神經(jīng)科學(xué)與心理學(xué)。既然人類顯然能夠展現(xiàn)出智能航闺,那么對(duì)于解釋并逆向工程人類智能機(jī)理的探究也在情理之中褪测。最早的算法之一是由唐納德·赫布(1904--1985)正式提出的。在他開創(chuàng)性的著作《行為的組織》中来颤,他提出神經(jīng)是通過正向強(qiáng)化來學(xué)習(xí)的汰扭,即赫布理論 [2]。赫布理論是感知機(jī)學(xué)習(xí)算法的原型福铅,并成為支撐今日深度學(xué)習(xí)的隨機(jī)梯度下降算法的基石:強(qiáng)化合意的行為萝毛、懲罰不合意的行為,最終獲得優(yōu)良的神經(jīng)網(wǎng)絡(luò)參數(shù)滑黔。
來源于生物學(xué)的靈感是神經(jīng)網(wǎng)絡(luò)名字的由來笆包。這類研究者可以追溯到一個(gè)多世紀(jì)前的亞歷山大·貝恩(1818--1903)和查爾斯·斯科特·謝靈頓(1857--1952)。研究者們嘗試組建模仿神經(jīng)元互動(dòng)的計(jì)算電路略荡。隨著時(shí)間發(fā)展庵佣,神經(jīng)網(wǎng)絡(luò)的生物學(xué)解釋被稀釋,但仍保留了這個(gè)名字汛兜。時(shí)至今日巴粪,絕大多數(shù)神經(jīng)網(wǎng)絡(luò)都包含以下的核心原則。
- 交替使用線性處理單元與非線性處理單元粥谬,它們經(jīng)常被稱為“層”肛根。
- 使用鏈?zhǔn)椒▌t(即反向傳播)來更新網(wǎng)絡(luò)的參數(shù)。
在最初的快速發(fā)展之后漏策,自約1995年起至2005年派哲,大部分機(jī)器學(xué)習(xí)研究者的視線從神經(jīng)網(wǎng)絡(luò)上移開了。這是由于多種原因掺喻。首先芭届,訓(xùn)練神經(jīng)網(wǎng)絡(luò)需要極強(qiáng)的計(jì)算力。盡管20世紀(jì)末內(nèi)存已經(jīng)足夠感耙,計(jì)算力卻不夠充足褂乍。其次,當(dāng)時(shí)使用的數(shù)據(jù)集也相對(duì)小得多即硼。費(fèi)雪在1936年發(fā)布的的Iris數(shù)據(jù)集僅有150個(gè)樣本树叽,并被廣泛用于測試算法的性能。具有6萬個(gè)樣本的MNIST數(shù)據(jù)集在當(dāng)時(shí)已經(jīng)被認(rèn)為是非常龐大了谦絮,盡管它如今已被認(rèn)為是典型的簡單數(shù)據(jù)集题诵。由于數(shù)據(jù)和計(jì)算力的稀缺洁仗,從經(jīng)驗(yàn)上來說,如核方法性锭、決策樹和概率圖模型等統(tǒng)計(jì)工具更優(yōu)赠潦。它們不像神經(jīng)網(wǎng)絡(luò)一樣需要長時(shí)間的訓(xùn)練,并且在強(qiáng)大的理論保證下提供可以預(yù)測的結(jié)果草冈。
發(fā)展
互聯(lián)網(wǎng)的崛起她奥、價(jià)廉物美的傳感器和低價(jià)的存儲(chǔ)器令我們越來越容易獲取大量數(shù)據(jù)。加之便宜的計(jì)算力怎棱,尤其是原本為電腦游戲設(shè)計(jì)的GPU的出現(xiàn)哩俭,上文描述的情況改變了許多。一瞬間拳恋,原本被認(rèn)為不可能的算法和模型變得觸手可及凡资。這樣的發(fā)展趨勢從如下表格中可見一斑。
年代 | 數(shù)據(jù)樣本個(gè)數(shù) | 內(nèi)存 | 每秒浮點(diǎn)計(jì)算數(shù) |
---|---|---|---|
1970 | 100(Iris) | 1 KB | 100 K(Intel 8080) |
1980 | 1 K(波士頓房價(jià)) | 100 KB | 1 M(Intel 80186) |
1990 | 10 K(手寫字符識(shí)別) | 10 MB | 10 M(Intel 80486) |
2000 | 10 M(網(wǎng)頁) | 100 MB | 1 G(Intel Core) |
2010 | 10 G(廣告) | 1 GB | 1 T(NVIDIA C2050) |
2020 | 1 T(社交網(wǎng)絡(luò)) | 100 GB | 1 P(NVIDIA DGX-2) |
很顯然谬运,存儲(chǔ)容量沒能跟上數(shù)據(jù)量增長的步伐隙赁。與此同時(shí),計(jì)算力的增長又蓋過了數(shù)據(jù)量的增長梆暖。這樣的趨勢使得統(tǒng)計(jì)模型可以在優(yōu)化參數(shù)上投入更多的計(jì)算力伞访,但同時(shí)需要提高存儲(chǔ)的利用效率,例如使用非線性處理單元轰驳。這也相應(yīng)導(dǎo)致了機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)的最優(yōu)選擇從廣義線性模型及核方法變化為深度多層神經(jīng)網(wǎng)絡(luò)厚掷。這樣的變化正是諸如多層感知機(jī)、卷積神經(jīng)網(wǎng)絡(luò)级解、長短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)和Q學(xué)習(xí)等深度學(xué)習(xí)的支柱模型在過去10年從坐了數(shù)十年的冷板凳上站起來被“重新發(fā)現(xiàn)”的原因冒黑。
近年來在統(tǒng)計(jì)模型、應(yīng)用和算法上的進(jìn)展常被拿來與寒武紀(jì)大爆發(fā)(歷史上物種數(shù)量大爆發(fā)的一個(gè)時(shí)期)做比較蠕趁。但這些進(jìn)展不僅僅是因?yàn)榭捎觅Y源變多了而讓我們得以用新瓶裝舊酒薛闪。下面的列表僅僅涵蓋了近十年來深度學(xué)習(xí)長足發(fā)展的部分原因辛馆。
優(yōu)秀的容量控制方法俺陋,如丟棄法,使大型網(wǎng)絡(luò)的訓(xùn)練不再受制于過擬合(大型神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)記憶大部分訓(xùn)練數(shù)據(jù)的行為) [3]昙篙。這是靠在整個(gè)網(wǎng)絡(luò)中注入噪聲而達(dá)到的腊状,如訓(xùn)練時(shí)隨機(jī)將權(quán)重替換為隨機(jī)的數(shù)字 [4]。
注意力機(jī)制解決了另一個(gè)困擾統(tǒng)計(jì)學(xué)超過一個(gè)世紀(jì)的問題:如何在不增加參數(shù)的情況下擴(kuò)展一個(gè)系統(tǒng)的記憶容量和復(fù)雜度苔可。注意力機(jī)制使用了一個(gè)可學(xué)習(xí)的指針結(jié)構(gòu)來構(gòu)建出一個(gè)精妙的解決方法 [5]缴挖。也就是說,與其在像機(jī)器翻譯這樣的任務(wù)中記憶整個(gè)句子焚辅,不如記憶指向翻譯的中間狀態(tài)的指針映屋。由于生成譯文前不需要再存儲(chǔ)整句原文的信息苟鸯,這樣的結(jié)構(gòu)使準(zhǔn)確翻譯長句變得可能。
記憶網(wǎng)絡(luò) [6]和神經(jīng)編碼器—解釋器 [7]這樣的多階設(shè)計(jì)使得針對(duì)推理過程的迭代建模方法變得可能棚点。這些模型允許重復(fù)修改深度網(wǎng)絡(luò)的內(nèi)部狀態(tài)早处,這樣就能模擬出推理鏈條上的各個(gè)步驟,就好像處理器在計(jì)算過程中修改內(nèi)存一樣瘫析。
另一個(gè)重大發(fā)展是生成對(duì)抗網(wǎng)絡(luò)的發(fā)明 [8]砌梆。傳統(tǒng)上,用在概率分布估計(jì)和生成模型上的統(tǒng)計(jì)方法更多地關(guān)注于找尋正確的概率分布贬循,以及正確的采樣算法咸包。生成對(duì)抗網(wǎng)絡(luò)的關(guān)鍵創(chuàng)新在于將采樣部分替換成了任意的含有可微分參數(shù)的算法。這些參數(shù)將被訓(xùn)練到使辨別器不能再分辨真實(shí)的和生成的樣本杖虾。生成對(duì)抗網(wǎng)絡(luò)可使用任意算法來生成輸出的這一特性為許多技巧打開了新的大門烂瘫。例如生成奔跑的斑馬 [9]和生成名流的照片 [10] 都是生成對(duì)抗網(wǎng)絡(luò)發(fā)展的見證。
許多情況下單個(gè)GPU已經(jīng)不能滿足在大型數(shù)據(jù)集上進(jìn)行訓(xùn)練的需要亏掀。過去10年內(nèi)我們構(gòu)建分布式并行訓(xùn)練算法的能力已經(jīng)有了極大的提升忱反。設(shè)計(jì)可擴(kuò)展算法的最大瓶頸在于深度學(xué)習(xí)優(yōu)化算法的核心:隨機(jī)梯度下降需要相對(duì)更小的批量。與此同時(shí)滤愕,更小的批量也會(huì)降低GPU的效率温算。如果使用1,024個(gè)GPU,每個(gè)GPU的批量大小為32個(gè)樣本间影,那么單步訓(xùn)練的批量大小將是32,000個(gè)以上注竿。近年來李沐 [11]、Yang You等人 [12]以及Xianyan Jia等人 [13]的工作將批量大小增至多達(dá)64,000個(gè)樣例魂贬,并把在ImageNet數(shù)據(jù)集上訓(xùn)練ResNet-50模型的時(shí)間降到了7分鐘巩割。與之對(duì)比,最初的訓(xùn)練時(shí)間需要以天來計(jì)算付燥。
并行計(jì)算的能力也為至少在可以采用模擬情況下的強(qiáng)化學(xué)習(xí)的發(fā)展貢獻(xiàn)了力量宣谈。并行計(jì)算幫助計(jì)算機(jī)在圍棋、雅達(dá)利游戲键科、星際爭霸和物理模擬上達(dá)到了超過人類的水準(zhǔn)闻丑。
深度學(xué)習(xí)框架也在傳播深度學(xué)習(xí)思想的過程中扮演了重要角色。Caffe勋颖、 Torch和Theano這樣的第一代框架使建模變得更簡單嗦嗡。許多開創(chuàng)性的論文都用到了這些框架。如今它們已經(jīng)被TensorFlow(經(jīng)常是以高層API Keras的形式被使用)饭玲、CNTK侥祭、 Caffe 2 和Apache MXNet所取代。第三代,即命令式深度學(xué)習(xí)框架矮冬,是由用類似NumPy的語法來定義模型的 Chainer所開創(chuàng)的谈宛。這樣的思想后來被 PyTorch和MXNet的Gluon API 采用,后者也正是本書用來教學(xué)深度學(xué)習(xí)的工具胎署。
系統(tǒng)研究者負(fù)責(zé)構(gòu)建更好的工具入挣,統(tǒng)計(jì)學(xué)家建立更好的模型。這樣的分工使工作大大簡化硝拧。舉例來說径筏,在2014年時(shí),訓(xùn)練一個(gè)邏輯回歸模型曾是卡內(nèi)基梅隆大學(xué)布置給機(jī)器學(xué)習(xí)方向的新入學(xué)博士生的作業(yè)問題障陶。時(shí)至今日滋恬,這個(gè)問題只需要少于10行的代碼便可以完成,普通的程序員都可以做到抱究。
成功案例
長期以來機(jī)器學(xué)習(xí)總能完成其他方法難以完成的目標(biāo)恢氯。例如,自20世紀(jì)90年代起鼓寺,郵件的分揀就開始使用光學(xué)字符識(shí)別勋拟。實(shí)際上這正是知名的MNIST和USPS手寫數(shù)字?jǐn)?shù)據(jù)集的來源。機(jī)器學(xué)習(xí)也是電子支付系統(tǒng)的支柱妈候,可以用于讀取銀行支票敢靡、進(jìn)行授信評(píng)分以及防止金融欺詐。機(jī)器學(xué)習(xí)算法在網(wǎng)絡(luò)上被用來提供搜索結(jié)果苦银、個(gè)性化推薦和網(wǎng)頁排序啸胧。雖然長期處于公眾視野之外,但是機(jī)器學(xué)習(xí)已經(jīng)滲透到了我們工作和生活的方方面面幔虏。直到近年來纺念,在此前認(rèn)為無法被解決的問題以及直接關(guān)系到消費(fèi)者的問題上取得突破性進(jìn)展后,機(jī)器學(xué)習(xí)才逐漸變成公眾的焦點(diǎn)想括。這些進(jìn)展基本歸功于深度學(xué)習(xí)陷谱。
蘋果公司的Siri、亞馬遜的Alexa和谷歌助手一類的智能助手能以可觀的準(zhǔn)確率回答口頭提出的問題瑟蜈,甚至包括從簡單的開關(guān)燈具(對(duì)殘疾群體幫助很大)到提供語音對(duì)話幫助烟逊。智能助手的出現(xiàn)或許可以作為人工智能開始影響我們生活的標(biāo)志。
智能助手的關(guān)鍵是需要能夠精確識(shí)別語音踪栋,而這類系統(tǒng)在某些應(yīng)用上的精確度已經(jīng)漸漸增長到可以與人類比肩 [14]焙格。
物體識(shí)別也經(jīng)歷了漫長的發(fā)展過程图毕。在2010年從圖像中識(shí)別出物體的類別仍是一個(gè)相當(dāng)有挑戰(zhàn)性的任務(wù)夷都。當(dāng)年日本電氣、伊利諾伊大學(xué)香檳分校和羅格斯大學(xué)團(tuán)隊(duì)在ImageNet基準(zhǔn)測試上取得了28%的前五錯(cuò)誤率 [15]。到2017年囤官,這個(gè)數(shù)字降低到了2.25% [16]冬阳。研究人員在鳥類識(shí)別和皮膚癌診斷上,也取得了同樣驚世駭俗的成績党饮。
游戲曾被認(rèn)為是人類智能最后的堡壘肝陪。自使用時(shí)間差分強(qiáng)化學(xué)習(xí)玩雙陸棋的TD-Gammon開始,算法和算力的發(fā)展催生了一系列在游戲上使用的新算法刑顺。與雙陸棋不同氯窍,國際象棋有更復(fù)雜的狀態(tài)空間和更多的可選動(dòng)作《滋茫“深藍(lán)”用大量的并行狼讨、專用硬件和游戲樹的高效搜索打敗了加里·卡斯帕羅夫 [17]。圍棋因其龐大的狀態(tài)空間被認(rèn)為是更難的游戲柒竞,AlphaGo在2016年用結(jié)合深度學(xué)習(xí)與蒙特卡洛樹采樣的方法達(dá)到了人類水準(zhǔn) [18]政供。對(duì)德州撲克游戲而言,除了巨大的狀態(tài)空間之外朽基,更大的挑戰(zhàn)是游戲的信息并不完全可見布隔,例如看不到對(duì)手的牌。而“冷撲大師”用高效的策略體系超越了人類玩家的表現(xiàn) [19]稼虎。以上的例子都體現(xiàn)出了先進(jìn)的算法是人工智能在游戲上的表現(xiàn)提升的重要原因衅檀。
機(jī)器學(xué)習(xí)進(jìn)步的另一個(gè)標(biāo)志是自動(dòng)駕駛汽車的發(fā)展。盡管距離完全的自主駕駛還有很長的路要走霎俩,但諸如Tesla术吝、NVIDIA、 MobilEye和Waymo這樣的公司發(fā)布的具有部分自主駕駛功能的產(chǎn)品展示出了這個(gè)領(lǐng)域巨大的進(jìn)步茸苇。完全自主駕駛的難點(diǎn)在于它需要將感知排苍、思考和規(guī)則整合在同一個(gè)系統(tǒng)中。目前学密,深度學(xué)習(xí)主要被應(yīng)用在計(jì)算機(jī)視覺的部分淘衙,剩余的部分還是需要工程師們的大量調(diào)試。
以上列出的僅僅是近年來深度學(xué)習(xí)所取得的成果的冰山一角腻暮。機(jī)器人學(xué)彤守、物流管理、計(jì)算生物學(xué)哭靖、粒子物理學(xué)和天文學(xué)近年來的發(fā)展也有一部分要?dú)w功于深度學(xué)習(xí)具垫。可以看到试幽,深度學(xué)習(xí)已經(jīng)逐漸演變成一個(gè)工程師和科學(xué)家皆可使用的普適工具筝蚕。
特點(diǎn)
在描述深度學(xué)習(xí)的特點(diǎn)之前,我們先回顧并概括一下機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系。機(jī)器學(xué)習(xí)研究如何使計(jì)算機(jī)系統(tǒng)利用經(jīng)驗(yàn)改善性能起宽。它是人工智能領(lǐng)域的分支洲胖,也是實(shí)現(xiàn)人工智能的一種手段。在機(jī)器學(xué)習(xí)的眾多研究方向中坯沪,表征學(xué)習(xí)關(guān)注如何自動(dòng)找出表示數(shù)據(jù)的合適方式绿映,以便更好地將輸入變換為正確的輸出,而本書要重點(diǎn)探討的深度學(xué)習(xí)是具有多級(jí)表示的表征學(xué)習(xí)方法腐晾。在每一級(jí)(從原始數(shù)據(jù)開始)叉弦,深度學(xué)習(xí)通過簡單的函數(shù)將該級(jí)的表示變換為更高級(jí)的表示。因此藻糖,深度學(xué)習(xí)模型也可以看作是由許多簡單函數(shù)復(fù)合而成的函數(shù)卸奉。當(dāng)這些復(fù)合的函數(shù)足夠多時(shí),深度學(xué)習(xí)模型就可以表達(dá)非常復(fù)雜的變換颖御。
深度學(xué)習(xí)可以逐級(jí)表示越來越抽象的概念或模式榄棵。以圖像為例,它的輸入是一堆原始像素值潘拱。深度學(xué)習(xí)模型中疹鳄,圖像可以逐級(jí)表示為特定位置和角度的邊緣、由邊緣組合得出的花紋芦岂、由多種花紋進(jìn)一步匯合得到的特定部位的模式等瘪弓。最終,模型能夠較容易根據(jù)更高級(jí)的表示完成給定的任務(wù)禽最,如識(shí)別圖像中的物體腺怯。值得一提的是,作為表征學(xué)習(xí)的一種川无,深度學(xué)習(xí)將自動(dòng)找出每一級(jí)表示數(shù)據(jù)的合適方式呛占。
因此,深度學(xué)習(xí)的一個(gè)外在特點(diǎn)是端到端的訓(xùn)練懦趋。也就是說晾虑,并不是將單獨(dú)調(diào)試的部分拼湊起來組成一個(gè)系統(tǒng),而是將整個(gè)系統(tǒng)組建好之后一起訓(xùn)練仅叫。比如說帜篇,計(jì)算機(jī)視覺科學(xué)家之前曾一度將特征抽取與機(jī)器學(xué)習(xí)模型的構(gòu)建分開處理,像是Canny邊緣探測 [20] 和SIFT特征提取 [21] 曾占據(jù)統(tǒng)治性地位達(dá)10年以上诫咱,但這也就是人類能找到的最好方法了笙隙。當(dāng)深度學(xué)習(xí)進(jìn)入這個(gè)領(lǐng)域后,這些特征提取方法就被性能更強(qiáng)的自動(dòng)優(yōu)化的逐級(jí)過濾器替代了坎缭。
相似地竟痰,在自然語言處理領(lǐng)域签钩,詞袋模型多年來都被認(rèn)為是不二之選 [22]。詞袋模型是將一個(gè)句子映射到一個(gè)詞頻向量的模型凯亮,但這樣的做法完全忽視了單詞的排列順序或者句中的標(biāo)點(diǎn)符號(hào)。不幸的是哄尔,我們也沒有能力來手工抽取更好的特征假消。但是自動(dòng)化的算法反而可以從所有可能的特征中搜尋最好的那個(gè),這也帶來了極大的進(jìn)步岭接。例如富拗,語義相關(guān)的詞嵌入能夠在向量空間中完成如下推理:“柏林 - 德國 + 中國 = 北京”∶鳎可以看出啃沪,這些都是端到端訓(xùn)練整個(gè)系統(tǒng)帶來的效果。
除端到端的訓(xùn)練以外窄锅,我們也正在經(jīng)歷從含參數(shù)統(tǒng)計(jì)模型轉(zhuǎn)向完全無參數(shù)的模型创千。當(dāng)數(shù)據(jù)非常稀缺時(shí),我們需要通過簡化對(duì)現(xiàn)實(shí)的假設(shè)來得到實(shí)用的模型入偷。當(dāng)數(shù)據(jù)充足時(shí)追驴,我們就可以用能更好地?cái)M合現(xiàn)實(shí)的無參數(shù)模型來替代這些含參數(shù)模型。這也使我們可以得到更精確的模型疏之,盡管需要犧牲一些可解釋性殿雪。
相對(duì)其它經(jīng)典的機(jī)器學(xué)習(xí)方法而言,深度學(xué)習(xí)的不同在于:對(duì)非最優(yōu)解的包容锋爪、對(duì)非凸非線性優(yōu)化的使用丙曙,以及勇于嘗試沒有被證明過的方法。這種在處理統(tǒng)計(jì)問題上的新經(jīng)驗(yàn)主義吸引了大量人才的涌入其骄,使得大量實(shí)際問題有了更好的解決方案亏镰。盡管大部分情況下需要為深度學(xué)習(xí)修改甚至重新發(fā)明已經(jīng)存在數(shù)十年的工具,但是這絕對(duì)是一件非常有意義并令人興奮的事拯爽。
最后拆挥,深度學(xué)習(xí)社區(qū)長期以來以在學(xué)術(shù)界和企業(yè)之間分享工具而自豪,并開源了許多優(yōu)秀的軟件庫某抓、統(tǒng)計(jì)模型和預(yù)訓(xùn)練網(wǎng)絡(luò)纸兔。正是本著開放開源的精神,本書的內(nèi)容和基于它的教學(xué)視頻可以自由下載和隨意分享否副。我們致力于為所有人降低學(xué)習(xí)深度學(xué)習(xí)的門檻汉矿,并希望大家從中獲益。
小結(jié)
- 機(jī)器學(xué)習(xí)研究如何使計(jì)算機(jī)系統(tǒng)利用經(jīng)驗(yàn)改善性能备禀。它是人工智能領(lǐng)域的分支洲拇,也是實(shí)現(xiàn)人工智能的一種手段奈揍。
- 作為機(jī)器學(xué)習(xí)的一類,表征學(xué)習(xí)關(guān)注如何自動(dòng)找出表示數(shù)據(jù)的合適方式赋续。
- 深度學(xué)習(xí)是具有多級(jí)表示的表征學(xué)習(xí)方法男翰。它可以逐級(jí)表示越來越抽象的概念或模式。
- 深度學(xué)習(xí)所基于的神經(jīng)網(wǎng)絡(luò)模型和用數(shù)據(jù)編程的核心思想實(shí)際上已經(jīng)被研究了數(shù)百年纽乱。
- 深度學(xué)習(xí)已經(jīng)逐漸演變成一個(gè)工程師和科學(xué)家皆可使用的普適工具蛾绎。
練習(xí)
- 你現(xiàn)在正在編寫的代碼有沒有可以被“學(xué)習(xí)”的部分,也就是說鸦列,是否有可以被機(jī)器學(xué)習(xí)改進(jìn)的部分租冠?
- 你在生活中有沒有這樣的場景:雖有許多展示如何解決問題的樣例,但缺少自動(dòng)解決問題的算法薯嗤?它們也許是深度學(xué)習(xí)的最好獵物顽爹。
- 如果把人工智能的發(fā)展看作是新一次工業(yè)革命,那么深度學(xué)習(xí)和數(shù)據(jù)的關(guān)系是否像是蒸汽機(jī)與煤炭的關(guān)系呢骆姐?為什么镜粤?
- 端到端的訓(xùn)練方法還可以用在哪里?物理學(xué)玻褪,工程學(xué)還是經(jīng)濟(jì)學(xué)繁仁?
- 為什么應(yīng)該讓深度網(wǎng)絡(luò)模仿人腦結(jié)構(gòu)?為什么不該讓深度網(wǎng)絡(luò)模仿人腦結(jié)構(gòu)归园?
參考文獻(xiàn)
[1] Machinery, C. (1950). Computing machinery and intelligence-AM Turing. Mind, 59(236), 433.
[2] Hebb, D. O. (1949). The organization of behavior; a neuropsycholocigal theory. A Wiley Book in Clinical Psychology., 62-78.
[3] Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1), 1929-1958.
[4] Bishop, C. M. (1995). Training with noise is equivalent to Tikhonov regularization. Neural computation, 7(1), 108-116.
[5] Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
[6] Sukhbaatar, S., Weston, J., & Fergus, R. (2015). End-to-end memory networks. In Advances in neural information processing systems (pp. 2440-2448).
[7] Reed, S., & De Freitas, N. (2015). Neural programmer-interpreters. arXiv preprint arXiv:1511.06279.
[8] Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., … & Bengio, Y. (2014). Generative adversarial nets. In Advances in neural information processing systems (pp. 2672-2680).
[9] Zhu, J. Y., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired image-to-image translation using cycle-consistent adversarial networks. arXiv preprint.
[10] Karras, T., Aila, T., Laine, S., & Lehtinen, J. (2017). Progressive growing of gans for improved quality, stability, and variation. arXiv preprint arXiv:1710.10196.
[11] Li, M. (2017). Scaling Distributed Machine Learning with System and Algorithm Co-design (Doctoral dissertation, PhD thesis, Intel).
[12] You, Y., Gitman, I., & Ginsburg, B. Large batch training of convolutional networks. ArXiv e-prints.
[13] Jia, X., Song, S., He, W., Wang, Y., Rong, H., Zhou, F., … & Chen, T. (2018). Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes. arXiv preprint arXiv:1807.11205.
[14] Xiong, W., Droppo, J., Huang, X., Seide, F., Seltzer, M., Stolcke, A., … & Zweig, G. (2017, March). The Microsoft 2016 conversational speech recognition system. In Acoustics, Speech and Signal Processing (ICASSP), 2017 IEEE International Conference on (pp. 5255-5259). IEEE.
[15] Lin, Y., Lv, F., Zhu, S., Yang, M., Cour, T., Yu, K., … & Huang, T. (2010). Imagenet classification: fast descriptor coding and large-scale svm training. Large scale visual recognition challenge.
[16] Hu, J., Shen, L., & Sun, G. (2017). Squeeze-and-excitation networks. arXiv preprint arXiv:1709.01507, 7.
[17] Campbell, M., Hoane Jr, A. J., & Hsu, F. H. (2002). Deep blue. Artificial intelligence, 134(1-2), 57-83.
[18] Silver, D., Huang, A., Maddison, C. J., Guez, A., Sifre, L., Van Den Driessche, G., … & Dieleman, S. (2016). Mastering the game of Go with deep neural networks and tree search. nature, 529(7587), 484.
[19] Brown, N., & Sandholm, T. (2017, August). Libratus: The superhuman ai for no-limit poker. In Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence.
[20] Canny, J. (1986). A computational approach to edge detection. IEEE Transactions on pattern analysis and machine intelligence, (6), 679-698.
[21] Lowe, D. G. (2004). Distinctive image features from scale-invariant keypoints. International journal of computer vision, 60(2), 91-110.
[22] Salton, G., & McGill, M. J. (1986). Introduction to modern information retrieval.
注:本節(jié)與原書基本相同黄虱,為了完整性而搬運(yùn)過來,原書傳送門