翻譯自Deep Learning With Python(2018)
第一章 深度學(xué)習(xí)基礎(chǔ):http://m.itdecent.cn/p/6c08f4ceab4c
第二章 深度學(xué)習(xí)的數(shù)學(xué)構(gòu)建模塊:http://m.itdecent.cn/p/ba51e470b736
第三章 神經(jīng)網(wǎng)絡(luò)入門:http://m.itdecent.cn/p/f1332c58ca86
第四章 機(jī)器學(xué)習(xí)基礎(chǔ):http://m.itdecent.cn/p/3e9be53289d6
附錄:在Ubuntu上安裝Keras及其依賴:http://m.itdecent.cn/p/cfcfec045c5b
Part I 深度學(xué)習(xí)基礎(chǔ)
本書1-4章將帶你了解一些基本概念:什么是深度學(xué)習(xí),它可以用來做什么以及它如何工作。此外,還將讓你熟悉使用深度學(xué)習(xí)解決數(shù)據(jù)問題的典型工作流程。如果你還沒怎么了解深度學(xué)習(xí),你需要明確的從part I開始讀取,然后再去閱讀part 2的實際應(yīng)用。
1、什么是深度學(xué)習(xí)
本章覆蓋
- 基礎(chǔ)概念的高層次定義
- 機(jī)器學(xué)習(xí)發(fā)展的時間線
- 深度學(xué)習(xí)崛起流行起來的關(guān)鍵因子以及未來的潛力
在過去的這些年,人工智能(AI)成為了媒體大肆渲染的對象。機(jī)器學(xué)習(xí),深度學(xué)習(xí)以及AI出現(xiàn)在數(shù)不勝數(shù)的文章中,常常是在一些與技術(shù)無關(guān)的出版物。我們被許諾擁有智能聊天機(jī)器人、自動駕駛汽車和虛擬助手的未來 --- 這個未來有時被描繪成陰暗面,有時被描繪成烏托邦,在那里,人類的工作崗位將變得稀缺,大多數(shù)經(jīng)濟(jì)活動將由機(jī)器人或人工智能代理來處理。對于未來或當(dāng)前的機(jī)器學(xué)習(xí)實踐者來說,能夠識別噪音中的信號是很重要的,這樣你就能從過度炒作的新聞稿中分辨出改變世界的發(fā)展。我們的未來岌岌可危,在這個未來,你們將發(fā)揮積極作用:在閱讀本書后,你將是那些開發(fā)AI代理的那些人。所以,讓我們處理這些問題:到目前為止,深度學(xué)習(xí)已經(jīng)取得的成果。它的成就在哪里?我們接下來應(yīng)該到哪一步?你相信那些大肆的宣傳嗎?
本章提供了關(guān)于人工智能,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的必要的上下文信息。
1.1 人工智能,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)
首先,我們需要明確定義,當(dāng)我們提及AI時談?wù)摰氖鞘裁?。人工智能,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是什么?(查看figure 1.1)。它們之間的關(guān)聯(lián)是什么?

1.1.1 人工智能
人工智能誕生于1950年代,當(dāng)少部分的計算機(jī)科學(xué)初期領(lǐng)域的先驅(qū)開始探討計算機(jī)是否可以思考--該問題的一個分支我們現(xiàn)在仍在探索:使通常由人類完成的智力任務(wù)自動化的努力。因此,人工智能是一個包含機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的通用領(lǐng)域,但它也包含了更多不涉及任何學(xué)習(xí)的方法。例如,早期的國際象棋程序只涉及由程序員制定的硬編碼規(guī)則,不具備機(jī)器學(xué)習(xí)的特性。在相當(dāng)長的一段時間里,許多專家認(rèn)為,通過讓程序員手工制作一套足夠大的明確的規(guī)則來操縱知識,可以實現(xiàn)人類水平的人工智能。這種方法被稱為符號(symbolic)人工智能,從20世紀(jì)50年代到80年代末,它是人工智能的主導(dǎo)范式。它在20世紀(jì)80年代專家系統(tǒng)的繁榮時期達(dá)到了它的頂峰。
盡管事實證明,符號AI適用于解決定義明確的邏輯問題,如下棋,但要找出解決更復(fù)雜、模糊的問題,對于明確規(guī)則卻是很難的,比如圖像分類、語音識別和語言翻譯。一種取代符號人工智能的新方法出現(xiàn)了:機(jī)器學(xué)習(xí)。
1.1.2 機(jī)器學(xué)習(xí)
在維多利亞時代的英國,艾達(dá)·洛夫萊斯夫人是查爾斯-巴貝奇的朋友和合作者,分析引擎的發(fā)明者:第一臺通用的機(jī)械計算機(jī)。雖然具有遠(yuǎn)見卓識,而且遙遙領(lǐng)先于它的時代,但當(dāng)分析引擎被設(shè)計成一臺通用計算機(jī)時,它并不意味著它就是一臺通用計算機(jī),因為通用計算的概念還沒有被發(fā)明出來。它僅僅是一種使用機(jī)械運(yùn)算的方法,使數(shù)學(xué)分析領(lǐng)域的某些計算自動化——因此得名“分析”引擎。1843年,艾達(dá)·洛夫萊斯(Ada Lovelace)對這一發(fā)明發(fā)表了評論:“分析引擎沒有任何要發(fā)明的東西?!彼梢宰鑫覀冎赖娜魏问虑閬砻钏鼒?zhí)行。它的職責(zé)是幫助我們提供我們已經(jīng)熟悉的東西。
人工智能先驅(qū)艾倫·圖靈(Alan Turing)后來在1950年發(fā)表的里程碑式論文《計算機(jī)器與智能》(Computing Machinery and Intelligence)中引用了這句話,稱其為“洛夫萊斯夫人的反對”。圖靈在思考通用電腦是否有學(xué)習(xí)和創(chuàng)新的能力時,引用了艾達(dá)·洛夫萊斯的話。
機(jī)器學(xué)習(xí)產(chǎn)生于這樣一個問題:一臺計算機(jī)能否超越“我們知道如何讓它執(zhí)行的指令”,自己學(xué)習(xí)如何執(zhí)行指定的任務(wù)?
電腦能給我們帶來驚喜嗎?與程序員手工制定數(shù)據(jù)處理規(guī)則不同,計算機(jī)能通過查看數(shù)據(jù)自動學(xué)習(xí)這些規(guī)則嗎?
這個問題為新的編程范式打開了大門。在經(jīng)典編程中,符號AI的范例,人類根據(jù)這些規(guī)則輸入規(guī)則(程序)和要處理的數(shù)據(jù),然后得到答案(見圖1.2)。通過機(jī)器學(xué)習(xí),人們輸入數(shù)據(jù)以及從數(shù)據(jù)中得到的答案,然后得出規(guī)則。然后,這些規(guī)則可以應(yīng)用于新數(shù)據(jù),以生成原始答案。

