深入淺出大模型:從深度學習到PyTorch實現
張朝明、龔得權、何文淦
- 出版商: 清華大學
- 出版日期: 2026-07-01
- 售價: $714
- 語言: 簡體中文
- ISBN: 7302721092
- ISBN-13: 9787302721093
-
相關分類:
DeepLearning
下單後立即進貨 (約4週~6週)
商品描述
"《深入淺出大模型:從深度學習到PyTorch實現》用淺顯易懂的語言,系統地介紹大模型的核心基礎與典型應用。《深入淺出大模型:從深度學習到PyTorch實現》共16章。第1~3章從大模型的基本概念入手,詳細講述其背後的神經網絡原理,並介紹PyTorch框架。第4~8章深入剖析構建大模型的各類核心架構,包括多層感知機、卷積神經網絡、循環神經網絡、Transformer以及生成對抗網絡,闡述不同基礎神經網絡的使用場景和數據處理方案。第9~14章介紹訓練加速、性能評估、正則化、模型壓縮、分布式並行計算、遷移微調以及可視化分析等。第15、16章通過“字體擴展生成”和“DeepSeek+RAG構建企業知識問答系統”兩個典型的綜合案例,展示如何利用開源模型解決實際業務問題。 《深入淺出大模型:從深度學習到PyTorch實現》采用知識點+示例代碼演示的方式編寫,幫助讀者加深對大模型的理解和邊學邊練。本書既適合初次接觸大模型技術的初學者、計算機或人工智能專業的學生,也適合轉型大模型應用的軟件開發人員、AI產品經理以及大模型技術愛好者。"
作者簡介
"張朝明 ,曾就職於魅族科技、金山軟件等多家知名互聯網公司,擔任架構師、技術總監等職,擁有20余年軟件開發與系統架構經驗。深耕Golang、Java、Python等編程語言,並在數據庫及大數據領域具備深厚技術積累,目前專註於AI及大數據平臺研發。著有《深入淺出Go語言核心編程》、《XML開發典型應用:數據標記、處理、共享與分析》、《21天學通Oracle》、《Oracle入門很簡單》等技術圖書。龔得權,資深人工智能技術專家,擁有二十年全棧軟件開發及系統架構設計經驗。曾任職於戴爾集團全球研發中心高級開發工程師,主導企業級分布式系統架構設計與核心模塊開發。現任某國家級人工智能研究院工程師,專註於大模型基礎理論研究與工程實踐。主導開發了多個億級參數規模的行業大模型,在模型壓縮、多模態對齊、分布式訓練加速等領域取得突破性進展。深耕機器學習算法工程化落地,擅長將復雜理論轉化為可擴展的工業級解決方案。在Transformer架構優化、註意力機制創新等方面擁有多項原創研究成果。 何文淦,中山大學碩士,8年人工智能算法研發經驗,現任某上市集團AI技術負責人。專註於通用模型與醫療專用模型開發,主導算法設計、工程優化及工業級部署全流程,研發的醫療影像分析系統已在多家醫療機構應用。發表SCI論文、發明專利等學術成果10余項,形成完整算法開發-部署技術體系。"
目錄大綱
目 錄
第 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



