《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí)基于TensorFlow的實(shí)踐詳解》以實(shí)踐為導(dǎo)向,深入介紹了深度學(xué)習(xí)技術(shù)和TensorFlow框架編程內(nèi)容。通過(guò)本書,讀者可以訓(xùn)練自己的圖像識(shí)別模型、進(jìn)行目標(biāo)檢測(cè)和人臉識(shí)別、完成一個(gè)風(fēng)格遷移應(yīng)用,還可以使用神經(jīng)網(wǎng)絡(luò)生成圖像和文本,進(jìn)行時(shí)間序列預(yù)測(cè)、搭建機(jī)器翻譯引擎,訓(xùn)練機(jī)器玩游戲等。全書共包含21個(gè)項(xiàng)目,分為深度卷積網(wǎng)絡(luò)、RNN網(wǎng)絡(luò)、深度強(qiáng)化學(xué)習(xí)三部分。讀者可以在自己動(dòng)手實(shí)踐的過(guò)程中找到學(xué)習(xí)的樂(lè)趣,了解算法和編程框架的細(xì)節(jié),讓學(xué)習(xí)深度學(xué)習(xí)算法和TensorFlow的過(guò)程變得輕松和高效。本書基于TensorFlow 1.4版本,并介紹了該版本中的一些新特性。
1.本書以TensorFlow為工具,從基礎(chǔ)的MNIST手寫體識(shí)別開始,介紹了基礎(chǔ)的卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò),還包括正處于前沿的對(duì)抗生成網(wǎng)絡(luò)、深度強(qiáng)化學(xué)習(xí)等課題,代碼基于TensorFlow1.4.0及以上版本。
2.書中所有內(nèi)容由21個(gè)可以動(dòng)手實(shí)驗(yàn)的項(xiàng)目組織起來(lái),并在其中穿插TensorFlow的教學(xué),讓你可以在實(shí)踐中比較輕松地學(xué)習(xí)到深度學(xué)習(xí)領(lǐng)域的基礎(chǔ)知識(shí),掌握TensorFlow的使用方法,并積累豐富的深度學(xué)習(xí)實(shí)戰(zhàn)經(jīng)驗(yàn)。
3.通過(guò)本書,可以學(xué)到:
在動(dòng)手實(shí)踐中快速入門深度學(xué)習(xí)領(lǐng)域。
通過(guò)實(shí)驗(yàn)快速掌握TensorFlow的操作方法。
掌握卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、對(duì)抗生成網(wǎng)絡(luò)和深度強(qiáng)化學(xué)習(xí)等深度學(xué)習(xí)積累豐富的深度學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目,如圖像分類、目標(biāo)檢測(cè)、人臉識(shí)別、圖像生成、文本生成、序列分類、時(shí)間序列預(yù)測(cè)等。
學(xué)習(xí)TensorFlow的一些新特性,如TimeSeries模塊、RNNCell等。
我們正處在一個(gè)日新月異、飛速變革的時(shí)代,層出不窮的新技術(shù)每天都在沖擊和改變我們的生活。人工智能無(wú)疑是其中最受關(guān)注、也是影響最深遠(yuǎn)的技術(shù)領(lǐng)域。它為計(jì)算機(jī)插上了翅膀,演變出許多從前根本無(wú)法想象的新技術(shù)、新應(yīng)用。AlphaGoZero,一臺(tái)沒(méi)有任何先驗(yàn)知識(shí)的人工智能機(jī)器,可以在幾天內(nèi)通過(guò)自我博弈成長(zhǎng)為世界第一的圍棋大師,超越人類幾千年積累的經(jīng)驗(yàn);風(fēng)格遷移應(yīng)用能夠自動(dòng)將用戶的照片轉(zhuǎn)變?yōu)橹睦L畫藝術(shù)風(fēng)格;機(jī)器可以在零點(diǎn)幾秒內(nèi)完成翻譯,把一種語(yǔ)言譯成另一種語(yǔ)言。此外,有關(guān)人臉識(shí)別、自動(dòng)駕駛等新技術(shù)的應(yīng)用也都紛紛開始落地。在過(guò)去的幾年內(nèi),人工智能技術(shù)不僅在學(xué)術(shù)上取得了巨大的突破,也開始走向?qū)こ0傩占,真正為人們的生活提供便利?/p>
本書主要為讀者介紹這次人工智能浪潮最重要的組成部分深度學(xué)習(xí)技術(shù),使用的編程框架是谷歌的TensorFlow。借助于谷歌巨大的影響力,TensorFlow一經(jīng)發(fā)布就引起了廣泛的關(guān)注,目前(截止至2017年底)TensorFlow在Github上已經(jīng)有了8萬(wàn)4千多個(gè)Star,是所有深度學(xué)習(xí)框架中最多的。
鑒于目前市場(chǎng)上已有很多深度學(xué)習(xí)和TensorFlow的入門書籍,下面我們著重談一談本書與它們的不同之處,主要有以下幾點(diǎn):
實(shí)踐、應(yīng)用導(dǎo)向。深度學(xué)習(xí)需要深厚的數(shù)理基礎(chǔ),對(duì)于初學(xué)者來(lái)說(shuō)不是很友好。本書希望從實(shí)踐出發(fā),用具體的例子來(lái)引導(dǎo)讀者學(xué)習(xí)深度學(xué)習(xí)技術(shù)和TensorFlow編程技巧。我們主要從實(shí)用性和趣味性兩個(gè)方面考量,選擇了21個(gè)實(shí)踐項(xiàng)目,其中既有MNIST圖像識(shí)別這樣的入門項(xiàng)目,也有目標(biāo)檢測(cè)、人臉識(shí)別、時(shí)間序列預(yù)測(cè)這樣的實(shí)用性項(xiàng)目,還有一些諸如DeepDream這樣的趣味性項(xiàng)目。讀者可以在實(shí)踐中找到樂(lè)趣,逐漸進(jìn)步,讓學(xué)習(xí)深度學(xué)習(xí)和TensorFlow的過(guò)程不再那么痛苦。
清晰、有深度的介紹。在寫書過(guò)程中,我們盡量用簡(jiǎn)單的語(yǔ)言來(lái)描述算法的原理,做到清晰有條理。此外,深度學(xué)習(xí)是一門還在快速發(fā)展的新技術(shù),限于篇幅所限,很多內(nèi)容不能完全寫到書中,我們?cè)诖蟛糠终鹿?jié)的末尾列出了拓展閱讀材料,有興趣的讀者可以參考拓展材料進(jìn)一步學(xué)習(xí)細(xì)節(jié)知識(shí)。
基于TensorFlow1.4版本。TensorFlow的發(fā)展非常迅速,本書代碼全部基于TensorFlow最新的1.4版本(包括1.4.0和1.4.1),并介紹了TensorFlow的一些新特性,如TimeSeries模塊(1.3版本添加)、新的MultiRNNCell函數(shù)(1.2版本更改)等。本書的代碼會(huì)在如下Github地址上提供,并會(huì)隨新的TensorFlow版本的發(fā)布而同步更新:https://github.com/hzy46/Deep-Learning-21-Examples。
本書代碼推薦的運(yùn)行環(huán)境為:Ubuntu14.04,Python2.7、TensorFlow1.4.0。請(qǐng)盡量使用類Unix系統(tǒng)和Python2來(lái)運(yùn)行本書的代碼。
本書主要內(nèi)容
本書共包括21章,內(nèi)容編排如下:
第1到第11章主要介紹深度卷積神經(jīng)相關(guān)的項(xiàng)目。其中,第1~3章屬于入門章節(jié),主要討論深度學(xué)習(xí)中最基礎(chǔ)的圖像識(shí)別問(wèn)題。第4~7章討論了其他計(jì)算機(jī)視覺(jué)相關(guān)的實(shí)踐案例,如目標(biāo)識(shí)別、人臉識(shí)別、圖像風(fēng)格遷移等。最后,8~11章介紹了GAN模型和它的幾個(gè)重要變體。
第12到第17章主要介紹RNN、LSTM相關(guān)的項(xiàng)目。RNN、LSTM通常用來(lái)處理序列型數(shù)據(jù),這里第12章是一個(gè)入門章節(jié),會(huì)詳細(xì)介紹RNN和LSTM的原理、實(shí)現(xiàn)方法和一個(gè)應(yīng)用實(shí)例CharRNN。第13到17章討論一些更復(fù)雜也更具體的案例,如序列分類、詞嵌入表示、時(shí)間序列預(yù)測(cè)、機(jī)器翻譯等。
第18到第21章主要介紹強(qiáng)化學(xué)習(xí)相關(guān)的項(xiàng)目。作為基礎(chǔ),第18、19章分別介紹了相對(duì)簡(jiǎn)單的QLearning和SARSA算法,第20章和第21章介紹了更復(fù)雜的DQN和策略梯度算法。
如何閱讀本書
在閱讀此書前,讀者應(yīng)當(dāng)了解Linux系統(tǒng)的基本操作,并會(huì)使用Python進(jìn)行簡(jiǎn)單的編程,此外讀者還需具備基礎(chǔ)的機(jī)器學(xué)習(xí)知識(shí)。這本書章節(jié)的安排是依據(jù)讀者對(duì)深度學(xué)習(xí)的了解循序漸進(jìn)設(shè)立的,建議初學(xué)者從前至后閱讀。由于深度學(xué)習(xí)和TensorFlow都不大易于理解,我建議讀者分幾遍閱讀本書:
第一遍先簡(jiǎn)單的瀏覽一下,看一看書中都有哪些實(shí)踐項(xiàng)目。當(dāng)對(duì)基本的概念有初步的理解時(shí),就可以嘗試配置一下開發(fā)環(huán)境。
第二遍,從前至后,閱讀各章中算法的原理,并運(yùn)行相應(yīng)的實(shí)踐項(xiàng)目。在這個(gè)過(guò)程中,希望讀者能在自己動(dòng)手的過(guò)程中找到學(xué)習(xí)的樂(lè)趣。讀者可以對(duì)照源代碼和書中的內(nèi)容,深入學(xué)習(xí)各個(gè)模型的細(xì)節(jié),此外還可以根據(jù)自己的需求對(duì)代碼進(jìn)行修改。本書會(huì)涉及到大量TensorFlow中的函數(shù),由于篇幅限制,不可能將每一個(gè)函數(shù)都介紹一遍,書中只會(huì)對(duì)比較重要的函數(shù)進(jìn)行介紹,讀者可以參考TensorFlow的官方文檔,查看其他函數(shù)的功能說(shuō)明。
第三遍再根據(jù)需要對(duì)照源程序看相關(guān)章節(jié)。此外,讀者還可以參閱章節(jié)最后的拓展閱讀來(lái)作進(jìn)一步學(xué)習(xí)。最后,如果你是一名深度學(xué)習(xí)和TensorFlow的精通者,也可以根據(jù)需要直接跳讀到相關(guān)章節(jié),查閱你需要的內(nèi)容。
致謝
我首先要感謝我的父母,是他們將我養(yǎng)育成人,父母永遠(yuǎn)健康快樂(lè)是我最大的心愿。
感謝互聯(lián)網(wǎng)時(shí)代,感謝網(wǎng)絡(luò)上數(shù)不清的優(yōu)秀開發(fā)者和博主,也感謝谷歌的開源精神,讓我們可以如此緊跟時(shí)代最前沿的技術(shù),并為技術(shù)的進(jìn)步做出自己微薄的貢獻(xiàn)。
我還要真誠(chéng)地感謝電子工業(yè)出版社對(duì)這本書的認(rèn)可和興趣。感謝電子工業(yè)出版社的孫學(xué)瑛女士,她的熱情推動(dòng)最終促成了我與電子工業(yè)出版社的合作。感謝孫亞?wèn)|編輯,他對(duì)本書的重視和誠(chéng)懇的建議,在寫作過(guò)程中給了我莫大的幫助。
最后,感謝劉婧源同學(xué)給本書提出的寶貴的意見(jiàn)。
由于本人水平有限,書中不足及錯(cuò)誤之處在所難免,敬請(qǐng)專家和讀者給予批評(píng)指正。如果您想和我進(jìn)行技術(shù)交流,可以發(fā)送意見(jiàn)反饋郵件至hzydl21@163.com,亦可在知乎上找到我:https://www.zhihu.com/people/he-zhi-yuan-16/,此外還可以訪問(wèn)書友論壇http://forum.broadview.com.cn。
何之源
2018年1月1日
何之源,知乎專欄AIInsight作者。針對(duì)Tensorflow早期學(xué)習(xí)案例不足的情況,在網(wǎng)上撰寫了大量實(shí)踐文章與TensorFlow教程,教程風(fēng)格清晰易懂又不失深度,獲得了廣大讀者的肯定。熱愛(ài)編程,在人工智能和深度學(xué)習(xí)領(lǐng)域有豐富的實(shí)踐經(jīng)驗(yàn)。