前言
在大數(shù)據(jù)、云計(jì)算及人工智能等領(lǐng)域交叉成果的共同推動(dòng)下,深度學(xué)習(xí)的發(fā)展再一次實(shí)現(xiàn)質(zhì)的跨越,其相關(guān)技術(shù)也逐漸被大規(guī)模應(yīng)用于智能手機(jī)、計(jì)算機(jī)、物聯(lián)網(wǎng)設(shè)備、機(jī)器人等產(chǎn)品中。作為一個(gè)過來人,筆者很能理解深度學(xué)習(xí)初學(xué)者的心情,那種面對(duì)浩如煙海的深度學(xué)習(xí)知識(shí)卻不知從何學(xué)起的“迷!背蔀樗谐鯇W(xué)者學(xué)習(xí)歷程的絆腳石。一條行之有效的學(xué)習(xí)路徑是每個(gè)初學(xué)者當(dāng)前所急需的。為此,筆者想做一個(gè)拋磚引玉的人,幫助大家建立起屬于自己的深度學(xué)習(xí)知識(shí)體系,也好讓大家在學(xué)習(xí)的路上越走越順。
筆者用了大半年的時(shí)間來編寫此書,因?yàn)槠綍r(shí)有做總結(jié)的習(xí)慣,所以寫的時(shí)間并不是很長(zhǎng),更多的是對(duì)整本書知識(shí)架構(gòu)的整理。由于深度學(xué)習(xí)的知識(shí)更新得比較快,筆者在2019年底還在更新此書的內(nèi)容,盡可能刪除陳舊知識(shí)點(diǎn),保留精華知識(shí)并貢獻(xiàn)最新知識(shí)給大家。在寫書的過程中,筆者通過對(duì)理論內(nèi)容的文獻(xiàn)查閱與實(shí)戰(zhàn)內(nèi)容的反復(fù)驗(yàn)證,不僅讓本書更加貼近大家的需求,也讓自己各方面能力完成了蛻變。
“授人以魚,不如授人以漁”,筆者希望本書傳達(dá)下來的是思想,而不是那一行行的具體實(shí)踐代碼,代碼總有被棄用的一天,而思想?yún)s可以永存。筆者希望大家通過實(shí)踐掌握本書的核心知識(shí),并擁有自我學(xué)習(xí)能力,在筆者設(shè)立的知識(shí)體系下深挖自己所感興趣的領(lǐng)域。
筆者在編寫此書的過程中感悟良多,其中不乏對(duì)當(dāng)今信息爆炸時(shí)代的思考。知識(shí)迭代速度超乎了任何人的想象,我們現(xiàn)在需要的并不僅是知識(shí),而是更需要良好的搜索能力與表達(dá)能力。為此,筆者希望大家善用搜索引擎來獲取最新的消息;ヂ(lián)網(wǎng)上有很多組織發(fā)表的優(yōu)秀論文,GitHub上有很多優(yōu)秀論文的代碼實(shí)現(xiàn),當(dāng)我們鉆研完某個(gè)領(lǐng)域最新的1000篇論文時(shí),這個(gè)領(lǐng)域的新鮮事便轉(zhuǎn)化為自己的知識(shí);另外就是養(yǎng)成寫作的習(xí)慣,寫作是對(duì)自己思維模式的訓(xùn)練,是對(duì)自己知識(shí)盲區(qū)的查漏補(bǔ)缺。未來大家也許并不會(huì)從事科研工作,但通過寫作鍛煉出來的邏輯思維能力和清晰表達(dá)復(fù)雜信息的能力,必將對(duì)大家未來從事的每樣工作都有所裨益,所以筆者希望大家都能重視搜索與寫作能力的培養(yǎng)!
大家也可以跟筆者一樣,將自己所思、所想和所學(xué)都上傳到互聯(lián)網(wǎng)上,經(jīng)受同行的審視,從他們的反饋中不斷進(jìn)步。大家會(huì)發(fā)現(xiàn),在嘗試將自己的思想表達(dá)給同行的時(shí)候,自己就已經(jīng)在進(jìn)步了。
致謝
此書在完稿前,筆者才深知?jiǎng)?chuàng)作之不易。不過除此之外,筆者得到更多的是一種充實(shí)感,寫書對(duì)筆者來說是創(chuàng)業(yè),也是對(duì)自己思維的打磨,整個(gè)過程都充滿意義。這是一次知識(shí)的分享,也是一次有益的嘗試。
另外,感謝父母的養(yǎng)育之恩,感謝導(dǎo)師的誨人不倦,感謝深圳大學(xué)信息中心和電子與信息工程學(xué)院提供的軟硬件支持,感謝河海大學(xué)王詩(shī)宇對(duì)本書的插畫設(shè)計(jì)與編輯。
最后,不得不提及的是,由于筆者水平與精力有限,書中難免存在某些疏漏,衷心歡迎大家的指正與批評(píng)!
王志立
2020年6月
本書源代碼下載
目錄
第1章導(dǎo)論
1.1本書學(xué)習(xí)路線
1.2人工智能與深度學(xué)習(xí)
1.3深度學(xué)習(xí)的算法流程
1.3.1特征工程
1.3.2模型評(píng)估
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平臺(tái)
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國(guó)內(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簡(jiǎn)介
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ù)運(yùn)算符
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á)式的重點(diǎn)
3.6進(jìn)程與線程
3.6.1多進(jìn)程的例子
3.6.2多線程例子
3.7總結(jié)
第4章深度學(xué)習(xí)
4.1Keras簡(jiǎn)介
4.1.1Keras的優(yōu)點(diǎn)
4.1.2Keras的缺點(diǎn)
4.1.3Keras的安裝
4.2全連接神經(jīng)網(wǎng)絡(luò)
4.2.1全連接神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介
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ò)的缺點(diǎn)
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常見的激勵(lì)函數(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)勢(shì)
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代碼實(shí)踐
4.7.1全連接神經(jīng)網(wǎng)絡(luò)回歸——房?jī)r(jià)預(yù)測(cè)
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實(shí)例之預(yù)測(cè)股價(jià)趨勢(shì)
4.8總結(jié)
第5章生成對(duì)抗網(wǎng)絡(luò)
5.1生成對(duì)抗網(wǎng)絡(luò)的原理
5.2生成對(duì)抗網(wǎng)絡(luò)的訓(xùn)練過程
5.3實(shí)驗(yàn)
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ò)實(shí)驗(yàn)
6.2遺傳拓?fù)渖窠?jīng)網(wǎng)絡(luò)
6.2.1遺傳拓?fù)渖窠?jīng)網(wǎng)絡(luò)原理
6.2.2算法核心
6.2.3NEAT實(shí)驗(yàn)
6.3總結(jié)
第7章遷移學(xué)習(xí)與計(jì)算機(jī)視覺
7.1計(jì)算機(jī)視覺
7.1.1圖像分類
7.1.2目標(biāo)檢測(cè)
7.1.3語義分割
7.1.4實(shí)例分割
7.2計(jì)算機(jī)視覺遇上遷移學(xué)習(xí)
7.2.1VGG
7.2.2VGG16與圖像分類
7.2.3VGG16與目標(biāo)檢測(cè)
7.2.4VGG16與語義分割
7.2.5ResNeXt與實(shí)例分割
7.3遷移學(xué)習(xí)與計(jì)算機(jī)視覺實(shí)踐
7.3.1實(shí)驗(yàn)環(huán)境
7.3.2實(shí)驗(yàn)流程
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)練模型對(duì)比
8.2自然語言處理四大下游任務(wù)
8.2.1句子對(duì)分類任務(wù)
8.2.2單句子分類任務(wù)
8.2.3問答任務(wù)
8.2.4單句子標(biāo)注任務(wù)
8.3遷移學(xué)習(xí)與自然語言處理競(jìng)賽實(shí)踐
8.3.1賽題背景
8.3.2賽題任務(wù)
8.3.3數(shù)據(jù)說明
8.3.4環(huán)境搭建
8.3.5賽題分析
8.3.6實(shí)驗(yàn)代碼
8.4總結(jié)
參考文獻(xiàn)