前言
在大數(shù)據(jù)、云計算及人工智能等領(lǐng)域交叉成果的共同推動下,深度學(xué)習(xí)的發(fā)展再一次實現(xiàn)質(zhì)的跨越,其相關(guān)技術(shù)也逐漸被大規(guī)模應(yīng)用于智能手機、計算機、物聯(lián)網(wǎng)設(shè)備、機器人等產(chǎn)品中。作為一個過來人,筆者很能理解深度學(xué)習(xí)初學(xué)者的心情,那種面對浩如煙海的深度學(xué)習(xí)知識卻不知從何學(xué)起的“迷!背蔀樗谐鯇W(xué)者學(xué)習(xí)歷程的絆腳石。一條行之有效的學(xué)習(xí)路徑是每個初學(xué)者當(dāng)前所急需的。為此,筆者想做一個拋磚引玉的人,幫助大家建立起屬于自己的深度學(xué)習(xí)知識體系,也好讓大家在學(xué)習(xí)的路上越走越順。
筆者用了大半年的時間來編寫此書,因為平時有做總結(jié)的習(xí)慣,所以寫的時間并不是很長,更多的是對整本書知識架構(gòu)的整理。由于深度學(xué)習(xí)的知識更新得比較快,筆者在2019年底還在更新此書的內(nèi)容,盡可能刪除陳舊知識點,保留精華知識并貢獻(xiàn)最新知識給大家。在寫書的過程中,筆者通過對理論內(nèi)容的文獻(xiàn)查閱與實戰(zhàn)內(nèi)容的反復(fù)驗證,不僅讓本書更加貼近大家的需求,也讓自己各方面能力完成了蛻變。
“授人以魚,不如授人以漁”,筆者希望本書傳達(dá)下來的是思想,而不是那一行行的具體實踐代碼,代碼總有被棄用的一天,而思想?yún)s可以永存。筆者希望大家通過實踐掌握本書的核心知識,并擁有自我學(xué)習(xí)能力,在筆者設(shè)立的知識體系下深挖自己所感興趣的領(lǐng)域。
筆者在編寫此書的過程中感悟良多,其中不乏對當(dāng)今信息爆炸時代的思考。知識迭代速度超乎了任何人的想象,我們現(xiàn)在需要的并不僅是知識,而是更需要良好的搜索能力與表達(dá)能力。為此,筆者希望大家善用搜索引擎來獲取最新的消息;ヂ(lián)網(wǎng)上有很多組織發(fā)表的優(yōu)秀論文,GitHub上有很多優(yōu)秀論文的代碼實現(xiàn),當(dāng)我們鉆研完某個領(lǐng)域最新的1000篇論文時,這個領(lǐng)域的新鮮事便轉(zhuǎn)化為自己的知識;另外就是養(yǎng)成寫作的習(xí)慣,寫作是對自己思維模式的訓(xùn)練,是對自己知識盲區(qū)的查漏補缺。未來大家也許并不會從事科研工作,但通過寫作鍛煉出來的邏輯思維能力和清晰表達(dá)復(fù)雜信息的能力,必將對大家未來從事的每樣工作都有所裨益,所以筆者希望大家都能重視搜索與寫作能力的培養(yǎng)!
大家也可以跟筆者一樣,將自己所思、所想和所學(xué)都上傳到互聯(lián)網(wǎng)上,經(jīng)受同行的審視,從他們的反饋中不斷進(jìn)步。大家會發(fā)現(xiàn),在嘗試將自己的思想表達(dá)給同行的時候,自己就已經(jīng)在進(jìn)步了。
致謝
此書在完稿前,筆者才深知創(chuàng)作之不易。不過除此之外,筆者得到更多的是一種充實感,寫書對筆者來說是創(chuàng)業(yè),也是對自己思維的打磨,整個過程都充滿意義。這是一次知識的分享,也是一次有益的嘗試。
另外,感謝父母的養(yǎng)育之恩,感謝導(dǎo)師的誨人不倦,感謝深圳大學(xué)信息中心和電子與信息工程學(xué)院提供的軟硬件支持,感謝河海大學(xué)王詩宇對本書的插畫設(shè)計與編輯。
最后,不得不提及的是,由于筆者水平與精力有限,書中難免存在某些疏漏,衷心歡迎大家的指正與批評!
王志立
2020年6月
本書源代碼下載
目錄
第1章導(dǎo)論
1.1本書學(xué)習(xí)路線
1.2人工智能與深度學(xué)習(xí)
1.3深度學(xué)習(xí)的算法流程
1.3.1特征工程
1.3.2模型評估
1.4總結(jié)
第2章Python開發(fā)環(huán)境搭建
2.1Linux服務(wù)器
2.1.1下載與安裝
2.1.2使用mobaxterm連接遠(yuǎn)程服務(wù)器
2.1.3在服務(wù)器上安裝Python開發(fā)環(huán)境
2.1.4Jupyter Notebook的使用
2.2Windows平臺
2.2.1下載Anaconda
2.2.2安裝配置
2.2.3安裝路徑配置
2.2.4系統(tǒng)環(huán)境配置
2.2.5在Windows上使用Jupyter Notebook
2.3使用Anaconda國內(nèi)源
2.3.1更換清華源
2.3.2更換中科大源
2.3.3pip設(shè)定永久阿里云源
2.4Python虛擬環(huán)境
2.4.1創(chuàng)建Python虛擬環(huán)境
2.4.2切換虛擬環(huán)境
2.4.3在虛擬環(huán)境中安裝額外的包
2.4.4虛擬環(huán)境的相關(guān)命令
2.5PyCharm遠(yuǎn)程連接服務(wù)器
2.5.1下載PyCharm專業(yè)版
2.5.2PyCharm連接虛擬環(huán)境
2.5.3使用screen進(jìn)行任務(wù)管理
2.6總結(jié)
第3章Python基礎(chǔ)
3.1Python簡介
3.2Python初階學(xué)習(xí)
3.2.1變量賦值
3.2.2標(biāo)準(zhǔn)數(shù)據(jù)類型
3.2.3數(shù)據(jù)類型轉(zhuǎn)換
3.2.4算術(shù)運算符
3.2.5格式化
3.3Python進(jìn)階學(xué)習(xí)
3.3.1循環(huán)
3.3.2條件語句
3.3.3文件I/O
3.3.4異常
3.3.5導(dǎo)包
3.4Python高階學(xué)習(xí)
3.4.1面向過程編程
3.4.2面向?qū)ο缶幊?/p>
3.4.3面向過程與面向?qū)ο蟮膮^(qū)別
3.5正則表達(dá)式
3.5.1re.match
3.5.2re.search
3.5.3re.sub
3.5.4re.compile 函數(shù)與findall
3.5.5正則表達(dá)式的重點
3.6進(jìn)程與線程
3.6.1多進(jìn)程的例子
3.6.2多線程例子
3.7總結(jié)
第4章深度學(xué)習(xí)
4.1Keras簡介
4.1.1Keras的優(yōu)點
4.1.2Keras的缺點
4.1.3Keras的安裝
4.2全連接神經(jīng)網(wǎng)絡(luò)
4.2.1全連接神經(jīng)網(wǎng)絡(luò)簡介
4.2.2全連接神經(jīng)網(wǎng)絡(luò)原理
4.2.3全連接神經(jīng)網(wǎng)絡(luò)小結(jié)
4.3卷積神經(jīng)網(wǎng)絡(luò)
4.3.1全連接神經(jīng)網(wǎng)絡(luò)的缺點
4.3.2卷積神經(jīng)網(wǎng)絡(luò)原理
4.3.3卷積神經(jīng)網(wǎng)絡(luò)與全連接神經(jīng)網(wǎng)絡(luò)的區(qū)別
4.3.4卷積層
4.3.5局部連接和權(quán)值共享
4.3.6池化層
4.3.7訓(xùn)練
4.3.8卷積神經(jīng)網(wǎng)絡(luò)的超參數(shù)設(shè)置
4.3.9卷積神經(jīng)網(wǎng)絡(luò)小結(jié)
4.4超參數(shù)
4.4.1過擬合
4.4.2優(yōu)化器
4.4.3學(xué)習(xí)率
4.4.4常見的激勵函數(shù)
4.4.5常見的損失函數(shù)
4.4.6其他超參數(shù)
4.4.7超參數(shù)設(shè)置小結(jié)
4.5自編碼器
4.5.1自編碼器的原理
4.5.2常見的自編碼器
4.5.3自編碼器小結(jié)
4.6RNN與RNN的變種結(jié)構(gòu)
4.6.1RNN與全連接神經(jīng)網(wǎng)絡(luò)的區(qū)別
4.6.2RNN的優(yōu)勢
4.6.3其他RNN結(jié)構(gòu)
4.6.4LSTM
4.6.5門控循環(huán)單元
4.6.6RNN與RNN變種結(jié)構(gòu)小結(jié)
4.7代碼實踐
4.7.1全連接神經(jīng)網(wǎng)絡(luò)回歸——房價預(yù)測
4.7.2全連接神經(jīng)網(wǎng)絡(luò)與文本分類
4.7.3卷積神經(jīng)網(wǎng)絡(luò)之文本分類
4.7.4卷積神經(jīng)網(wǎng)絡(luò)之圖像分類
4.7.5自編碼器
4.7.6LSTM實例之預(yù)測股價趨勢
4.8總結(jié)
第5章生成對抗網(wǎng)絡(luò)
5.1生成對抗網(wǎng)絡(luò)的原理
5.2生成對抗網(wǎng)絡(luò)的訓(xùn)練過程
5.3實驗
5.3.1代碼
5.3.2結(jié)果分析
5.4總結(jié)
第6章遺傳算法與神經(jīng)網(wǎng)絡(luò)
6.1遺傳演化神經(jīng)網(wǎng)絡(luò)
6.1.1遺傳算法原理
6.1.2遺傳算法整體流程
6.1.3遺傳算法遇上神經(jīng)網(wǎng)絡(luò)
6.1.4演化神經(jīng)網(wǎng)絡(luò)實驗
6.2遺傳拓?fù)渖窠?jīng)網(wǎng)絡(luò)
6.2.1遺傳拓?fù)渖窠?jīng)網(wǎng)絡(luò)原理
6.2.2算法核心
6.2.3NEAT實驗
6.3總結(jié)
第7章遷移學(xué)習(xí)與計算機視覺
7.1計算機視覺
7.1.1圖像分類
7.1.2目標(biāo)檢測
7.1.3語義分割
7.1.4實例分割
7.2計算機視覺遇上遷移學(xué)習(xí)
7.2.1VGG
7.2.2VGG16與圖像分類
7.2.3VGG16與目標(biāo)檢測
7.2.4VGG16與語義分割
7.2.5ResNeXt與實例分割
7.3遷移學(xué)習(xí)與計算機視覺實踐
7.3.1實驗環(huán)境
7.3.2實驗流程
7.3.3代碼
7.3.4結(jié)果分析
7.4總結(jié)
第8章遷移學(xué)習(xí)與自然語言處理
8.1自然語言處理預(yù)訓(xùn)練模型
8.1.1Word2Vec
8.1.2BERT
8.1.3RoBERTa
8.1.4ERNIE
8.1.5BERT_WWM
8.1.6NLP預(yù)訓(xùn)練模型對比
8.2自然語言處理四大下游任務(wù)
8.2.1句子對分類任務(wù)
8.2.2單句子分類任務(wù)
8.2.3問答任務(wù)
8.2.4單句子標(biāo)注任務(wù)
8.3遷移學(xué)習(xí)與自然語言處理競賽實踐
8.3.1賽題背景
8.3.2賽題任務(wù)
8.3.3數(shù)據(jù)說明
8.3.4環(huán)境搭建
8.3.5賽題分析
8.3.6實驗代碼
8.4總結(jié)
參考文獻(xiàn)