深入淺出大模型:從深度學習到PyTorch實現
張朝明、龔得權、何文淦
- 出版商: 清華大學
- 出版日期: 2026-07-01
- 售價: $714
- 語言: 簡體中文
- ISBN: 7302721092
- ISBN-13: 9787302721093
-
相關分類:
DeepLearning
下單後立即進貨 (約4週~6週)
商品描述
作者簡介
目錄大綱
目 錄
第 1 章 大模型基礎——概念解析 1
1.1 神經網絡與大模型 1
1.1.1 模型、神經網絡和大模型的關系 1
1.1.2 神經網絡和人腦神經系統的比較 2
1.2 從深度學習到大模型 3
1.2.1 從傳統機器學習到深度學習 3
1.2.2 深度學習中的“深度”代表了什麼 4
1.2.3 深度學習學到了什麼 5
1.2.4 為什麼是GPU 6
1.3 本書概念和術語約定 7
1.4 本章小結 8
第 2 章 大模型是如何工作的——神經網絡基礎 9
2.1 神經網絡簡介 9
2.1.1 神經網絡的基本結構 9
2.1.2 網絡層代表了什麼 10
2.1.3 神經元代表了什麼 10
2.1.4 神經元間的連接代表了什麼 11
2.1.5 神經網絡與傳統應用程序的區別 11
2.2 神經網絡的推理過程 11
2.2.1 輸入數據規範化 12
2.2.2 隱藏層數據計算 12
2.2.3 輸出層的數據處理 14
2.2.4 矩陣運算:為什麼有兩種不同的公式 14
2.3 神經網絡的訓練過程 16
2.3.1 獲得數據集 16
2.3.2 初始化參數 17
2.3.3 利用損失函數修正參數 17
2.3.4 最簡單的損失函數與解方程的對比 19
2.3.5 從梯度下降的角度理解學習率的必要性 20
2.4 從前向傳播到反向傳播 21
2.4.1 前向傳播與推理 21
2.4.2 導數與梯度 21
2.4.3 反向傳播、自動微分與鏈式法則 21
2.5 神經網絡的驗證 22
2.5.1 泛化、欠擬合和過擬合 23
2.5.2 如何處理欠擬合和過擬合 24
2.5.3 欠擬合的模型還需要驗證嗎 24
2.6 梯度計算和參數更新過程 25
2.6.1 標量參數的梯度計算和參數更新 25
2.6.2 矩陣參數的梯度計算和參數更新 27
2.6.3 梯度計算過程中的矩陣轉置 30
2.7 本章小結 34
第 3 章 利用PyTorch進行模型的定義、訓練與推理 35
3.1 安裝PyTorch 35
3.1.1 Windows下安裝PyTorch 35
3.1.2 macOS下安裝PyTorch 36
3.2 利用PyTorch操作張量 37
3.2.1 張量與數組 37
3.2.2 基於已有數據創建張量 37
3.2.3 基於NumPy數組創建張量 38
3.2.4 利用隨機值初始化張量 39
3.2.5 利用特定值初始化張量 40
3.2.6 張量屬性 40
3.3 利用PyTorch準備數據集 41
3.3.1 優秀的數據訓練集 41
3.3.2 實例:加載數據集 42
3.3.3 數據集規範化 43
3.4 利用PyTorch定義模型 43
3.4.1 利用PyTorch定義一個簡單模型 43
3.4.2 為什麼需要激活函數 44
3.4.3 模型結構是如何設計的 45
3.5 利用PyTorch訓練模型 46
3.5.1 為什麼前向傳播也會參與自動微分 46
3.5.2 為什麼需要計算圖 46
3.5.3 實例:用PyTorch實現模型訓練 47
3.5.4 PyTorch是如何實現前向傳播的 49
3.5.5 PyTorch是如何實現反向傳播的 50
3.6 利用PyTorch保存和加載模型 52
3.6.1 實例:保存和加載完整模型 52
3.6.2 保存和加載模型狀態 53
3.6.3 保存和加載checkpoint 54
3.7 實例:利用PyTorch進行模型推理 55
3.8 本章小結 56
第 4 章 大模型的基礎組件——多層感知機 57
4.1 為什麼需要多層感知機 57
4.2 多層感知機常用的激活函數 58
4.2.1 適合概率計算的激活函數——Sigmoid 58
4.2.2 為什麼Sigmoid用於輸出層不會導致梯度消失 59
4.2.3 適合對稱輸出的激活函數——Tanh 61
4.2.4 適合隱藏層的激活函數——ReLU 62
4.2.5 為什麼ReLU能有效避免梯度消失 63
4.2.6 ReLU函數的改進版——Leaky ReLU 63
4.2.7 為什麼Leaky ReLU的系數通常設計得很小 65
4.3 多層感知機解決回歸問題 65
4.3.1 回歸問題的本質 65
4.3.2 為什麼多層感知機可以解決回歸問題 66
4.3.3 回歸問題的損失函數——MSE 67
4.3.4 回歸問題的損失函數——MAE 67
4.3.5 深入理解MSE和MAE的本質區別 68
4.3.6 實例:典型回歸問題——房價預測 69
4.4 多層感知機解決分類問題 74
4.4.1 分類問題的本質 74
4.4.2 為什麼二分類和多分類問題需要分開處理 74
4.4.3 如何理解二元與多元交叉熵損失函數的統一 75
4.4.4 實例:用PyTorch解決二分類問題 77
4.4.5 PyTorch在二分類和多分類問題上的API設計 81
4.5 為何多層感知機不能解決所有問題 82
4.6 本章小結 83
第 5 章 大模型捕獲數據的顯著特征——卷積神經網絡 84
5.1 為什麼需要卷積神經網絡 84
5.2 卷積運算 85
5.2.1 卷積運算提取的是二維空間信息 85
5.2.2 特征圖的尺寸計算 86
5.2.3 為什麼需要填充 87
5.2.4 卷積核的形狀誤區 88
5.3 卷積層結構 88
5.3.1 從通道開始說起 88
5.3.2 從卷積核到神經元 89
5.3.3 從局部視野到全局視野 90
5.3.4 同一卷積層的卷積核尺寸可以不同嗎 91
5.3.5 卷積操作如何增加網絡的魯棒性 91
5.4 池化層 92
5.4.1 為什麼需要池化層 93
5.4.2 最大池化與平均池化 93
5.4.3 池化層為什麼可以進一步加強魯棒性 95
5.4.4 池化層的局限性 96
5.5 特征圖的可視化 97
5.5.1 將圖像信息轉換為輸入張量 97
5.5.2 定義一個簡單的卷積神經網絡模型 98
5.5.3 展示卷積層輸出 99
5.6 實例:經典卷積網絡LeNet-5的使用 101
5.7 實例:用PyTorch實現經典卷積網絡AlexNet 105
5.8 經典卷積網絡——GoogLeNet/Inception 108
5.8.1 GoogLeNet的設計理念 108
5.8.2 理解GoogLeNet 109
5.9 殘差網絡 113
5.9.1 什麼是殘差塊 113
5.9.2 如何理解殘差塊的設計理念 114
5.9.3 輸入數據的修正會影響殘差塊的效果嗎 115
5.9.4 恒等映射和跳躍連接 116
5.9.5 殘差塊設計在大模型中具有普適性嗎 116
5.10 本章小結 119
第 6 章 大模型時間序列的奠基者——循環神經網絡 120
6.1 為什麼需要循環神經網絡 120
6.2 基礎循環神經網絡 121
6.2.1 如何理解“循環”二字 121
6.2.2 時間步中的數據結構 124
6.2.3 調試模式下查看RNN的執行過程 127
6.2.4 理解時間步序列與隱藏狀態的重置 132
6.2.5 理解多層RNN的執行過程 133
6.2.6 為什麼基礎RNN模型只能支持短期記憶 134
6.3 長短期記憶——LSTM 135
6.3.1 LSTM的設計原理 136
6.3.2 為什麼LSTM能支持長期記憶 138
6.3.3 LSTM的理解誤區 139
6.3.4 實例:使用LSTM來測試單詞 139
6.4 LSTM的簡化版——GRU 145
6.4.1 GRU的設計原理 145
6.4.2 比較GRU與LSTM 147
6.4.3 實例:訓練GRU模型 147
6.5 本章小結 148
第 7 章 大模型捕獲序列的全局關聯——Transformer架構 149
7.1 Transformer架構簡介 149
7.2 理解自註意力機制 150
7.2.1 自註意力機制的計算過程 150
7.2.2 簡單線性變換為何無法替代自註意力機制 153
7.2.3 如何理解查詢矩陣 154
7.2.4 如何理解鍵矩陣 155
7.2.5 如何理解值矩陣 156
7.2.6 關於查詢、鍵和值的隱喻 156
7.2.7 自我關註是合理的嗎 157
7.2.8 如何理解多頭註意力機制 158
7.3 編碼器 159
7.3.1 文本預處理 159
7.3.2 位置編碼 161
7.3.3 編碼器層 164
7.3.4 搭建編碼器 167
7.3.5 編碼器是自註意力機制的體現 168
7.4 解碼器 169
7.4.1 解碼器的輸入 169
7.4.2 解碼器層 170
7.4.3 搭建解碼器 172
7.5 實例:利用編碼器和解碼器搭建Transformer模型 175
7.5.1 搭建Transformer模型 175
7.5.2 Transformer模型訓練過程 176
7.5.3 Transformer模型推理過程 178
7.5.4 如何從訓練和推理兩個角度看待解碼器的掩碼操作 179
7.6 雙向Transformer模型 180
7.6.1 為什麼需要雙向Transformer模型 181
7.6.2 實例:利用MLM實現單詞補全 181
7.7 本章小結 190
第 8 章 大模型的博弈藝術——生成對抗網絡 191
8.1 生成對抗網絡的設計思想 191
8.1.1 為什麼需要生成對抗網絡 191
8.1.2 一個奇怪的名字——“隨機噪聲” 192
8.1.3 生成器和判別器的對抗過程是怎樣的 192
8.1.4 生成對抗網絡的輸入為什麼是隨機的 193
8.1.5 生成對抗網絡的目標是生成器還是判別器 193
8.2 實例:利用GAN實現臨摹場景 194
8.2.1 準備數據集 194
8.2.2 定義生成器 195
8.2.3 定義判別器 196
8.2.4 對抗訓練 197
8.2.5 驗證生成器效果 200
8.2.6 CNN中的標準化和GAN中的歸一化 201
8.3 利用cGAN實現定向生成 202
8.3.1 cGAN與GAN的區別 202
8.3.2 實例:利用cGAN生成特定手寫數字 203
8.4 本章小結 208
第 9 章 大模型的訓練流程——加速、終止與性能評估 209
9.1 利用算法優化加快訓練速度 209
9.1.1 隨機梯度下降及其局限性 209
9.1.2 利用動量法加速梯度下降 210
9.1.3 利用Adagrad算法自適應學習率 213
9.1.4 利用RMSprop解決學習率急速下降的問題 218
9.1.5 利用Adam算法兼顧動量和自適應學習率 221
9.2 何時結束訓練 224
9.2.1 實例:利用早停法結束模型訓練 224
9.2.2 實例:利用滑動窗口結束模型訓練 227
9.2.3 實例:利用梯度監控法結束模型訓練 228
9.2.4 實例:利用時長限制法結束模型訓練 230
9.3 如何評估模型性能 231
9.3.1 最基礎的指標——準確率 231
9.3.2 數據分類不均衡時的指標——精確率、召回率和F1分數 232
9.3.3 均方誤差 233
9.3.4 文本生成評估指標BLEU 234
9.4 本章小結 238
第 10 章 大模型的穩健訓練——從正則化到歸一化 239
10.1 模型參數的稀疏化——L1正則化策略 239
10.1.1 L1正則化的原理 239
10.1.2 為什麼L1正則化可以構建稀疏參數 240
10.1.3 實例:在PyTorch中使用L1正則化 241
10.1.4 L1正則化的適用場景 243
10.2 模型參數的收縮與平滑處理——L2正則化 244
10.2.1 L2正則化的原理 244
10.2.2 為什麼L2正則化可以構建平滑參數 244
10.2.3 實例:在PyTorch中使用L2正則化 245
10.2.4 L2正則化的適用場景 246
10.3 輸出數據的隨機屏蔽——Dropout 247
10.3.1 Dropout機制的原理 247
10.3.2 實例:在PyTorch中使用Dropout 248
10.3.3 Dropout為什麼往往與ReLU結合使用 249
10.3.4 理解Dropout的隨機丟棄和補償機制 250
10.3.5 Dropout的適用場景 251
10.4 輸入數據的標準化處理——批量歸一化 252
10.4.1 為什麼需要批量歸一化 252
10.4.2 批量歸一化的過程 252
10.4.3 實例:利用PyTorch實現歸一化處理 254
10.4.4 歸一化後的線性轉換會影響數據分布的穩定性嗎 257
10.5 本章小結 257
第 11 章 大模型的瘦身策略——從內存優化到模型壓縮 258
11.1 基於GPU和CPU的推理速度測試 258
11.2 利用梯度累積實現大批次訓練 261
11.2.1 如何使用梯度累積 261
11.2.2 為什麼梯度累積方案是可行的 263
11.2.3 是否梯度累積步數越大越好 264
11.3 利用剪枝實現模型壓縮 265
11.3.1 非結構化剪枝與實例 265
11.3.2 結構化剪枝與實例 268
11.3.3 PyTorch中的非破壞性剪枝 271
11.4 量化 275
11.4.1 對稱量化和非對稱量化 275
11.4.2 靜態量化 275
11.4.3 動態量化 280
11.4.4 量化感知訓練 282
11.4.5 大模型量化實例 285
11.5 低秩分解 287
11.5.1 低秩分解的來源 287
11.5.2 低秩分解的原理 288
11.5.3 實例:利用PyTorch在推理階段實現低秩分解 289
11.5.4 實例:利用PyTorch在訓練階段實現低秩分解 292
11.6 模型蒸餾 294
11.6.1 從模型知識到模型蒸餾 294
11.6.2 實例:模型蒸餾的實現 295
11.6.3 模型蒸餾中的損失函數 300
11.7 本章小結 302
第 12 章 大模型的並行化計算——從單節點到分布式 303
12.1 數據並行化 303
12.1.1 如何實現單機多GPU下的數據並行化 303
12.1.2 如何實現多機多GPU下的數據並行化 307
12.1.3 多機多GPU下數據並行原理 311
12.2 模型並行化 314
12.2.1 模型拆分到多個設備 314
12.2.2 實例:利用CUDA流實現模型並行 315
12.3 混合並行 317
12.4 實例:利用FSDP實現模型並行訓練 319
12.5 本章小結 324
第 13 章 大模型的遷移使用——模型微調 325
13.1 理解預訓練模型 325
13.1.1 Hugging Face站點 325
13.1.2 下載預訓練模型 326
13.1.3 查看預訓練模型的文件結構 326
13.1.4 從無監督學習到預訓練模型 328
13.1.5 從預訓練模型到模型微調 329
13.2 全量參數微調 330
13.2.1 什麼是全量參數微調 330
13.2.2 實例:利用模型微調實現情感分析任務 331
13.3 部分參數微調 335
13.3.1 部分參數微調的適用場景 335
13.3.2 如何確定微調哪些層 335
13.3.3 部分參數微調實例 336
13.4 自定義新增層微調 340
13.4.1 從BertForSequenceClassification到BertModel 340
13.4.2 自定義新增層微調實例 341
13.4.3 自定義新增層中的參數優化策略 343
13.5 參數高效微調 344
13.5.1 使用Adapter增加模型的彈性和適應力 344
13.5.2 利用LoRA變相實現參數微調 346
13.6 引導大模型任務——提示詞優化 352
13.6.1 提示詞優化的核心思想 352
13.6.2 實例:提示詞優化的實現 353
13.6.3 為什麼提示詞優化是可行的 359
13.7 本章小結 360
第 14 章 大模型的直觀分析——模型可視化 361
14.1 模型可視化工具 361
14.2 WandB的安裝和準備 362
14.2.1 註冊WandB賬號 362
14.2.2 安裝和登錄WandB 363
14.2.3 測試WandB庫 364
14.3 實例:利用WandB監控訓練過程 366
14.4 實例:利用WandB監控訓練狀態 370
14.5 實例:利用WandB搜索最佳超參數 373
14.6 本章小結 378
第 15 章 典型應用(一)——字體擴展生成 379
15.1 從少量字形文件生成整個字體庫 379
15.2 FUNIT模型簡介 380
15.3 FUNIT模型文件結構解析 380
15.4 數據準備 383
15.4.1 提取圖片文件 383
15.4.2 生成訓練文件列表和測試文件列表 387
15.5 模型訓練 388
15.6 生成字體圖片 389
15.7 本章小結 393
第 16 章 典型應用(二)——基於DeepSeek+RAG構建企業知識問答系統 394
16.1 為什麼選擇DeepSeek+RAG 394
16.1.1 閉源模型與私有化部署 394
16.1.2 DeepSeek+RAG的優勢 395
16.2 環境準備及模型下載 396
16.3 構建企業知識問答系統實戰 397
16.3.1 利用知識庫構建向量數據庫 398
16.3.2 檢索增強生成(RAG)的實現過程 401
16.4 本章小結 404



