深度學(xué)習(xí)如此流行,以至于關(guān)于它的資料隨處可見(jiàn)。但往往是理論連篇,并不適合開(kāi)發(fā)者具體使用,本書(shū)內(nèi)容豐富實(shí)用、原理直白易懂、示例詳細(xì)直觀、代碼詳實(shí)細(xì)致,目的就是希望幫助開(kāi)發(fā)者在學(xué)習(xí)這個(gè)人工智能的過(guò)程中不那么痛苦,同時(shí)也希望用本書(shū)中具體的開(kāi)發(fā)實(shí)例講解能夠幫助開(kāi)發(fā)者避免困惑。本書(shū)主要考慮了兩類(lèi)讀者。*類(lèi)是準(zhǔn)備系統(tǒng)地學(xué)習(xí)深度學(xué)習(xí)以進(jìn)一步研究和開(kāi)發(fā)的讀者,書(shū)中的示例代碼將更加有助于進(jìn)一步理解本書(shū)所講的內(nèi)容。第二類(lèi)是想比從雜志或報(bào)紙上獲得更深入的深度學(xué)習(xí)信息,但不必進(jìn)行實(shí)際研究的讀者。書(shū)中概念和示例結(jié)果,也有助于您理解深度學(xué)習(xí)的大多數(shù)重要技術(shù)。
本書(shū)共包含6章內(nèi)容,可以分為3個(gè)主題。書(shū)中例子均用MATLAB編寫(xiě)而成。
第1個(gè)主題是機(jī)器學(xué)習(xí)。深度學(xué)習(xí)起源于機(jī)器學(xué)習(xí),這意味著如果想要理解深度學(xué)習(xí)的本質(zhì),就必須在某種程度上知道機(jī)器學(xué)習(xí)背后的理念。第1章從機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的關(guān)系開(kāi)始講起,隨后是解決問(wèn)題的策略和機(jī)器學(xué)習(xí)的基本局限性。
第2個(gè)主題是人工神經(jīng)網(wǎng)絡(luò)這是第2~4章的重點(diǎn)內(nèi)容。由于深度學(xué)習(xí)就是采用一種神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí),所以不能將神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)分開(kāi)。第2章從神經(jīng)網(wǎng)絡(luò)的基本概念講起:它的工作原理、體系結(jié)構(gòu)和學(xué)習(xí)規(guī)則,也講到了神經(jīng)網(wǎng)絡(luò)由簡(jiǎn)單的單層結(jié)構(gòu)演化為復(fù)雜的多層結(jié)構(gòu)的原因。第3章介紹了反向傳播算法,它是神經(jīng)網(wǎng)絡(luò)中一種重要和典型的學(xué)習(xí)規(guī)則,深度學(xué)習(xí)也使用這種算法。本章解釋了代價(jià)函數(shù)和學(xué)習(xí)規(guī)則是如何聯(lián)系起來(lái)的,哪一種代價(jià)函數(shù)在深度學(xué)習(xí)中被廣泛使用。第4章介紹了將神經(jīng)網(wǎng)絡(luò)應(yīng)用到分類(lèi)問(wèn)題中的方法。其中單列一節(jié)專(zhuān)門(mén)講分類(lèi),因?yàn)樗悄壳?流行的一種深度學(xué)習(xí)應(yīng)用。例如圖像識(shí)別是一個(gè)分類(lèi)問(wèn)題,也是深度學(xué)習(xí)的一種主要應(yīng)用。
第3個(gè)主題是深度學(xué)習(xí),也是本書(shū)的重點(diǎn),將在第5章和第6章中講解。第5章介紹了使深度學(xué)習(xí)能夠產(chǎn)生卓越性能的驅(qū)動(dòng)因素。第6章講解了卷積神經(jīng)網(wǎng)絡(luò),本章首先介紹了卷積神經(jīng)網(wǎng)絡(luò)的基本概念和結(jié)構(gòu),并與前面的圖像識(shí)別算法進(jìn)行了比較;隨后解釋了卷積層和池化層的作用和運(yùn)算方法,它們是卷積神經(jīng)網(wǎng)絡(luò)的重要組成部分。第6章也包含了一個(gè)用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)字圖像識(shí)別的例子,并研究了圖像通過(guò)各層的演化過(guò)程。
序 言
我有幸見(jiàn)證了世界向信息化社會(huì)的轉(zhuǎn)變過(guò)程,隨之而來(lái)的就是一個(gè)網(wǎng)絡(luò)化的環(huán)境。我從小就生活在這種變革中。個(gè)人計(jì)算機(jī)的發(fā)明打開(kāi)了人類(lèi)通向信息世界的大門(mén),接著就是互聯(lián)網(wǎng)將計(jì)算機(jī)連接了起來(lái),智能手機(jī)將人與人聯(lián)系了起來(lái),F(xiàn)在,每個(gè)人都意識(shí)到人工智能的浪潮已經(jīng)到來(lái)。越來(lái)越多的智能服務(wù)即將被發(fā)明出來(lái),同時(shí)這也將把我們帶入一個(gè)新的智能時(shí)代。深度學(xué)習(xí)是引領(lǐng)這股智能浪潮的前沿技術(shù)。雖然它最終可能將其寶座
移交給其他新技術(shù),但是目前它仍是各種人工智能新技術(shù)的重要基石。
深度學(xué)習(xí)如此流行,以至于關(guān)于它的資料隨處可見(jiàn)。然而適用于初學(xué)者的資料并不多見(jiàn)。我編寫(xiě)這本書(shū)的目的是希望幫助初學(xué)者在學(xué)習(xí)這個(gè)新知識(shí)的過(guò)程中不那么痛苦,因?yàn)槲以w驗(yàn)過(guò)這種痛苦,同時(shí)也希望本書(shū)中具體的開(kāi)發(fā)實(shí)例講解能夠幫助初學(xué)者避免我曾經(jīng)遇到的困惑。
本書(shū)主要考慮了兩類(lèi)讀者。第一類(lèi)是準(zhǔn)備系統(tǒng)地學(xué)習(xí)深度學(xué)習(xí)以進(jìn)一步研究和開(kāi)發(fā)的讀者。這類(lèi)讀者需要從頭到尾閱讀本書(shū)內(nèi)容,其中的示例代碼將更加有助于進(jìn)一步理解本書(shū)所講的內(nèi)容。我為提供恰當(dāng)?shù)睦硬⒓右詫?shí)現(xiàn)做出了很大的努力,同時(shí)為了使編寫(xiě)的代碼易于閱讀和理解,均將它們用MATLAB編寫(xiě)而成。在簡(jiǎn)單和直觀性上,沒(méi)有任何語(yǔ)言比MATLAB更易于處理深度學(xué)習(xí)中的矩陣。示例代碼僅采用了基本的函數(shù)和語(yǔ)法,以便不熟悉MATLAB的讀者也能容易理解和分析里面的概念。對(duì)于熟悉編程的讀者來(lái)說(shuō),代碼可能比文字更容易理解。
第二類(lèi)是想比從雜志或報(bào)紙上獲得更深入的深度學(xué)習(xí)信息,但不必進(jìn)行實(shí)際研究的讀者。這類(lèi)讀者可以跳過(guò)代碼,只需簡(jiǎn)要地閱讀對(duì)這些概念的解釋即可;也可以跳過(guò)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)規(guī)則這部分內(nèi)容。實(shí)際上,因?yàn)楹苋菀撰@取各種深度學(xué)習(xí)庫(kù),甚至開(kāi)發(fā)者很少需要親自實(shí)現(xiàn)這些學(xué)習(xí)規(guī)則,因此,對(duì)于那些從不想開(kāi)發(fā)深度學(xué)習(xí)的人員,不必?fù)?dān)心本書(shū)內(nèi)容的難度。但是請(qǐng)重點(diǎn)關(guān)注第1章、第2章(第2.1~2.4節(jié))、第5章和第6章的內(nèi)容。特別是第6章,即使只是閱讀其概念和示例結(jié)果,也有助于理解深度學(xué)習(xí)的大多數(shù)重要技術(shù)。為了提供理論背景,本書(shū)中偶爾會(huì)出現(xiàn)一些方程,但它們只是基礎(chǔ)的運(yùn)算。閱讀和學(xué)習(xí)你能忍受的內(nèi)容最終將讓你對(duì)這些概念有個(gè)全面的理解。
本書(shū)結(jié)構(gòu)
本書(shū)共包含6章內(nèi)容,可以分為3個(gè)主題。
第1個(gè)主題是機(jī)器學(xué)習(xí),這是第1章的內(nèi)容。深度學(xué)習(xí)起源于機(jī)器學(xué)習(xí),這意味著如果想要理解深度學(xué)習(xí)的本質(zhì),就必須在某種程度上知道機(jī)器學(xué)習(xí)背后的理念。第1章從機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的關(guān)系開(kāi)始講起,隨后是解決問(wèn)題的策略和機(jī)器學(xué)習(xí)的基本局限性。此處僅涵蓋了神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的基本概念,并沒(méi)有詳細(xì)介紹技術(shù)本身。
第2個(gè)主題是人工神經(jīng)網(wǎng)絡(luò),這是第2~4章的重點(diǎn)內(nèi)容。由于深度學(xué)習(xí)就是采用一種神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí),所以不能將神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)分開(kāi)。第2章從神經(jīng)網(wǎng)絡(luò)的基本概念講起:它的工作原理、體系結(jié)構(gòu)和學(xué)習(xí)規(guī)則,也講到了神經(jīng)網(wǎng)絡(luò)由簡(jiǎn)單的單層結(jié)構(gòu)演化為復(fù)雜的多層結(jié)構(gòu)的原因。
第3章介紹了反向傳播算法,它是神經(jīng)網(wǎng)絡(luò)中一種重要和典型的學(xué)習(xí)規(guī)則,深度學(xué)習(xí)也使用這種算法。本章解釋了代價(jià)函數(shù)和學(xué)習(xí)規(guī)則是如何聯(lián)系起來(lái)的,哪一種代價(jià)函數(shù)在深度學(xué)習(xí)中被廣泛使用。第4章介紹了將神經(jīng)網(wǎng)絡(luò)應(yīng)用到分類(lèi)問(wèn)題中的方法。其中單列一節(jié)專(zhuān)門(mén)講分類(lèi),因?yàn)樗悄壳白盍餍械囊环N深度學(xué)習(xí)應(yīng)用。例如圖像識(shí)別是一個(gè)分類(lèi)問(wèn)題,也是深度學(xué)習(xí)的一種主要應(yīng)用。
第3個(gè)主題是深度學(xué)習(xí),也是本書(shū)的重點(diǎn),將在第5章和第6章中講解。第5章介紹了使深度學(xué)習(xí)能夠產(chǎn)生卓越性能的驅(qū)動(dòng)因素。為了有助于更好地理解,本章先談了深度學(xué)習(xí)的發(fā)展歷程,包括它遇到的障礙及解決辦法。第6章講解了卷積神經(jīng)網(wǎng)絡(luò),它是深度學(xué)習(xí)的代表性技術(shù)。卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別領(lǐng)域是首屈一指的技術(shù)。本章首先介紹了卷積神經(jīng)網(wǎng)絡(luò)的基本概念和結(jié)構(gòu),并與前面的圖像識(shí)別算法進(jìn)行了比較;隨后解釋了卷積層和池化層的作用和運(yùn)算方法,它們是卷積神經(jīng)網(wǎng)絡(luò)的重要組成部分。第6章也包含了一個(gè)用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)字圖像識(shí)別的例子,并研究了圖像通過(guò)各層的演化過(guò)程。
示例代碼
本書(shū)中的全部代碼和數(shù)據(jù)都能通過(guò)下面的鏈接獲取,這些例子都通過(guò)了MATLAB 2014的測(cè)試,并且不需要額外的工具箱,鏈接地址是github.com/philbooks/Deep-Learning-for-Beginners
致 謝
實(shí)際上,我認(rèn)為大部分書(shū)籍的致謝都與讀者無(wú)關(guān),然而我還是準(zhǔn)備按慣例寫(xiě)下一些感謝的話(huà)語(yǔ),因?yàn)樵S多人和事對(duì)我來(lái)說(shuō)都很特別。首先,我對(duì)在Modulabs共同學(xué)習(xí)深度學(xué)習(xí)的朋友們深表感謝,我所知道的大部分深度學(xué)習(xí)知識(shí)都來(lái)源于他們;并且我還要感謝我的導(dǎo)師S. Kim,是他接受我,把我領(lǐng)進(jìn)了這個(gè)奇妙的領(lǐng)域,共度春夏秋冬,我才能在Modulabs完成本書(shū)的大部分內(nèi)容。
同時(shí)我也感謝來(lái)自Bogonet的Jeon主席,來(lái)自KARI的H. You博士、Y.S. Kang博士和J.H. Lee先生,來(lái)自Modulabs的S. Kim 導(dǎo)師,來(lái)自J.
MARPLE的W. Lee先生和S. Hwang先生,他們都花了很多時(shí)間和精力來(lái)閱讀和修改我的書(shū)稿,他們?cè)谡麄(gè)修改過(guò)程中提出了很多建議,雖然這也給了我一段艱難的時(shí)光,但只有這樣我現(xiàn)在才能毫無(wú)遺憾地完成本書(shū)。
最后,我把最深的感謝和愛(ài)獻(xiàn)給我的妻子,她是我此生遇到的最好的女人;我也愛(ài)我的孩子,他們從來(lái)不會(huì)厭倦我,并且與我分享了珍貴的回憶。
第1章 機(jī)器學(xué)習(xí)
1.1 機(jī)器學(xué)習(xí)與深度學(xué)習(xí)
1.2 什么是機(jī)器學(xué)習(xí)
1.3 機(jī)器學(xué)習(xí)的挑戰(zhàn)
1.4 過(guò)擬合
1.5 直面過(guò)擬合
1.6 機(jī)器學(xué)習(xí)的類(lèi)型
1.7 分類(lèi)和回歸
1.8 總 結(jié)
第2章 神經(jīng)網(wǎng)絡(luò)
2.1 概 述
2.2 神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)
2.3 多層神經(jīng)網(wǎng)絡(luò)
2.4 神經(jīng)網(wǎng)絡(luò)的監(jiān)督學(xué)習(xí)
2.5 單層神經(jīng)網(wǎng)絡(luò)訓(xùn)練:增量規(guī)則
2.6 廣義增量規(guī)則
2.7 隨機(jī)梯度下降算法、批量算法和小批量算法
2.7.1 隨機(jī)梯度下降算法
2.7.2 批量算法
2.7.3 小批量算法
2.8 示例:增量規(guī)則
2.8.1 隨機(jī)梯度下降算法的實(shí)現(xiàn)
2.8.2 批量算法的實(shí)現(xiàn)
2.8.3 隨機(jī)梯度下降算法與批量算法的比較
2.9 單層神經(jīng)網(wǎng)絡(luò)的局限性
2.10 總 結(jié)
第3章 訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)
3.1 概 述
3.2 反向傳播算法
3.3 示 例
3.3.1 XOR問(wèn)題
3.3.2 動(dòng)量法(Momentum)
3.4 代價(jià)函數(shù)和學(xué)習(xí)規(guī)則
3.5 示 例
3.5.1 交叉熵函數(shù)
3.5.2 代價(jià)函數(shù)的比較
3.6 總 結(jié)
第4章 神經(jīng)網(wǎng)絡(luò)及其分類(lèi)
4.1 概 述
4.2 二分類(lèi)
4.3 多分類(lèi)
4.4 示例:多分類(lèi)
4.5 總 結(jié)
第5章 深度學(xué)習(xí)
5.1 概 述
5.2 深度神經(jīng)網(wǎng)絡(luò)的進(jìn)化
5.2.1 梯度消失
5.2.2 過(guò)擬合
5.2.3 計(jì)算量的增加
5.3 示 例
5.3.1 ReLU 函數(shù)
5.3.2 節(jié)點(diǎn)丟棄
5.4 總 結(jié)
第6章 卷積神經(jīng)網(wǎng)絡(luò)
6.1 概 述
6.2 卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)
6.3 卷積層
6.4 池化層
6.5 示例:MNIST
6.6 總 結(jié)
索 引