深入淺出大模型:從深度學習到PyTorch實現

張朝明、龔得權、何文淦

  • 出版商: 清華大學
  • 出版日期: 2026-07-01
  • 售價: $714
  • 語言: 簡體中文
  • ISBN: 7302721092
  • ISBN-13: 9787302721093
  • 相關分類: DeepLearning
  • 下單後立即進貨 (約4週~6週)

  • 深入淺出大模型:從深度學習到PyTorch實現-preview-1
  • 深入淺出大模型:從深度學習到PyTorch實現-preview-2
  • 深入淺出大模型:從深度學習到PyTorch實現-preview-3
深入淺出大模型:從深度學習到PyTorch實現-preview-1

商品描述

"《深入淺出大模型:從深度學習到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