機(jī)器學(xué)習(xí)系統(tǒng)是經(jīng)過訓(xùn)練而不是明確編程的。它提供了許多與任務(wù)相關(guān)的示例,并在這些示例中找到了統(tǒng)計結(jié)構(gòu),最終允許系統(tǒng)提出自動化任務(wù)的規(guī)則。例如,如果您希望自動化為度假圖片添加標(biāo)簽的任務(wù),您可以提供一個機(jī)器學(xué)習(xí)系統(tǒng),其中包含許多已經(jīng)由人類標(biāo)記的圖片示例,系統(tǒng)將學(xué)習(xí)將特定圖片與特定標(biāo)簽關(guān)聯(lián)的統(tǒng)計規(guī)則。
盡管機(jī)器學(xué)習(xí)在上世紀(jì)90年代才開始蓬勃發(fā)展,但它很快就成為人工智能最受歡迎、最成功的子領(lǐng)域,這一趨勢是由更快的硬件和更大的數(shù)據(jù)集的可用性推動的。機(jī)器學(xué)習(xí)與數(shù)理統(tǒng)計緊密相關(guān),但它在幾個重要方面與統(tǒng)計學(xué)不同。
與統(tǒng)計學(xué)不同的是,機(jī)器學(xué)習(xí)傾向于處理大型復(fù)雜的數(shù)據(jù)集(例如數(shù)百萬張圖像的數(shù)據(jù)集,每個數(shù)據(jù)集由數(shù)萬個像素組成),對于這些數(shù)據(jù)集,傳統(tǒng)的統(tǒng)計分析(如貝葉斯分析)是不切實際的。
1.1.3 從數(shù)據(jù)中學(xué)習(xí)表征(representations)
要定義深度學(xué)習(xí)并理解深度學(xué)習(xí)與其他機(jī)器學(xué)習(xí)方法的區(qū)別,首先我們需要了解機(jī)器學(xué)習(xí)算法的作用。我剛剛說過,機(jī)器學(xué)習(xí)通過給出預(yù)期的例子,挖掘規(guī)則以執(zhí)行數(shù)據(jù)處理任務(wù)。所以,要做機(jī)器學(xué)習(xí),我們需要三件事:
- 輸入數(shù)據(jù)點 —— 例如,如果任務(wù)是語音識別,這些數(shù)據(jù)點可能是人們說話的聲音文件。如果任務(wù)是圖像標(biāo)記,它們可以是圖片。
- 預(yù)期輸出語音識別任務(wù)的樣例 —— 這些可能是人為的聲音文件的記錄。在圖像任務(wù)中,預(yù)期的輸出可以是“狗”、“貓”等標(biāo)記。
-
一種衡量算法是否處理得當(dāng)?shù)姆椒?/em> —— 為了確定算法的當(dāng)前輸出與期望輸出之間的距離,這是必要的。測量作為反饋信號來調(diào)整算法的工作方式。這個調(diào)整步驟就是我們所說的學(xué)習(xí)。
機(jī)器學(xué)習(xí)模型將輸入數(shù)據(jù)轉(zhuǎn)換為有意義的輸出,這是一個從已知輸入和輸出樣例中“學(xué)習(xí)”的過程。因此,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的核心問題是對數(shù)據(jù)進(jìn)行有意義的轉(zhuǎn)換:換句話說,學(xué)習(xí)當(dāng)前輸入數(shù)據(jù)的有用表征,使我們更接近預(yù)期輸出。在我們繼續(xù)之前,什么是表征?從本質(zhì)上講,它是一種看待數(shù)據(jù)的不同方式——表示或編碼數(shù)據(jù)。例如,彩色圖像可以編碼為RGB格式(紅綠藍(lán))或HSV格式(色調(diào)飽和值):這是同一數(shù)據(jù)的兩種不同表示形式。有些任務(wù)在一種表示中可能比較困難,但在另一種表示中可能比較容易。例如,在RGB格式中,任務(wù)“選擇圖像中的所有紅色像素”更簡單,而在HSV格式中,任務(wù)“使圖像不飽和”更簡單。機(jī)器學(xué)習(xí)模型都是關(guān)于為數(shù)據(jù)的輸入數(shù)據(jù)轉(zhuǎn)換找到適當(dāng)?shù)谋硎?,使其更適合于當(dāng)前的任務(wù),例如分類任務(wù)。
讓我們把它具體化??紤]x軸、y軸和一些點,它們在(x, y)系統(tǒng)中的坐標(biāo)表示,如圖1.3所示。
如你所見,我們有一些白色的點和一些黑色的點。假設(shè)我們要開發(fā)一種算法,它可以取一個點的坐標(biāo)(x, y)并輸出這個點是黑還是白。在這種情況下: - 輸入是點的坐標(biāo)。
- 預(yù)期的輸出是點的顏色。
-
一種方法來衡量我們的算法是否做得很好,例如,點被正確分類的百分比。
這里我們需要的是一個數(shù)據(jù)的新表示,干凈地將白點和黑點分開。在許多其他可能性中,我們可以使用的一種轉(zhuǎn)換是坐標(biāo)更改,如圖1.4所示
在這個新的坐標(biāo)系中,點的坐標(biāo)可以說是數(shù)據(jù)的一種新的表示形式。這是一個好主意!有了這種表示,黑/白分類問題可以用一個簡單的規(guī)則來表示:“黑點是x > 0,”或“白點是x < 0?!边@種新的表示基本上解決了分類問題。
在本例中,我們手工定義了坐標(biāo)的變化。但是,如果我們嘗試系統(tǒng)地搜索不同的可能的坐標(biāo)變化,并將正確分類的百分比作為反饋,那么我們將進(jìn)行機(jī)器學(xué)習(xí)。在機(jī)器學(xué)習(xí)的背景下,學(xué)習(xí)描述了一個自動搜索過程,以獲得更好的表示。
所有的機(jī)器學(xué)習(xí)算法都是由自動查找這樣的轉(zhuǎn)換組成的,這些轉(zhuǎn)換將數(shù)據(jù)轉(zhuǎn)換成對給定任務(wù)更有用的表示形式。這些操作可以是坐標(biāo)更改(如您剛才看到的那樣),也可以是線性投影(可能會破壞信息)、轉(zhuǎn)換、非線性操作(如“選擇x > 0這樣的所有點”),等等。
機(jī)器學(xué)習(xí)算法在尋找這些轉(zhuǎn)換方面通常缺乏創(chuàng)造性;他們只是搜索一個預(yù)定義的集合操作,稱為假設(shè)空間。這就是機(jī)器學(xué)習(xí)的技術(shù)含義:尋找有用的表示一些輸入數(shù)據(jù),在預(yù)定義的可能性空間內(nèi),利用反饋信號來引導(dǎo)。這個簡單的想法可以解決非常廣泛的智力任務(wù),從語音識別到自動駕駛。
既然您理解了我們所說的學(xué)習(xí)的含義,那么讓我們來看看是什么讓深度學(xué)習(xí)變得特別。
1.1.4 深度學(xué)習(xí)之“深”
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個特定子領(lǐng)域:從數(shù)據(jù)中學(xué)習(xí)表示的一種新方法,強(qiáng)調(diào)學(xué)習(xí)越來越有意義的表示的連續(xù)層(layers)。深度學(xué)習(xí)并不是指通過這種方法獲得的任何更深層次的理解;更確切地說,它代表了連續(xù)層表示的思想。有多少層對數(shù)據(jù)模型有貢獻(xiàn)被稱為模型的深度。該領(lǐng)域的其他適當(dāng)名稱可能是分層表示學(xué)習(xí)和層次表示學(xué)習(xí)。現(xiàn)代深度學(xué)習(xí)通常涉及數(shù)十甚至數(shù)百層連續(xù)的表示層——它們都是通過接觸訓(xùn)練數(shù)據(jù)而自動學(xué)習(xí)的。與此同時,機(jī)器學(xué)習(xí)的其他方法傾向于只學(xué)習(xí)數(shù)據(jù)的一到兩層表示;因此,他們有時被稱為淺層學(xué)習(xí)。
在深度學(xué)習(xí)中,這些分層的表示(幾乎總是)是通過稱為神經(jīng)網(wǎng)(neural networks)的模型來學(xué)習(xí)的,這些模型的結(jié)構(gòu)是逐層堆疊在一起的文字層。“神經(jīng)網(wǎng)絡(luò)”一詞是指神經(jīng)生物學(xué),但盡管深度學(xué)習(xí)的一些核心概念部分是通過從我們對大腦的理解中汲取靈感而發(fā)展起來的,但深度學(xué)習(xí)模型并不是大腦的模型。
沒有證據(jù)表明大腦實現(xiàn)了任何類似于現(xiàn)代深度學(xué)習(xí)模型中使用的學(xué)習(xí)機(jī)制。你可能會讀到一些流行科學(xué)文章,宣稱深度學(xué)習(xí)像大腦一樣工作,或者是以大腦為模型的,但事實并非如此。如果這個領(lǐng)域的新手認(rèn)為深度學(xué)習(xí)與神經(jīng)生物學(xué)有任何關(guān)系,那將是令人困惑和適得其反的;你不需要“像我們大腦一樣”的神秘,你也可能忘記你可能讀過的關(guān)于深度學(xué)習(xí)和生物學(xué)之間的假設(shè)聯(lián)系的任何東西。就我們的目的而言,深度學(xué)習(xí)是一個從數(shù)據(jù)中學(xué)習(xí)表征的數(shù)學(xué)框架。
通過深度學(xué)習(xí)算法學(xué)習(xí)到的表示(representation)是什么樣子的?讓我們來看看一個網(wǎng)絡(luò)如何在幾層深度里(參見圖1.5)轉(zhuǎn)換一個數(shù)字的圖像,以識別它是什么數(shù)字。

