本書從模型的結構和數據基礎兩個方面解構大語言模型,以便幫助讀者理解和搭建類似ChatGPT的系統(tǒng)。在模型的結構方面,大語言模型屬于深度神經網絡,其設計核心是注意力機制,因此,本書涵蓋了多層感知器、卷積神經網絡和循環(huán)神經網絡等經典模型。在模型的數據基礎方面,本書既涉及模型訓練的工程基礎,如反向傳播,又涉及數據的使用方式,如遷移學習、強化學習,以及傳統(tǒng)的監(jiān)督學習和無監(jiān)督學習。此外,本書還闡述了如何從計量經濟學和經典機器學習模型中汲取靈感,以提高模型的穩(wěn)定性和可解釋性。本書既適用于希望深入了解大語言模型、通過人工智能技術解決實際問題的讀者,也適合作為高等院校計算機及相關專業(yè)的師生參考用書。
唐亙,數據科學家,專注于人工智能和大數據,積極參與Apache Spark、scikit-learn等開源項目,曾為華為、復旦大學等多家機構提供過百余場技術培訓。曾撰寫《精通數據科學:從線性回歸到深度學習》一書,并擔任英國最大在線出版社Packt的技術審稿人。畢業(yè)于復旦大學,獲數學和計算機雙學士學位,后求學于巴黎綜合理工學院,獲經濟學和數據科學雙碩士學位。
第1章 緒論 2
1.1 是數字鸚鵡,還是自我意識 3
1.1.1 電車難題 3
1.1.2 任務分解 4
1.2 數據基礎 5
1.3 模型結構 7
1.4 關于本書 9
第2章 數學基礎:不可或缺的知識 12
2.1 向量、矩陣和張量 13
2.1.1 標量、向量、矩陣與張量 13
2.1.2 數學記號與特殊矩陣 14
2.1.3 矩陣運算 15
2.1.4 向量夾角 18
2.1.5 矩陣的秩 19
2.1.6 高維張量運算 20
2.2 概率 21
2.2.1 定義概率:事件和概率空間 22
2.2.2 條件概率:信息的價值 23
2.2.3 隨機變量 24
2.2.4 正態(tài)分布:殊途同歸 27
2.2.5 P-value:自信的猜測 28
2.3 微積分 30
2.3.1 導數和積分 30
2.3.2 極限 32
2.3.3 鏈式法則 33
2.3.4 偏導數與梯度 34
2.3.5 極值與最值 34
2.4 本章小結 35
第3章 線性回歸:模型之母 38
3.1 一個簡單的例子 39
3.1.1 機器學習的建模方式 40
3.1.2 統(tǒng)計分析的建模方式 43
3.2 模型實現 47
3.2.1 機器學習的代碼實現 47
3.2.2 統(tǒng)計分析的代碼實現 49
3.3 模型陷阱 52
3.3.1 過擬合:模型越復雜越好嗎 53
3.3.2 假設檢驗:統(tǒng)計分析的解決方案 56
3.3.3 懲罰項:機器學習的解決方案 57
3.3.4 比較兩種方案 60
3.4 面向未來的準備 60
3.4.1 圖形表示與數學表達 61
3.4.2 模型的生命周期與持久化 62
3.5 本章小結 63
3.5.1 要點回顧 63
3.5.2 常見面試問題 64
第4章 邏輯回歸:隱藏因子 68
4.1 二元分類問題:是與否 68
4.1.1 線性回歸:為何失效 69
4.1.2 窗口效應:看不見的才是關鍵 70
4.1.3 邏輯分布 72
4.1.4 似然函數:統(tǒng)計分析的參數估計 74
4.1.5 損失函數:機器學習的參數估計 75
4.1.6 最終預測:從概率到類別 76
4.2 模型實現 76
4.2.1 初步分析數據:直觀印象 77
4.2.2 搭建模型 79
4.2.3 理解模型結果 81
4.3 評估模型效果 82
4.3.1 查準率與查全率 83
4.3.2 F-score 85
4.3.3 ROC空間 86
4.3.4 ROC曲線與AUC 88
4.3.5 AUC的概率解釋 89
4.4 非均衡數據集 90
4.4.1 準確度悖論 90
4.4.2 模型效果影響 91
4.4.3 解決方案 93
4.5 多元分類問題:超越是與否 94
4.5.1 多元邏輯回歸 94
4.5.2 One-vs.-All:從二元到多元 95
4.5.3 模型實現 96
4.6 本章小結 97
4.6.1 要點回顧 97
4.6.2 常見面試問題 98
第5章 計量經濟學的啟示:他山之石 100
5.1 定量與定性:特征的數學運算合理嗎 101
5.2 定性特征的處理 102
5.2.1 虛擬變量 102
5.2.2 定性特征轉換為定量特征 104
5.3 定量特征的處理 105
5.3.1 定量特征轉換為定性特征 106
5.3.2 基于卡方檢驗的方法 108
5.4 多重共線性:多變量的煩惱 109
5.4.1 多重共線性效應 110
5.4.2 檢測多重共線性 113
5.4.3 解決方法 114
5.4.4 虛擬變量陷阱 116
5.5 本章小結 117
5.5.1 要點回顧 117
5.5.2 常見面試問題 118
第6章 最優(yōu)化算法:參數估計 120
6.1 算法思路:模擬滾動 121
6.2 梯度下降法 122
6.2.1 算法使用的竅門 124
6.2.2 算法的局限性:局部最優(yōu)與鞍點 125
6.3 梯度下降法的代碼實現 126
6.3.1 PyTorch基礎 127
6.3.2 利用PyTorch的封裝函數 130
6.4 隨機梯度下降法:更優(yōu)化的算法 133
6.4.1 算法細節(jié) 133
6.4.2 代碼實現 134
6.4.3 進一步優(yōu)化 135
6.5 本章小結 137
6.5.1 要點回顧 137
6.5.2 常見面試問題 138
第7章 反向傳播:神經網絡的工程基礎 140
7.1 計算圖和向前傳播 141
7.1.1 什么是計算圖 141
7.1.2 代碼實現 142
7.2 鏈式法則和反向傳播 145
7.2.1 拓撲排序 146
7.2.2 代碼實現 146
7.2.3 梯度傳播過程 148
7.3 參數估計的全流程 151
7.3.1 隨機梯度下降法回顧 151
7.3.2 計算圖膨脹 152
7.4 動態(tài)優(yōu)化 155
7.4.1 梯度累積 155
7.4.2 參數凍結 158
7.4.3 隨機失活 159
7.5 真實世界:針對大規(guī)模模型的優(yōu)化技巧 162
7.5.1 GPU計算 162
7.5.2 混合精度訓練 164
7.5.3 梯度檢查點 166
7.5.4 分布式計算 167
7.6 本章小結 170
7.6.1 要點回顧 170
7.6.2 常見面試問題 171
第8章 多層感知器:神經網絡的“創(chuàng)世記” 174
8.1 感知器模型 175
8.1.1 神經元的數字孿生 175
8.1.2 圖示與計算圖 177
8.1.3 Sigmoid感知器與邏輯回歸 178
8.1.4 Softmax函數 179
8.2 從神經網絡的視角重新理解邏輯回歸 181
8.2.1 回顧窗口效應 182
8.2.2 代碼實現 183
8.2.3 損失函數為模型注入靈魂 185
8.2.4 神經網絡的建模文化:搭積木 186
8.3 多層感知器 187
8.3.1 圖形表示 187
8.3.2 數學基礎 189
8.3.3 令人驚訝的通用性 192
8.3.4 代碼實現 193
8.3.5 模型的聯結主義 195
8.4 訓練優(yōu)化的關鍵:激活函數 197
8.4.1 壞死的神經細胞 198
8.4.2 數學基礎 200
8.4.3 監(jiān)控模型訓練 201
8.4.4 不穩(wěn)定的梯度 205
8.4.5 激活函數的改進 206
8.5 從第一步開始優(yōu)化訓練 208
8.5.1 模型損失的預估 208
8.5.2 參數初始化的初步優(yōu)化 209
8.5.3 參數初始化的進一步優(yōu)化 212
8.5.4 歸一化層 214
8.6 本章小結 218
8.6.1 要點回顧 218
8.6.2 常見面試問題 219
第9章 卷積神經網絡:深度學習的“出埃及記” 222
9.1 利用多層感知器識別數字 223
9.1.1 視覺對象的數字化 223
9.1.2 搭建模型 224
9.1.3 代碼實現 226
9.1.4 防止過擬合之隨機失活 229
9.1.5 防止過擬合之懲罰項 231
9.2 卷積神經網絡 233
9.2.1 神經元的組織方式 234
9.2.2 卷積層的網絡結構 235
9.2.3 卷積層的細節(jié)處理與代碼實現 237
9.2.4 池化層 239
9.2.5 完整結構與實現 240
9.2.6 超越圖像識別 242
9.3 殘差網絡 243
9.3.1 殘差連接 243
9.3.2 實現要點和小竅門 245
9.3.3 代碼實現 247
9.4 本章小結 247
9.4.1 要點回顧 247
9.4.2 常見面試問題 248
第10章 循環(huán)神經網絡:嘗試理解人類語言 250
10.1 自然語言處理的基本要素 251
10.1.1 語言數字化 252
10.1.2 分詞器的語言基礎 253
10.1.3 英文分詞器 254
10.1.4 中文分詞的挑戰(zhàn) 256
10.1.5 學習框架:遷移學習 258
10.2 利用多層感知器學習語言 260
10.2.1 數據準備 260
10.2.2 文本嵌入 263
10.2.3 代碼實現 265
10.2.4 普通神經網絡的缺陷 266
10.3 循環(huán)神經網絡 267
10.3.1 圖示與結構 268
10.3.2 模型的關鍵:隱藏狀態(tài) 269
10.3.3 利用循環(huán)神經網絡學習語言 271
10.3.4 模型訓練與文本生成 272
10.3.5 模型的學習原理:通過時間的反向傳播 274
10.4 深度循環(huán)神經網絡 275
10.4.1 更優(yōu)雅的代碼實現 275
10.4.2 批量序列數據的處理 277
10.4.3 從單層走向更復雜的結構 278
10.4.4 利用深度循環(huán)神經網絡學習語言 280
10.5 長短期記憶網絡 281
10.5.1 短期記憶 282
10.5.2 模型結構 284
10.5.3 代碼實現 285
10.5.4 利用長短期記憶網絡學習語言 287
10.6 本章小結 290
10.6.1 要點回顧 290
10.6.2 常見面試問題 291
第11章 大語言模型:是通用人工智能的開始嗎 294
11.1 注意力機制 295
11.1.1 設計初衷 296
11.1.2 改進后的注意力機制 297
11.1.3 數學細節(jié)與實現技巧 299
11.2 從零開始實現GPT-2 300
11.2.1 模型結構 301
11.2.2 多頭單向注意力 303
11.2.3 解碼塊 304
11.2.4 GPT-2的完整結構與重現 305
11.2.5 Python語言學習任務 307
11.3 從大語言模型到智能助手 308
11.3.1 大語言模型的現狀 308
11.3.2 開源模型 310
11.3.3 從GPT到ChatGPT 311
11.3.4 提示工程 313
11.3.5 檢索增強生成 314
11.4 模型微調 316
11.4.1 模型微調的4種模式 317
11.4.2 高效調參概述 318
11.4.3 高效調參之增加模型組件 319
11.4.4 高效調參之LoRA 320
11.5 監(jiān)督微調和評分建模 323
11.5.1 監(jiān)督微調初體驗 323
11.5.2 更優(yōu)化的監(jiān)督微調 326
11.5.3 評分建模 327
11.5.4 如果重新構建ChatGPT 330
11.6 超越技術 331
11.6.1 智能的哲學基礎 331
11.6.2 血汗工廠 333
11.6.3 碳足跡 334
11.7 本章小結 335
11.7.1 要點回顧 335
11.7.2 常見面試問題 336
第12章 強化學習:在動態(tài)交互中進化 338
12.1 大語言模型的持續(xù)優(yōu)化 339
12.1.1 最大化評分:直觀但錯誤的模型 339
12.1.2 為什么行不通:不可微的運算 341
12.1.3 可行的建模方式:調整損失函數 343
12.2 強化學習簡介 345
12.2.1 核心概念 345
12.2.2 目標定義 346
12.2.3 兩種解決方法 348
12.3 值函數學習 349
12.3.1 MC學習 350
12.3.2 貝爾曼方程與TD學習 352
12.3.3 利用神經網絡進行學習 354
12.3.4 n步TD學習與優(yōu)勢函數 356
12.3.5 TD Lambda學習與GAE 357
12.4 策略學習 359
12.4.1 策略梯度定理 360
12.4.2 Reinforce算法 361
12.4.3 基準線算法 362
12.4.4 A2C算法 364
12.5 利用PPO優(yōu)化大語言模型 365
12.5.1 損失函數與參數更新 366
12.5.2 從A2C到PPO 367
12.5.3 微調游戲獎勵 369
12.5.4 代碼實現 371
12.6 本章小結 375
12.6.1 要點回顧 375
12.6.2 常見面試問題 376
第13章 其他經典模型:擴展視野 380
13.1 決策樹 381
13.1.1 決策規(guī)則 381
13.1.2 評判標準 383
13.1.3 決策樹的預測與模型的聯結 384
13.1.4 剪枝 386
13.2 樹的集成 388
13.2.1 隨機森林 389
13.2.2 梯度提升決策樹 390
13.3 隱馬爾可夫模型 393
13.3.1 一個簡單的例子 393
13.3.2 馬爾可夫鏈 394
13.3.3 模型架構 395
13.3.4 股票市場的應用 397
13.4 聚類與降維 400
13.4.1 經典聚類模型K-Means 401
13.4.2 如何選擇聚類個數 402
13.4.3 經典降維模型主成分分析 404
13.5 奇異值分解 407
13.5.1 數學定義 407
13.5.2 截斷奇異值分解 408
13.5.3 潛在語義分析 409
13.5.4 大型推薦系統(tǒng) 410
13.6 本章小結 413
13.6.1 要點回顧 413
13.6.2 常見面試問題 413