本書分為三部分,第一部分介紹Python編程,包括Python基礎、Python面向?qū)ο蠛蚉ython高級編程;第二部分介紹機器學習,包括機器學習概述、機器學習?經(jīng)典算法和機器學習?回歸算法;第三部分介紹神經(jīng)網(wǎng)絡,包括從感知機到神經(jīng)網(wǎng)絡、神經(jīng)網(wǎng)絡?反向傳播算法、神經(jīng)網(wǎng)絡的訓練方法、卷積神經(jīng)網(wǎng)絡和項目實例-表情識別。從模型構(gòu)造到模型訓練,本書全面介紹了人工智能相關內(nèi)容及人工智能在計算機視覺、自然語言處理中的應用,不僅闡述算法原理,還基于Python語言實現(xiàn)了算法。本書的每個知識點都給出了與之對應的程序,讀者不但能直接閱讀,而且可以運行程序,以獲得交互式的學習體驗。本書面向希望了解人工智能,特別是對實際應用人工智能感興趣的本科生、研究生、工程師和研究人員,可作為高等院校人工智能課程的教材。
邵一川,東北大學博士后、沈陽大學副教授,遼寧省教育廳優(yōu)秀人才、沈陽市拔尖人才,"盛京人才獎勵”獲得者、美國普渡大學訪問學者。近年來先后主持中國博士后面上基金,省博士啟動基金、自然科學基金,省財政廳項目,省教育廳項目。等多項省市國家級別項目。參編教材多部,主持省教改立項"成人教育遠程網(wǎng)絡教學系統(tǒng)”及多項校級教改立項。近年來承擔"通信網(wǎng)絡程序設計”"虛擬現(xiàn)實技術”"大數(shù)據(jù)程序課程設計”"能源技術”"網(wǎng)絡控制系統(tǒng)及應用”"科學數(shù)據(jù)可視化”"數(shù)據(jù)挖掘與數(shù)據(jù)倉庫”等多門本科生、研究生課程。
目錄
第一部分 Python編程
第1章 Python基礎 3
1.1 Python簡介及開發(fā)環(huán)境搭建 3
1.1.1 Python的安裝 3
1.1.2 集成開發(fā)環(huán)境 4
1.2 Python變量標識符和關鍵字 7
1.2.1 變量定義 7
1.2.2 變量的類型 8
1.2.3 變量的命名 11
1.3 Python運算符 13
1.3.1 算術運算符 13
1.3.2 比較(關系)運算符 13
1.3.3 邏輯運算符 14
1.3.4 賦值運算符 14
1.3.5 運算符的優(yōu)先級 14
1.4 Python分支與循環(huán) 15
1.4.1 條件語句 15
1.4.2 循環(huán)語句 17
1.4.3 隨機數(shù)的處理 21
1.5 Python函數(shù) 22
1.5.1 函數(shù)定義 23
1.5.2 函數(shù)的參數(shù) 24
1.5.3 函數(shù)的返回值 25
1.5.4 函數(shù)作用域 26
1.5.5 匿名函數(shù) 27
1.5.6 內(nèi)置函數(shù) 28
1.5.7 函數(shù)式編程 31
1.5.8 將函數(shù)存儲在模塊中 33
1.5.9 函數(shù)文檔字符串 35
第2章 Python面向?qū)ο?36
2.1 面向?qū)ο蠡咎卣?36
2.2 類的定義 37
2.2.1 定義只包含方法的類 37
2.2.2 面向?qū)ο蟪绦蚺e例 37
2.3 self參數(shù) 37
2.3.1 給對象設置屬性 38
2.3.2 理解self參數(shù)到底是什么 38
2.4 __init__方法 38
2.5 __str__方法 39
2.6 面向過程和面向?qū)ο?40
2.7 私有屬性——封裝 43
2.8 將實例用作屬性-對象組合 43
2.9 類屬性、類方法、靜態(tài)方法 46
2.10 繼承 49
2.11 __new__方法 52
2.12 所有Python類型的父類 53
2.13 單例模式 54
2.14 參數(shù)注解 54
第3章 Python高級編程 56
3.1 Python閉包和裝飾器 56
3.1.1 閉包 56
3.1.2 裝飾器 57
3.1.3 被裝飾的函數(shù)有返回值 60
3.1.4 裝飾器帶參數(shù) 61
3.1.5 多個裝飾器裝飾同一個函數(shù) 62
3.1.6 基于類實現(xiàn)的裝飾器 63
3.2 Python可迭代對象、迭代器及生成器 64
3.2.1 可迭代對象 65
3.2.2 迭代器 68
3.2.3 生成器 71
3.3 Python內(nèi)置方法 78
3.3.1 構(gòu)造和初始化 78
3.3.2 屬性訪問控制 79
3.3.3 描述符 79
3.3.4 構(gòu)造自定義容器(Container) 83
3.3.5 上下文管理器 84
3.3.6 比較運算 87
3.3.7 __str__和__repr__方法 89
3.3.8 內(nèi)置方法之__call__ 92
第二部分 機器學習
第4章 機器學習概述 95
4.1 機器學習分類 95
4.2 常用的機器學習算法 96
4.3 機器學習的步驟 97
4.3.1 問題定義 97
4.3.2 數(shù)據(jù)采集 98
4.3.3 數(shù)據(jù)準備 98
4.3.4 數(shù)據(jù)分割 99
4.3.5 算法的選擇與訓練 99
4.3.6 算法的使用 100
第5章 機器學習?經(jīng)典算法 110
5.1 主成分分析 110
5.1.1 主成分分析簡介 110
5.1.2 使用梯度上升法實現(xiàn)主成分分析 113
5.1.3 選取數(shù)據(jù)的前k個主成分 117
5.1.4 高維數(shù)據(jù)向低維數(shù)據(jù)映射 120
5.1.5 使用主成分分析對數(shù)據(jù)進行降維可視化 125
5.2 K-Means算法 128
5.2.1 K-Means算法原理 129
5.2.2 K-Means程序?qū)嵗?131
5.2.3 MiniBatch算法 133
5.2.4 K-Means 算法分析 134
5.3 KNN算法 138
5.3.1 KNN算法的原理 138
5.3.2 KNN算法程序?qū)嵗?138
5.4 梯度下降法 140
5.4.1 一維梯度下降法 140
5.4.2 多維梯度下降法 141
第6章 機器學習?回歸算法 144
6.1 線性回歸 144
6.1.1 線性回歸簡介 144
6.1.2 簡單線性回歸的最小二乘法推導過程 145
6.1.3 衡量線性回歸的指標 150
6.1.4 多元線性回歸簡介 157
6.2 多項式回歸 161
6.2.1 多項式回歸的概念 161
6.2.2 scikit-learn中的多項式回歸和Pipeline 165
6.2.3 過擬合和欠擬合 166
6.2.4 訓練數(shù)據(jù)和測試數(shù)據(jù) 170
6.2.5 學習曲線 172
6.2.6 交叉驗證 175
6.2.7 模型正則化 179
6.2.8 嶺回歸和 LASSO 回歸 179
第三部分 神經(jīng)網(wǎng)絡
第7章 從感知機到神經(jīng)網(wǎng)絡 189
7.1 感知機 189
7.1.1 簡單邏輯電路 190
7.1.2 感知機的實現(xiàn) 191
7.1.3 感知機的局限性 193
7.1.4 多層感知機 195
7.2 神經(jīng)網(wǎng)絡 197
7.2.1 神經(jīng)網(wǎng)絡舉例 197
7.2.2 感知機知識回顧 197
7.2.3 激活函數(shù)初探 198
7.3 激活函數(shù) 199
7.3.1 階躍函數(shù) 199
7.3.2 Sigmoid函數(shù) 199
7.3.3 階躍函數(shù)的實現(xiàn) 200
7.3.4 Sigmoid函數(shù)的實現(xiàn) 201
7.3.5 比較Sigmoid函數(shù)和階躍函數(shù) 202
7.3.6 ReLU函數(shù) 203
7.4 多維數(shù)組的運算 204
7.4.1 多維數(shù)組 204
7.4.2 矩陣乘法 205
7.4.3 神經(jīng)網(wǎng)絡乘積 207
7.5 神經(jīng)網(wǎng)絡的實現(xiàn) 208
7.5.1 符號確認 209
7.5.2 各層間信號傳遞的實現(xiàn) 209
7.5.3 代碼實現(xiàn)小結(jié) 212
7.6 輸出層的設計 213
7.6.1 恒等函數(shù)和Softmax函數(shù) 213
7.6.2 實現(xiàn)Softmax函數(shù)的注意事項 214
7.6.3 Softmax函數(shù)的性質(zhì) 215
7.6.4 輸出層的神經(jīng)元數(shù)量 216
7.7 手寫數(shù)字識別 216
7.7.1 MNIST數(shù)據(jù)集 216
7.7.2 神經(jīng)網(wǎng)絡的推理處理 218
7.7.3 批處理 220
第8章 神經(jīng)網(wǎng)絡-反向傳播算法 222
8.1 計算圖 222
8.1.1 用計算圖求解 222
8.1.2 局部計算 223
8.1.3 為何用計算圖解決問題 224
8.2 鏈式法則 225
8.2.1 計算圖的反向傳播 225
8.2.2 鏈式法則的原理 225
8.2.3 鏈式法則和計算圖 226
8.3 反向傳播 227
8.3.1 加法節(jié)點的反向傳播 227
8.3.2 乘法節(jié)點的反向傳播 229
8.3.3 “蘋果”的例子 230
8.4 簡單層的實現(xiàn) 230
8.4.1 乘法層的實現(xiàn) 231
8.4.2 加法層的實現(xiàn) 232
8.5 激活函數(shù)層的實現(xiàn) 233
8.5.1 ReLU層的實現(xiàn) 233
8.5.2 Sigmoid層的實現(xiàn) 234
8.6 Affine層和Softmax 層的實現(xiàn) 237
8.6.1 Affine層的實現(xiàn) 237
8.6.2 Softmax層的實現(xiàn) 240
8.7 誤差反向傳播的實現(xiàn) 242
8.7.1 神經(jīng)網(wǎng)絡的實現(xiàn)步驟 242
8.7.2 誤差反向傳播的神經(jīng)網(wǎng)絡的實現(xiàn) 242
8.7.3 誤差反向傳播的梯度確認 245
8.7.4 誤差反向傳播的神經(jīng)網(wǎng)絡的學習 246
第9章 神經(jīng)網(wǎng)絡的訓練方法 247
9.1 參數(shù)的更新 247
9.1.1 最優(yōu)化問題的困難之處 247
9.1.2 隨機梯度下降 247
9.1.3 Momentum方法 250
9.1.4 AdaGrad方法 251
9.1.5 Adam方法 253
9.1.6 選擇參數(shù)更新方法 253
9.2 權重初始值 255
9.2.1 可以將權重初始值設為0嗎 255
9.2.2 隱藏層的激活值分布 255
9.2.3 ReLU的權重初始值 258
9.2.4 基于MNIST數(shù)據(jù)集的不同權重初始值的比較 259
9.3 BatchNormalization算法 260
9.3.1 算法原理 260
9.3.2 算法評估 261
9.4 正則化 263
9.4.1 過擬合 263
9.4.2 權重衰減 264
9.4.3 Dropout方法 265
9.5 超參數(shù)的驗證 267
9.5.1 驗證數(shù)據(jù) 267
9.5.2 超參數(shù)的最優(yōu)化 268
9.5.3 超參數(shù)最優(yōu)化的實現(xiàn) 269
第10章 卷積神經(jīng)網(wǎng)絡 271
10.1 整體結(jié)構(gòu) 271
10.2 卷積層 272
10.2.1 全連接層存在的問題 272
10.2.2 卷積運算 272
10.2.3 填充 274
10.2.4 步幅 275
10.2.5 3維數(shù)據(jù)的卷積運算 276
10.2.6 批處理 278
10.3 池化層 279
10.4 卷積層和池化層的實現(xiàn) 281
10.4.1 問題簡化 281
10.4.2 卷積層的實現(xiàn) 283
10.4.3 池化層的實現(xiàn) 284
10.5 卷積神經(jīng)網(wǎng)絡的實現(xiàn) 286
10.6 卷積神經(jīng)網(wǎng)絡的可視化 289
10.6.1 卷積層權重的可視化 289
10.6.2 基于分層結(jié)構(gòu)的信息提取 290
10.7 具有代表性的卷積神經(jīng)網(wǎng)絡 291
第11章 項目實例-表情識別 293
11.1 典型的人臉表情識別數(shù)據(jù)集fer2013 293
11.1.1 fer2013人臉表情數(shù)據(jù)集簡介 293
11.1.2 將表情圖片提取出來 294
11.2 加載fer2013數(shù)據(jù)集 296
11.3 斷點續(xù)訓 298
11.3.1 Checkpoint神經(jīng)網(wǎng)絡模型 298
11.3.2 Checkpoint神經(jīng)網(wǎng)絡模型改進 298
11.3.3 Checkpoint最佳神經(jīng)網(wǎng)絡模型 300
11.3.4 加載Checkpoint神經(jīng)網(wǎng)絡模型 301
11.4 表情識別的PyTorch實現(xiàn) 303
11.4.1 數(shù)據(jù)整理 303
11.4.2 簡單分析 304
11.4.3 數(shù)據(jù)增強處理 304
11.4.4 模型搭建 305
11.4.5 對比幾種模型的訓練過程 306