如圖1.6所示,網(wǎng)絡(luò)將數(shù)字圖像轉(zhuǎn)換為與原始圖像越來越不同的表示形式,并提供關(guān)于最終結(jié)果的越來越多的信息。您可以將深度網(wǎng)絡(luò)看作是一個多級信息蒸餾操作,其中信息經(jīng)過連續(xù)的過濾器,并逐漸被凈化(也就是說,對于某些任務(wù)非常有用)。

這就是深度學(xué)習(xí)的技術(shù)含義:
多階段學(xué)習(xí)數(shù)據(jù)表示的方法。這是一個簡單的想法——但是,事實證明,非常簡單的機(jī)制,如果規(guī)模足夠大,最終看起來就像魔法一樣。
1.1.15 從三張圖中理解深度學(xué)習(xí)如何工作。
在這一點上,您知道機(jī)器學(xué)習(xí)是關(guān)于將輸入(如圖像)映射到目標(biāo)(如標(biāo)簽“cat”),這是通過觀察許多輸入和目標(biāo)的樣例來完成的。您還知道,深層神經(jīng)網(wǎng)絡(luò)通過簡單的數(shù)據(jù)轉(zhuǎn)換(層)的深層序列進(jìn)行輸入到目標(biāo)的映射,這些數(shù)據(jù)轉(zhuǎn)換是通過樣例來學(xué)習(xí)的?,F(xiàn)在讓我們具體看看這種學(xué)習(xí)是如何發(fā)生的。
層(layer)對其輸入數(shù)據(jù)的操作規(guī)范存儲在層的權(quán)值中(weights),其本質(zhì)上是一堆數(shù)字。在技術(shù)術(shù)語中,我們可以說由層實現(xiàn)的轉(zhuǎn)換是由其權(quán)重參數(shù)化的(參見圖1.7)。
(權(quán)重有時也被稱為層的參數(shù)。)在這種情況下,學(xué)習(xí)意味著為網(wǎng)絡(luò)中所有層的權(quán)重找到一組值,以便網(wǎng)絡(luò)能夠正確地將樣例輸入映射到相關(guān)目標(biāo)。但問題是:深層神經(jīng)網(wǎng)絡(luò)可以包含數(shù)千萬個參數(shù)。

要想控制某樣?xùn)|西 ,首先你需要能夠觀察它。為了控制神經(jīng)網(wǎng)絡(luò)的輸出,你需要能夠測量這個輸出與你期望的有多遠(yuǎn)。這是網(wǎng)絡(luò)損失函數(shù)的工作,也叫目標(biāo)函數(shù)。損失函數(shù)接受網(wǎng)絡(luò)的預(yù)測和真實目標(biāo)
(您希望網(wǎng)絡(luò)輸出的內(nèi)容),并計算距離分?jǐn)?shù),以了解網(wǎng)絡(luò)在這個特定示例中的表現(xiàn)(參見圖1.8)

深度學(xué)習(xí)的基本技巧是使用這個分?jǐn)?shù)作為反饋信號,稍微調(diào)整權(quán)重的值,以降低當(dāng)前示例的損失分?jǐn)?shù)(參見圖1.9)。這種調(diào)整是優(yōu)化器的工作,它實現(xiàn)了所謂的反向傳播算法:深度學(xué)習(xí)的中心算法。下一章將更詳細(xì)地解釋反向傳播是如何工作的。
最初,網(wǎng)絡(luò)的權(quán)值被分配為隨機(jī)值,因此網(wǎng)絡(luò)僅僅實現(xiàn)一系列隨機(jī)轉(zhuǎn)換。當(dāng)然,它的產(chǎn)出遠(yuǎn)低于理想水平,因此損失分?jǐn)?shù)也很高。但是對于網(wǎng)絡(luò)過程中的每一個樣例,權(quán)值都會在正確的方向上做一些調(diào)整,損失分?jǐn)?shù)會降低。這是一個訓(xùn)練循環(huán),它重復(fù)足夠多次(通常是在數(shù)千個樣例上重復(fù)數(shù)十次),產(chǎn)生的權(quán)重值可以最小化損失函數(shù)。損失最小的網(wǎng)絡(luò)是輸出盡可能接近目標(biāo)的網(wǎng)絡(luò):訓(xùn)練過的網(wǎng)絡(luò)(a trained network)。再一次,這是一個簡單的機(jī)制,一旦擴(kuò)展,最終看起來像魔術(shù)。
1.1.6 深度學(xué)習(xí)取得的成就
雖然深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個相當(dāng)古老的分支領(lǐng)域,但它直到2010年代初才開始嶄露頭角。從那以后的幾年里,它在這一領(lǐng)域取得了巨大的進(jìn)步,在視覺和聽覺等感知問題上取得了顯著的成果,這些問題涉及到一些技能,這些技能對人類來說似乎是自然和直覺的,但對機(jī)器來說卻一直是難以捉摸的。
特別是,深度學(xué)習(xí)取得了以下的突破,都是在機(jī)器學(xué)習(xí)的歷史難點領(lǐng)域
- 接近人類級別的圖像分類
- 接近人類級別的語音識別
- 接近人類級別的筆跡轉(zhuǎn)錄
- 改進(jìn)機(jī)器翻譯
- 改善語音轉(zhuǎn)換
- 現(xiàn)在谷歌和亞馬遜Alexa等數(shù)字助理
- 接近人類級別的自主駕駛
- 改善廣告目標(biāo),使用谷歌,百度和必應(yīng)
- 改進(jìn)搜索結(jié)果在網(wǎng)絡(luò)上
- 回答自然語言問題的能力
- 超人的圍棋玩法
我們?nèi)栽谔剿魃疃葘W(xué)習(xí)能做什么。我們已經(jīng)開始把它應(yīng)用到機(jī)器感知和自然語言理解之外的各種各樣的問題上,比如形式推理。如果成功,這可能預(yù)示著一個深度學(xué)習(xí)在科學(xué)、軟件開發(fā)等方面幫助人類的時代。
1.1.7 要相信短期的炒作
盡管深度學(xué)習(xí)近年來取得了顯著的成就,但人們對該領(lǐng)域在未來十年能夠取得的成就的預(yù)期,往往遠(yuǎn)高于可能達(dá)到的水平。雖然一些改變世界的應(yīng)用程序如自動駕駛汽車已經(jīng)觸手可及,但更多的應(yīng)用程序可能會在很長一段時間內(nèi)難以捉摸,比如可信的對話系統(tǒng)、跨任意語言的人級機(jī)器翻譯以及人級自然語言理解。特別地,關(guān)于類似人類智力的討論不應(yīng)該太嚴(yán)肅。對短期的高期望風(fēng)險在于,隨著技術(shù)無法交付,研究投資將枯竭,在很長一段時間內(nèi)減緩進(jìn)展。
這種情況以前也發(fā)生過。過去有兩次,人工智能經(jīng)歷了一個極度樂觀的周期,接著是失望和懷疑,結(jié)果是缺乏資金。它始于20世紀(jì)60年代的符號人工智能。在早期,對人工智能的預(yù)測很高。馬文·明斯基(Marvin Minsky)是這種符號人工智能方法最著名的先驅(qū)和支持者之一,他在1967年宣稱,“在一代人的時間內(nèi)……創(chuàng)造‘人工智能’的問題將得到實質(zhì)性解決?!比旰?,在1970年,他做了一個更精確的量化預(yù)測:“從3年到8年,我們將擁有一臺具有普通人一般智力的機(jī)器。在2016年,這樣的成就似乎還在遙遠(yuǎn)的將來——到目前為止,我們還無法預(yù)測它會持續(xù)多久——但在20世紀(jì)60年代和70年代初,一些專家認(rèn)為它即將到來(今天許多人也是如此)。幾年后,由于這些高期望值沒有成為現(xiàn)實,研究人員和政府基金開始放棄這一領(lǐng)域,標(biāo)志著第一個人工智能冬天的開始(指核冬天,因為這是在冷戰(zhàn)高峰之后不久)。
它不會是最后一個。上世紀(jì)80年代,一種對符號人工智能(AI)的全新理解——專家系統(tǒng)(expert systems)——開始在大公司中掀起熱潮。一些最初的成功故事引發(fā)了一波投資浪潮,全球各地的企業(yè)都開始了自己的自主創(chuàng)業(yè)人工智能部門開發(fā)專家系統(tǒng)。1985年前后,公司每年在這項技術(shù)上的花費(fèi)超過10億美元;但到了上世紀(jì)90年代初,事實證明,這些系統(tǒng)的維護(hù)成本高昂,難以擴(kuò)大規(guī)模,范圍有限,人們的興趣逐漸減退。第二個人工智能冬天就這樣開始了。
我們可能正在經(jīng)歷人工智能炒作和失望的第三輪——我們?nèi)匀惶幱跇O度樂觀的階段。最好是降低我們對短期的期望,并確保不太熟悉該領(lǐng)域技術(shù)方面的人清楚地知道深度學(xué)習(xí)能帶來什么,不能帶來什么。
1.1.8 AI的前景
雖然我們可能對人工智能有不切實際的短期預(yù)期,但長遠(yuǎn)來看看起來明亮。我們只是剛剛開始將深度學(xué)習(xí)應(yīng)用到許多領(lǐng)域。從醫(yī)學(xué)診斷到數(shù)字助理的角度來看,這可能會帶來重大的變革。人工智能研究在過去五年以驚人的速度向前發(fā)展,很大程度上是由于短期內(nèi)從未見過的資金水平在人工智能上的投入。但到目前為止,已形成產(chǎn)品和進(jìn)入我們世界方面的進(jìn)展相對較少。大多數(shù)深度學(xué)習(xí)的研究成果還沒有應(yīng)用到,或者至少沒有應(yīng)用到所有行業(yè)都能解決的所有問題上。你的醫(yī)生還沒有使用人工智能,你的會計師也沒有。你可能不會在日常生活中使用人工智能技術(shù)。當(dāng)然,你可以問你的智能手機(jī)簡單的問題,得到合理的答案,你可以在Amazon.com上得到相當(dāng)有用的產(chǎn)品推薦,你還可以在上面搜“birthday”立即找到你女兒上個月生日派對的照片。這與此類技術(shù)過去的地位相去甚遠(yuǎn)。但這些工具仍然只是我們?nèi)粘I畹母郊H斯ぶ悄苓€沒有轉(zhuǎn)變?yōu)槲覀児ぷ?、思考和生活方式的核心?br>
現(xiàn)在,似乎很難相信人工智能它會對我們的世界產(chǎn)生巨大的影響,因為它還沒有得到廣泛的應(yīng)用——就像1995年一樣,人們很難相信未來互聯(lián)網(wǎng)的影響。那時候,大多數(shù)人都不知道互聯(lián)網(wǎng)對他們有什么影響,也不知道它將如何改變他們的生活。今天的深度學(xué)習(xí)和人工智能也是如此。但毫無疑問:人工智能正在到來。在不遠(yuǎn)的將來,人工智能將成為你的助手,甚至是你的朋友;它將回答你的問題,幫助教育你的孩子,并照顧你的健康。它將把你的雜貨送到家門口,把你從一個地方送到另一個地方。它將成為你通往一個日益復(fù)雜和信息密集的世界的界面。更重要的是,人工智能將幫助整個人類向前發(fā)展,通過幫助人類科學(xué)家在從基因組學(xué)到數(shù)學(xué)等所有科學(xué)領(lǐng)域的突破性新發(fā)現(xiàn)。
在此過程中,我們可能會遇到一些挫折,或許還會迎來一個新的人工智能冬天——就像1998年至1999年互聯(lián)網(wǎng)行業(yè)被過度炒作,并在本世紀(jì)初遭遇投資枯竭的崩盤一樣。但我們最終會到達(dá)那里。人工智能最終將被應(yīng)用到構(gòu)成我們社會和日常生活的幾乎每一個過程中,就像今天的互聯(lián)網(wǎng)一樣。
不要相信短期的炒作,但要相信長遠(yuǎn)的眼光。人工智能要發(fā)揮其真正的潛力可能需要一段時間——這是一種尚未有人敢于夢想的潛力——但人工智能正在到來,它將以一種奇妙的方式改變我們的世界。
1.2 深度學(xué)習(xí)之前:機(jī)器學(xué)習(xí)的簡要?dú)v史
深度學(xué)習(xí)已經(jīng)達(dá)到了人工智能歷史上前所未有的公眾關(guān)注和行業(yè)投資水平,但它并不是第一個成功的機(jī)器學(xué)習(xí)形式。
可以肯定地說,當(dāng)今行業(yè)中使用的大多數(shù)機(jī)器學(xué)習(xí)算法都不是深度學(xué)習(xí)算法。深度學(xué)習(xí)并不總是適合這項工作的工具——有時沒有足夠的數(shù)據(jù)支持深度學(xué)習(xí),有時用不同的算法可以更好地解決這個問題。如果深度學(xué)習(xí)是你與機(jī)器學(xué)習(xí)的第一次接觸,那么你可能會發(fā)現(xiàn)自己處于這樣一種境地:你所擁有的只是一個深度學(xué)習(xí)的錘子,而每一個機(jī)器學(xué)習(xí)問題都開始像釘子一樣。唯一不落入這個陷阱的方法是熟悉其他方法,并在適當(dāng)?shù)臅r候?qū)嵺`它們。
對經(jīng)典機(jī)器學(xué)習(xí)方法的詳細(xì)討論超出了本書的范圍,但我們將簡要地回顧一下它們,并描述它們發(fā)展的歷史背景。這將使我們能夠把深度學(xué)習(xí)放在機(jī)器學(xué)習(xí)的更廣泛的背景下,更好地理解深度學(xué)習(xí)從何而來,以及它為什么重要。
1.2.1 概率模型
概率建模是統(tǒng)計學(xué)原理在數(shù)據(jù)分析中的應(yīng)用。這是最早的機(jī)器學(xué)習(xí)方式之一,至今仍被廣泛使用。這類算法中最著名的算法之一是樸素貝葉斯算法。
樸素貝葉斯是一種基于貝葉斯定理的機(jī)器學(xué)習(xí)分類器,它假設(shè)輸入數(shù)據(jù)中的特征都是獨(dú)立的(一個強(qiáng)的或“樸素的”假設(shè),這就是名稱的來源)。這種形式的數(shù)據(jù)分析比計算機(jī)更早出現(xiàn),而且在第一次計算機(jī)實現(xiàn)(很可能可以追溯到20世紀(jì)50年代)的幾十年前就被手工應(yīng)用。貝葉斯定理和統(tǒng)計學(xué)的基礎(chǔ)可以追溯到18世紀(jì),這些就是你開始使用樸素貝葉斯分類器所需要的。
一個密切相關(guān)的模型是邏輯回歸(簡稱logreg),它有時被認(rèn)為是現(xiàn)代機(jī)器學(xué)習(xí)的“hello world”。不要被它的名字誤導(dǎo)了,logreg是一個分類算法而不是回歸算法。就像樸素的貝葉斯一樣,logreg比計算提前了很長一段時間,但由于其簡單和多用途的特性,它至今仍然有用。通常,數(shù)據(jù)科學(xué)家在數(shù)據(jù)集中首先要做的就是對手頭的分類任務(wù)有所了解。
1.2.2 早期神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)的早期迭代已經(jīng)完全被這些頁面中所涵蓋的現(xiàn)代變體所取代,但是了解深度學(xué)習(xí)是如何產(chǎn)生的是很有幫助的。
雖然神經(jīng)網(wǎng)絡(luò)的核心思想早在20世紀(jì)50年代就以玩具的形式被研究過,但這種方法卻花了幾十年才開始。在很長一段時間里,缺失的部分是訓(xùn)練大型神經(jīng)網(wǎng)絡(luò)的有效方法。這在80年代中期發(fā)生了變化,當(dāng)多人獨(dú)立地重新發(fā)現(xiàn)反向傳播算法——一種利用梯度下降優(yōu)化訓(xùn)練參數(shù)操作鏈的方法(在書的后面,我們將精確地定義這些概念),并開始將其應(yīng)用于神經(jīng)網(wǎng)絡(luò)。
神經(jīng)網(wǎng)絡(luò)第一次成功的實際應(yīng)用是在1989年貝爾公司,當(dāng)Yann LeCun將早期的卷積神經(jīng)網(wǎng)絡(luò)和反向傳播的思想結(jié)合起來,并將它們應(yīng)用到手寫數(shù)字的分類問題上時。由此產(chǎn)生的網(wǎng)絡(luò)被稱為“LeNet”,在20世紀(jì)90年代,美國郵政服務(wù)公司(United States Postal Service)使用該網(wǎng)絡(luò)來自動讀取郵件信封上的郵編。
1.2.3 內(nèi)核模型
隨著神經(jīng)網(wǎng)絡(luò)在20世紀(jì)90年代開始在研究人員中獲得一些尊重,由于這第一次成功,一種機(jī)器學(xué)習(xí)的新方法聲名鵲起,并很快將神經(jīng)網(wǎng)絡(luò)送回了人們的記憶中:核方法。核方法是一類分類算法,其中最著名的是支持向量機(jī)(SVM)。
SVM的現(xiàn)代公式是由Vladimir開發(fā)的。Vapnik和Corinna Cortes于20世紀(jì)90年代初在貝爾實驗室發(fā)表于1995年,盡管Vapnik和Alexey Chervonenkis早在1963.3年就發(fā)表了一個更老的線性公式。
SVMs旨在通過在屬于兩個不同類別的兩組點之間找到好的決策邊界(參見圖1.10)來解決分類問題。決策邊界可以看作是一條線或曲面,將您的訓(xùn)練數(shù)據(jù)分隔成兩個空間,對應(yīng)于兩個類別。要對新數(shù)據(jù)點進(jìn)行分類,只需檢查它們位于決策邊界的哪一邊。

SVMs通過兩個步驟找到這些邊界:
- 將數(shù)據(jù)映射到新的高維表示,其中決策邊界可以表示為超平面(如果數(shù)據(jù)是二維的,如圖1.10所示,超平面將是一條直線)。
- 一個好的決策邊界(一個分離超平面)是通過試圖最大化超平面和離分類最近的數(shù)據(jù)點之間的距離來計算的,這個步驟叫做最大化邊界。這使得邊界可以很好地推廣到訓(xùn)練數(shù)據(jù)集之外的新樣本。
將數(shù)據(jù)映射到高維表示(其中分類問題變得更簡單)的技術(shù)在紙面上可能看起來不錯,但在實踐中常常難以計算。這就是內(nèi)核技巧(內(nèi)核方法以其命名的關(guān)鍵思想)發(fā)揮作用的地方。這里是它的要點:在新的表示空間中,找到好的決策超平面,你不需要顯式地計算新空間中點的坐標(biāo);你只需要計算空間中點對之間的距離,這可以用核函數(shù)有效地完成。內(nèi)核函數(shù)是一種計算上易于處理的操作,它將初始空間中的任意兩個點映射到目標(biāo)表示空間中這些點之間的距離,完全繞過了新表示的顯式計算。內(nèi)核函數(shù)通常是手工制作的,而不是從數(shù)據(jù)中學(xué)習(xí)——在支持向量機(jī)的情況下,只學(xué)習(xí)分離超平面。
在他們被開發(fā)的時候,SVMs在簡單的分類問題上表現(xiàn)出了最先進(jìn)的性能,并且是為數(shù)不多的由廣泛的理論支持的機(jī)器學(xué)習(xí)方法之一,并且易于進(jìn)行嚴(yán)肅的數(shù)學(xué)分析,使他們易于理解和解釋。因為這些有用的性質(zhì),長期以來,SVMs在該領(lǐng)域非常流行。
但事實證明,SVMs難以擴(kuò)展到大型數(shù)據(jù)集,而且無法為圖像分類等感知問題提供良好的結(jié)果。因為支持向量機(jī)是一種淺層的方法,將支持向量機(jī)應(yīng)用于感知問題需要首先手工提取有用的表示(稱為特征工程),這是一個困難且脆弱的步驟。
1.2.4 決策樹,隨即森林,以及梯度增強(qiáng)機(jī)
決策樹是類似流程圖的結(jié)構(gòu),它允許您對輸入數(shù)據(jù)點進(jìn)行分類或預(yù)測給定輸入的輸出值(參見圖1.11)。它們很容易想象和解釋。從數(shù)據(jù)中學(xué)習(xí)的決策樹在本世紀(jì)頭十年開始受到大量的研究興趣,到2010年,決策樹往往比內(nèi)核方法更受青睞。

特別是,隨機(jī)森林算法引入了一種健壯的、實用的決策樹學(xué)習(xí)方法,它涉及到構(gòu)建大量的專門決策樹,然后集成它們的輸出。隨機(jī)森林適用于各種各樣的問題——你可以說,對于任何淺層機(jī)器學(xué)習(xí)任務(wù)來說,它們幾乎總是第二好的算法。當(dāng)頗受歡迎的機(jī)器學(xué)習(xí)競賽網(wǎng)站Kaggle (http://kaggle.com)于2010年上線時,random forests很快就成為了平臺上的寵兒——直到2014年梯度提升機(jī)取而代之。梯度提升機(jī)很像隨機(jī)森林,是一種基于綜合弱預(yù)測模型(通常是決策樹)的機(jī)器學(xué)習(xí)技術(shù)。使用梯度增強(qiáng),一種通過迭代訓(xùn)練新模型來改進(jìn)任何機(jī)器學(xué)習(xí)模型的方法,這些新模型專門針對以前模型的缺點。應(yīng)用到?jīng)Q策樹中,梯度提升技術(shù)的使用使得模型在大多數(shù)情況下都比隨機(jī)森林表現(xiàn)更好,同時具有相似的特性。
它可能是當(dāng)今處理非感知數(shù)據(jù)最好的算法之一,如果不是最好的話。在Kaggle比賽中,除了深度學(xué)習(xí),它也是最常用的技術(shù)之一。
1.2.5 回到神經(jīng)網(wǎng)絡(luò)
大約在2010年,盡管大多數(shù)科學(xué)界幾乎完全回避神經(jīng)網(wǎng)絡(luò),但仍在研究神經(jīng)網(wǎng)絡(luò)的許多人開始取得重大突破:多倫多大學(xué)的Geoffrey Hinton、蒙特利爾大學(xué)的yoshu Bengio、紐約大學(xué)的Yann LeCun和瑞士人工智能研究所(IDSIA)等。
2011年,來自IDSIA的Dan Ciresan開始通過gpu訓(xùn)練的深度神經(jīng)網(wǎng)絡(luò)贏得學(xué)術(shù)圖像分類競賽,這是現(xiàn)代深度學(xué)習(xí)的第一次實際成功。但轉(zhuǎn)折點出現(xiàn)在2012年,Hinton的小組在每年的大規(guī)模圖像分類挑戰(zhàn)賽ImageNet。ImageNet的挑戰(zhàn)在當(dāng)時是出了名的困難,包括在140萬張圖像上訓(xùn)練后將高分辨率的彩色圖像分成1000個不同的類別。2011年,基于com經(jīng)典方法的中獎模型準(zhǔn)確率排名前五。2011年,基于經(jīng)典計算機(jī)視覺方法的獲獎模型的前五名準(zhǔn)確率僅為74.3%。然后,在2012年,亞歷克斯領(lǐng)導(dǎo)的一個團(tuán)隊Krizhevsky和Geoffrey Hinton的建議能夠達(dá)到前五名的準(zhǔn)確性——重大突破83.6%。自那以后,這種競爭每年都被深度卷積神經(jīng)網(wǎng)絡(luò)所主導(dǎo)。到2015年,優(yōu)勝者的準(zhǔn)確率達(dá)到96.4%,在ImageNet上的分類任務(wù)被認(rèn)為是一個完全解決的問題。
自2012年以來,深度卷積神經(jīng)網(wǎng)絡(luò)(convnets)成為所有計算機(jī)視覺任務(wù)的首選算法;更一般地說,它們對所有知覺任務(wù)都起作用。在2015年和2016年的主要計算機(jī)視覺會議上,幾乎不可能找到不以某種形式涉及卷積神經(jīng)網(wǎng)絡(luò)的演講。與此同時,深度學(xué)習(xí)也在許多其他類型的問題中得到了應(yīng)用,比如自然語言處理。在廣泛的應(yīng)用程序中,它完全取代了SVMs和決策樹。例如,歐洲核子研究中心(CERN)的歐洲核子研究組織(European Organization For Nuclear Research, CERN)多年來一直使用基于決策樹的方法分析來自大型強(qiáng)子對撞機(jī)(LHC)的ATLAS探測器的粒子數(shù)據(jù);但CERN最終轉(zhuǎn)向了基于keras的深層神經(jīng)網(wǎng)絡(luò),因為它們具有更高的性能和在大型數(shù)據(jù)集上易于訓(xùn)練。
1.2.6 是什么讓深度學(xué)習(xí)與眾不同
深度學(xué)習(xí)發(fā)展如此之快的主要原因是它在許多問題上提供了更好的表現(xiàn)。但這不是唯一的原因。深度學(xué)習(xí)也使得解決問題要容易得多,因為它完全自動化了機(jī)器學(xué)習(xí)工作流中最關(guān)鍵的一步:特性工程。
以前的機(jī)器學(xué)習(xí)技術(shù)—淺層學(xué)習(xí)—只涉及到將輸入數(shù)據(jù)轉(zhuǎn)換成一個或兩個連續(xù)的表示空間,通常通過簡單的轉(zhuǎn)換,如高維非線性投影(SVMs)或決策樹。但是,復(fù)雜問題所需要的精細(xì)表示通常無法用這種技術(shù)來實現(xiàn)。因此,人類必須竭盡全力使最初的輸入數(shù)據(jù)更易于通過這些方法進(jìn)行處理:他們必須手工為他們的數(shù)據(jù)設(shè)計良好的表示層。這就是特征工程。另一方面,深度學(xué)習(xí)完全自動化了這一步:通過深度學(xué)習(xí),你可以一次性學(xué)習(xí)所有的特性,而不必自己去設(shè)計它們。這大大簡化了機(jī)器學(xué)習(xí)的工作流程,常常用單一的、簡單的、端到端深度學(xué)習(xí)模型取代復(fù)雜的多級管道。
您可能會問,如果問題的關(guān)鍵是要有多個連續(xù)的表示層,那么是否可以重復(fù)使用淺層方法來模擬深度學(xué)習(xí)的效果?在實踐中,淺層學(xué)習(xí)方法的后續(xù)應(yīng)用的回報迅速遞減,因為三層模型中的最優(yōu)第一表示層不是單層或雙層模型中的最優(yōu)第一層。深度學(xué)習(xí)的革命性之處在于,它允許一個模型同時學(xué)習(xí)所有層次的表示,而不是連續(xù)地(貪婪地,正如它所稱的)。通過聯(lián)合特征學(xué)習(xí),當(dāng)模型調(diào)整其內(nèi)部特征時,所有依賴它的其他特征都會自動適應(yīng)變化,而不需要人工干預(yù)。所有的一切都受到一個反饋信號的監(jiān)督:模型中的每一個變化都服務(wù)于最終目標(biāo)。這比貪婪地堆疊淺層模型要強(qiáng)大得多,因為它允許通過將復(fù)雜的抽象表示分解為一系列中間空間(層)來學(xué)習(xí);每個空間都是與前一個空間的簡單轉(zhuǎn)換。
這些是深度學(xué)習(xí)學(xué)習(xí)的兩個基本特征數(shù)據(jù):增量, 一層一層地發(fā)展出越來越復(fù)雜的表現(xiàn)形式。事實上,這些中間增量表示是共同學(xué)習(xí)的,每一層都被更新,以滿足上面一層和下面一層的表征需求。這兩個特性使深度學(xué)習(xí)比以往的機(jī)器學(xué)習(xí)方法更成功。
1.2.7 現(xiàn)代機(jī)器學(xué)習(xí)的景象
了解機(jī)器學(xué)習(xí)算法和工具的現(xiàn)狀的一個好方法是查看Kaggle上的機(jī)器學(xué)習(xí)競賽。由于其高度競爭的環(huán)境(一些競賽有成千上萬的參賽者和百萬美元的獎金)和廣泛的機(jī)器學(xué)習(xí)問題,Kaggle提供了一個現(xiàn)實的方法來評估什么有效,什么無效。那么,什么樣的算法能夠可靠地贏得比賽呢?頂級參賽者使用什么工具?
在2016年和2017年,Kaggle被兩種方法所主導(dǎo):梯度提升機(jī)和深度學(xué)習(xí)。具體來說,梯度提升用于有結(jié)構(gòu)化數(shù)據(jù)可用的問題,而深度學(xué)習(xí)用于圖像分類等感知問題。前者的實踐者幾乎總是使用優(yōu)秀的XGBoost庫,該庫為數(shù)據(jù)科學(xué)中最流行的兩種語言Python和R.提供支持。
為了在今天的應(yīng)用機(jī)器學(xué)習(xí)中取得成功,你應(yīng)該最熟悉這兩種技術(shù):梯度提升機(jī),用于淺層學(xué)習(xí)問題;深度學(xué)習(xí),用于感知問題。從技術(shù)角度講,這意味著您需要熟悉XGBoost和keras這兩個目前在Kaggle競賽中占主導(dǎo)地位的庫。有了這本書,你已經(jīng)離成功又近了一大步。
1.3 為什么是深度學(xué)習(xí)?
計算機(jī)視覺深度學(xué)習(xí)的兩個關(guān)鍵思想——卷積神經(jīng)網(wǎng)絡(luò)和反向傳播——在1989年已經(jīng)被充分理解。Long Short-
Term Memory (LSTM)算法是時間序列深度學(xué)習(xí)的基礎(chǔ),于1997年開發(fā)出來,此后幾乎沒有什么變化。那么,為什么深度學(xué)習(xí)在2012年之后才開始流行起來呢?這二十年發(fā)生了什么變化?
總的來說,有三種技術(shù)力量推動著機(jī)器學(xué)習(xí)的進(jìn)步:
- 硬件
- 數(shù)據(jù)和基準(zhǔn)測試
- 算法的進(jìn)步
因為這個領(lǐng)域是由實驗結(jié)果而不是理論指導(dǎo)的,所以算法的進(jìn)步只有在適當(dāng)?shù)臄?shù)據(jù)和硬件可用來嘗試新想法時才有可能實現(xiàn)(或者像通常情況那樣擴(kuò)大舊想法的規(guī)模)。機(jī)器學(xué)習(xí)不是數(shù)學(xué)或物理,主要的進(jìn)步可以用筆和紙來完成。這是一門工程學(xué)。
上世紀(jì)90年代和本世紀(jì)頭十年,真正的瓶頸是數(shù)據(jù)和硬件。但這段時間發(fā)生了什么:互聯(lián)網(wǎng)起飛了,高性能的顯卡被開發(fā)出來以滿足游戲市場的需求。
1.3.1 硬件
1990年到2010年間,現(xiàn)成的cpu速度提高了大約5000倍。因此,如今在筆記本電腦上運(yùn)行小型深度學(xué)習(xí)模型是可能的,而在25年前,這還很棘手。但在計算機(jī)視覺或語音識別中使用的典型深度學(xué)習(xí)模型需要的計算能力要比筆記本電腦所能提供的能力大幾個數(shù)量級。在本世紀(jì)頭十年里,英偉達(dá)(NVIDIA)和AMD等公司一直在投資數(shù)十億美元開發(fā)快速、大規(guī)模的并行芯片(圖形處理單元[gpu]),以支持越來越逼真的視頻游戲的圖形功能——廉價、單用途的超級計算機(jī),旨在實時在屏幕上呈現(xiàn)復(fù)雜的3D場景。2007年,英偉達(dá)(NVIDIA)推出了CUDA (https://developer.nvidia.com/about-cuda),這是其gpu系列的編程接口,這讓科學(xué)界受益。在各種高度可并行化的應(yīng)用程序中,少量的gpu開始取代大量的cpu集群,從物理建模開始。深度神經(jīng)網(wǎng)絡(luò)主要由許多小的矩陣乘法組成,也具有高度的并行性;大約在2011年,一些研究人員開始編寫CUDA的神經(jīng)網(wǎng)絡(luò)實現(xiàn)程序——dan Ciresan4和Alex Krizhevsky5就是其中之一。
事實是,游戲市場為下一代人工智能應(yīng)用程序的超級計算提供了補(bǔ)貼。有時候,大事情從游戲開始。如今,NVIDIA TITAN X是一款游戲GPU, 2015年底售價1000美元,單次精度最高可達(dá)6.6萬億次,每秒可進(jìn)行6.6萬億次浮點運(yùn)算。這比你從一臺現(xiàn)代筆記本電腦中得到的要多350倍。
在泰坦X上,只需要幾天時間就可以訓(xùn)練出一種ImageNet模型,這種模型幾年前就能在ILSVRC競賽中獲勝。與此同時,大公司在數(shù)百個專為深度學(xué)習(xí)需求而開發(fā)的gpu集群上訓(xùn)練深度學(xué)習(xí)模型,例如NVIDIA Tesla K80。如果沒有現(xiàn)代gpu,這些集群的純粹計算能力是不可能實現(xiàn)的。
更重要的是,深度學(xué)習(xí)行業(yè)開始超出gpu外,并投資于日益專業(yè)化、高效的深度學(xué)習(xí)芯片。在2016年的年度I/O大會上,谷歌展示了其張量處理單元(張量處理單元,TPU)項目:一種全新的芯片設(shè)計,從底層開發(fā)出來,運(yùn)行深度神經(jīng)網(wǎng)絡(luò),據(jù)說比頂級gpu快10倍,而且更節(jié)能。
1.3.2 Data
人工智能有時被稱為新工業(yè)革命。如果說深度學(xué)習(xí)是這場革命的蒸汽機(jī),那么數(shù)據(jù)就是它的煤炭:為我們的智能機(jī)器提供動力的原材料,沒有這些,一切都不可能。說到數(shù)據(jù),除了存儲硬件在過去20年里呈指數(shù)級增長(遵循摩爾定律),改變游戲規(guī)則的是互聯(lián)網(wǎng)的興起,使得收集和分發(fā)用于機(jī)器學(xué)習(xí)的大型數(shù)據(jù)集成為可能。如今,大公司使用的是圖像數(shù)據(jù)集、視頻數(shù)據(jù)集和自然語言數(shù)據(jù)集,這些數(shù)據(jù)集在沒有互聯(lián)網(wǎng)的情況下是無法收集的。用戶生成的圖像標(biāo)簽例如,F(xiàn)lickr一直是計算機(jī)視覺數(shù)據(jù)的寶庫。YouTube以及維基百科也是自然語言處理的關(guān)鍵數(shù)據(jù)集。
如果說有一個數(shù)據(jù)集是深度學(xué)習(xí)興起的催化劑,那就是ImageNet數(shù)據(jù)集,由140萬張圖片組成,這些圖片已經(jīng)手工注釋了1000個圖片類別(每個圖片一個類別)。但使ImageNet與眾不同的不僅僅是它的大尺寸,還有與之相關(guān)的年度競爭。
正如Kaggle自2010年以來所展示的那樣,公開競賽是一種極好的方式來激勵研究人員和工程師突破極限。有共同的基準(zhǔn),研究人員競爭擊敗,已大大有助于最近的深度學(xué)習(xí)的崛起。
1.3.3 Algorithms
除了硬件和數(shù)據(jù),直到本世紀(jì)末,我們還沒有找到一種可靠的方法來訓(xùn)練深度很深的神經(jīng)網(wǎng)絡(luò)。因此,神經(jīng)網(wǎng)絡(luò)仍然相當(dāng)膚淺,只使用一或兩層表示;因此,他們無法在更精細(xì)的淺層方法如SVMs和隨機(jī)森林中發(fā)光。關(guān)鍵的問題是梯度傳播通過深層堆疊層。用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的反饋信號會隨著層數(shù)的增加而消退。
這種情況在2009-2010年發(fā)生了改變,一些簡單但重要的算法改進(jìn)出現(xiàn)了,從而可以更好地實現(xiàn)梯度傳播:
- 更好的神經(jīng)層激活功能
- 更好的權(quán)重初始化方案,從分層預(yù)訓(xùn)練開始,很快就被放棄了
- 更好的優(yōu)化方案,如RMSProp和Adam
只有當(dāng)這些改進(jìn)開始允許有10層或更多層的訓(xùn)練模型時,深度學(xué)習(xí)才開始閃光。最后,在2014年、2015年和2016年,發(fā)現(xiàn)了更先進(jìn)的幫助梯度傳播的方法,如批處理規(guī)范化、剩余連接和深度可分離卷積。今天,我們可以從零開始訓(xùn)練數(shù)千層的模型。
1.3.4新一輪投資浪潮
隨著深度學(xué)習(xí)在2012-2013年成為計算機(jī)視覺的新技術(shù),并最終應(yīng)用于所有感知任務(wù),行業(yè)領(lǐng)袖們注意到了這一點。隨之而來的是一股遠(yuǎn)遠(yuǎn)超過人工智能歷史上以往任何時期的行業(yè)投資浪潮。
2011年,在深度學(xué)習(xí)受到關(guān)注之前,人工智能的風(fēng)險投資總額約為1900萬美元,幾乎全部用于淺層機(jī)器學(xué)習(xí)方法的實際應(yīng)用。到2014年,這個數(shù)字已經(jīng)上升到驚人的水平3.94億美元。在這三年里,數(shù)十家創(chuàng)業(yè)公司成立,試圖利用深度學(xué)習(xí)的宣傳。與此同時,像谷歌,F(xiàn)acebook,百度和微軟在內(nèi)部研究部門的投資金額極有可能讓風(fēng)投資金的流動相形見絀。只有少數(shù)數(shù)據(jù)浮出水面:2013年,谷歌以據(jù)說5億美元的價格收購了深度學(xué)習(xí)創(chuàng)業(yè)公司DeepMind,這是歷史上最大的人工智能公司收購案。在2014年,百度在硅谷建立了一個深度學(xué)習(xí)研究中心,投資了3億美元。英特爾在2016年的出價超過4億美元,以獲得了神經(jīng)網(wǎng)絡(luò)系統(tǒng)的深度學(xué)習(xí)硬件啟動。
機(jī)器學(xué)習(xí)——尤其是深度學(xué)習(xí)——已經(jīng)成為這些科技巨頭產(chǎn)品戰(zhàn)略的核心。2015年末,谷歌首席執(zhí)行官桑達(dá)爾·皮查伊表示:“機(jī)器學(xué)習(xí)是一種核心的、具有變革性的方式,通過這種方式我們可以重新思考我們是如何做每件事的?!蔽覀兩钏际鞈]地將其應(yīng)用于我們所有的產(chǎn)品,無論是搜索、廣告、YouTube還是播放。我們還處于早期階段,但你會看到我們——以系統(tǒng)的方式——在所有這些領(lǐng)域應(yīng)用機(jī)器學(xué)習(xí)。
在這波投資浪潮的推動下,從事深度學(xué)習(xí)的人數(shù)在短短五年內(nèi)從幾百人上升到數(shù)萬人,研究進(jìn)展也達(dá)到了狂熱的速度。目前沒有跡象表明這一趨勢會很快放緩。
1.3.5 深度學(xué)習(xí)的民主進(jìn)程
推動深度學(xué)習(xí)新面孔流入的關(guān)鍵因素之一是該領(lǐng)域所用工具集的民主化。在早期,做深度學(xué)習(xí)需要大量的c++和CUDA專業(yè)知識,這是很少有人擁有的。現(xiàn)在,基本的Python腳本編寫技能足以進(jìn)行高級的深度學(xué)習(xí)研究。最引人注目的驅(qū)動因素是Theano和tensorflow的開發(fā)——這是Python的兩種符號性質(zhì)的tensor操作框架,支持自動區(qū)分,極大地簡化了新模型的實現(xiàn)——以及模型和用戶友好的庫(如Keras)的興起,使得深度學(xué)習(xí)像操作樂高積木一樣簡單。在2015年初發(fā)布之后,Keras迅速成為了大量新創(chuàng)業(yè)公司、研究生和研究人員的深度學(xué)習(xí)解決方案。
1.3.6這種情況會持續(xù)下去嗎?
深層神經(jīng)網(wǎng)絡(luò)有什么特別之處,使它們成為公司投資和研究人員趨之若鶩的“正確”方法嗎?或者深度學(xué)習(xí)只是一種可能不會持續(xù)很久的時尚?20年內(nèi),我們還會使用深層神經(jīng)網(wǎng)絡(luò)嗎?
深度學(xué)習(xí)有幾個特性可以證明它作為一場人工智能革命的地位,而且它將一直存在下去。20年后,我們可能不會再使用神經(jīng)網(wǎng)絡(luò),但無論我們使用什么,都將直接繼承現(xiàn)代深度學(xué)習(xí)及其核心概念。
這些重要屬性大致可分為三類:
- 簡單-深度學(xué)習(xí)消除了對特征工程的需求,用簡單的、端到端可訓(xùn)練的模型取代了復(fù)雜、脆弱、嚴(yán)重依賴工程的管道方式,這些模型通常只使用五六個不同的張量運(yùn)算來構(gòu)建。
- 可伸縮性-深度學(xué)習(xí)非常適合在gpu或TPUs,所以它可以充分利用摩爾定律。此外,深度學(xué)習(xí)模型是通過迭代小批量數(shù)據(jù)來訓(xùn)練的,允許它們在任意大小的數(shù)據(jù)集中進(jìn)行訓(xùn)練。(唯一的瓶頸是可用的并行計算能力,得益于摩爾定律,這是一個快速推進(jìn)的障礙。)
- 多功能性和可重用性——與許多現(xiàn)有的機(jī)器學(xué)習(xí)方法不同,深度學(xué)習(xí)模型可以在額外的數(shù)據(jù)上進(jìn)行訓(xùn)練,而無需從頭開始,這使得它們可以持續(xù)在線學(xué)習(xí)——對于非常大的生產(chǎn)模型來說是一個重要的特性。此外,經(jīng)過訓(xùn)練的深度學(xué)習(xí)模型是可重構(gòu)的,因此可以重用:例如,可以將經(jīng)過訓(xùn)練的深度學(xué)習(xí)模型用于圖像分類,并將其放入視頻處理管道中。這使我們可以對以前的工作進(jìn)行再投資,以應(yīng)對越來越多地復(fù)雜而強(qiáng)大的模型。這也使得深度學(xué)習(xí)適用于相當(dāng)小的數(shù)據(jù)集。
深度學(xué)習(xí)只是幾年前才成為人們關(guān)注的焦點,我們還沒有確定它能做什么。隨著每個月的過去,我們都在學(xué)習(xí)新的用例和工程改進(jìn),以消除以前的限制。在一場科學(xué)革命之后,進(jìn)步通常遵循一個s形曲線:它開始于一段快速的進(jìn)步時期,隨著研究人員遇到嚴(yán)格的限制,它逐漸穩(wěn)定下來,然后進(jìn)一步的改進(jìn)逐漸增加。2017年的深度學(xué)習(xí)似乎是“s”型學(xué)習(xí)的前半部分,在接下來的幾年中會有更多的進(jìn)展。
數(shù)學(xué)基礎(chǔ)查看第二章:http://m.itdecent.cn/p/ba51e470b736

