生成式人工智能 (基於 PyTorch 實現)

劉煥良(Mark Liu)

  • 生成式人工智能 (基於 PyTorch 實現)-preview-1
  • 生成式人工智能 (基於 PyTorch 實現)-preview-2
生成式人工智能 (基於 PyTorch 實現)-preview-1

相關主題

商品描述

本書通過從零開始構建生成式人工智能模型來探討生成式人工智能的底層機制,並使用PyTorch對生成式人工智能模型進行編程的實踐指導,以期讓讀者在瞭解生成對抗網絡(GAN)、變分自編碼器(VAE)、循環神經網絡(RNN)、Transformer、擴散模型、大語言模型(LLM)和LangChain等技術原理之後,能構建可生成形狀、數字、圖像、文本和音樂的生成式人工智能

模型。

本書適合各種商業領域中的人工智能技術工程師和數據科學家在實踐生成式人工智能模型時隨手查閱,也適合生成式人工智能的初學者作為入門指南。

作者簡介

劉煥良(Mark Liu)博士是美國肯塔基大學金融學終身副教授和金融學碩士項目(創始)負責人。他著有兩本書:Make Python Talk(No Starch Press,2021) 和 Machine Learning, Animated(CRC Press,2023)。

他擁有 20 多年的編程經驗。他獲得美國波士頓學院金融學博士學 位, 曾 在 Journal of Financial Economics、Journal of Financial and Quantitative Analysis 和 Journal of Corporate Finance 等金融學頂級期刊上發表過研究論文。

目錄大綱

第 一部分 生成式人工智能簡介

第 1章 生成式人工智能和PyTorch 2

1.1 生成式人工智能和PyTorch簡介 3

1.1.1 生成式人工智能 3

1.1.2 Python編程語言 5

1.1.3 使用PyTorch作為人工智能框架 5

1.2 生成對抗網絡(GAN) 6

1.2.1 GAN概述 6

1.2.2 示例:生成動漫人臉 7

1.2.3 為什麽要關註GAN 9

1.3 Transformer 9

1.3.1 註意力機制簡介 10

1.3.2 Transformer架構簡介 10

1.3.3 多模態Transformer和預訓練LLM 11

1.4 為什麽要從零開始構建生成模型 13

1.5 小結 14

第 2章 使用PyTorch進行深度學習 15

2.1 PyTorch中的數據類型 16

2.1.1 創建PyTorch張量 16

2.1.2 對PyTorch張量進行索引和切片 18

2.1.3 PyTorch張量的形狀 19

2.1.4 PyTorch張量的數學運算 20

2.2 使用PyTorch完成端到端深度學習

項目 21

2.2.1 PyTorch深度學習:高層次概述 21

2.2.2 數據預處理 22

2.3 二分類 25

2.3.1 創建批次 25

2.3.2 構建並訓練二分類模型 25

2.3.3 測試二分類模型 27

2.4 多類別分類 28

2.4.1 驗證集和早停止 28

2.4.2 構建並訓練多類別分類模型 29

2.5 小結 32

第3章 生成對抗網絡:生成形狀和數字 33

3.1 訓練GAN的步驟 34

3.2 準備訓練數據 35

3.2.1 形成指數增長曲線的訓練數據集 36

3.2.2 準備訓練數據集 37

3.3 構建GAN 37

3.3.1 判別器網絡 37

3.3.2 生成器網絡 38

3.3.3 損失函數、優化器和早停止 39

3.4 訓練GAN並使用GAN生成形狀 40

3.4.1 GAN的訓練 40

3.4.2 保存並使用訓練好的生成器 44

3.5 用模式生成數字 45

3.5.1 獨熱變量 45

3.5.2 使用GAN生成具備模式的數字 47

3.5.3 訓練GAN生成具備模式的數字 48

3.5.4 保存並使用訓練好的模型 49

3.6 小結 50

 

第二部分 圖像生成

第4章 使用GAN生成圖像 52

4.1 使用GAN生成服裝灰度圖像 53

4.1.1 訓練樣本和判別器 53

4.1.2 生成灰度圖像的生成器 54

4.1.3 訓練GAN生成服裝圖像 55

4.2 捲積層 58

4.2.1 捲積運算的工作原理 59

4.2.2 步幅和填充對捲積運算的影響 61

4.3 轉置捲積和批量歸一化 62

4.3.1 轉置捲積層的工作原理 62

4.3.2 批量歸一化 64

4.4 彩色動漫人臉圖像 65

4.4.1 下載動漫人臉圖像 65

4.4.2 PyTorch中的通道前置彩色圖像 66

4.5 深度捲積GAN(DCGAN) 67

4.5.1 構建DCGAN 68

4.5.2 訓練並使用DCGAN 70

4.6 小結 72

第5章 在生成圖像中選擇特徵 73

5.1 眼鏡數據集 74

5.1.1 下載眼鏡數據集 74

5.1.2 可視化眼鏡數據集中的圖像 75

5.2 cGAN和沃瑟斯坦距離 76

5.2.1 帶有梯度懲罰的WGAN 76

5.2.2 cGAN 77

5.3 構建cGAN 78

5.3.1 cGAN中的批評者 78

5.3.2 cGAN中的生成器 79

5.3.3 權重初始化和梯度懲罰函數 80

5.4 訓練cGAN 82

5.4.1 為輸入添加標簽 82

5.4.2 訓練模型 83

5.5 在生成圖像中選擇特徵的方法 85

5.5.1 選擇生成戴眼鏡或不戴眼鏡的人臉

圖像 86

5.5.2 潛空間中的向量運算 88

5.5.3 同時選擇兩個特徵 89

5.6 小結 92

第6章 CycleGAN:將金發轉換為

黑發 93

6.1 CycleGAN和循環一致性損失 94

6.1.1 CycleGAN 94

6.1.2 循環一致性損失 95

6.2 名人人臉數據集 96

6.2.1 下載名人人臉數據集 96

6.2.2 處理黑發圖像和金發圖像的數據 97

6.3 構建CycleGAN模型 99

6.3.1 創建兩個判別器 99

6.3.2 創建兩個生成器 100

6.4 用CycleGAN在黑發和金發之間

轉換 103

6.4.1 訓練CycleGAN在黑發和金發之間

轉換 103

6.4.2 黑發圖像和金發圖像的往返轉換 105

6.5 小結 107

第7章 利用變分自編碼器生成圖像 108

7.1 自編碼器概述 110

7.1.1 自編碼器 110

7.1.2 構建並訓練自編碼器的步驟 110

7.2 構建並訓練能生成數字的

自編碼器 111

7.2.1 收集手寫數字 111

7.2.2 構建和訓練自編碼器 112

7.2.3 保存並使用訓練好的自編碼器 114

7.3 變分自編碼器 115

7.3.1 AE與VAE的區別 115

7.3.2 訓練可生成人臉圖像的VAE所需的藍圖 116

7.4 生成人臉圖像的變分自編碼器 117

7.4.1 構建變分自編碼器 117

7.4.2 訓練變分自編碼器 119

7.4.3 使用訓練好的VAE生成圖像 120

7.4.4 使用訓練好的VAE進行編碼運算 122

7.5 小結 126

 

第三部分 自然語言處理和Transformer

第8章 利用循環神經網絡生成文本 128

8.1 循環神經網絡(RNN)簡介 129

8.1.1 文本生成過程中的挑戰 130

8.1.2 循環神經網絡的工作原理 130

8.1.3 訓練長短期記憶(LSTM)模型的步驟 131

8.2 自然語言處理(NLP)的基本原理 132

8.2.1 詞元化方法 133

8.2.2 詞嵌入方法 134

8.3 準備數據以訓練LSTM模型 135

8.3.1 下載並清理文本 135

8.3.2 創建多批訓練數據 137

8.4 構建並訓練LSTM模型 137

8.4.1 構建LSTM模型 138

8.4.2 訓練LSTM模型 139

8.5 使用訓練好的LSTM模型生成文本 140

8.5.1 通過預測下一個詞元來生成文本 140

8.5.2 文本生成中的溫度和top-K採樣 142

8.6 小結 146

第9章 實現註意力機制和Transformer 147

9.1 註意力機制和Transformer 148

9.1.1 註意力機制 148

9.1.2 Transformer架構 151

9.1.3 Transformer的類型 154

9.2 構建編碼器 154

9.2.1 實現註意力機制 155

9.2.2 創建編碼器層 157

9.3 構建編碼器-解碼器Transformer 158

9.3.1 創建解碼器層 158

9.3.2 創建編碼器-解碼器Transformer 160

9.4 將所有部件組合在一起 161

9.4.1 定義生成器 161

9.4.2 創建能進行兩種語言對譯的模型 162

9.5 小結 163

第 10章 訓練能將英語翻譯成法語的Transformer 164

10.1 子詞詞元化 164

10.1.1 英語句子和法語句子的詞元化

處理 165

10.1.2 序列填充和批次創建 169

10.2 詞嵌入和位置編碼 171

10.2.1 詞嵌入 172

10.2.2 位置編碼 172

10.3 訓練Transformer將英語翻譯成法語 174

10.3.1 損失函數和優化器 174

10.3.2 訓練循環 177

10.4 用訓練好的模型將英語翻譯成法語 177

10.5 小結 179

第 11章 從零開始構建GPT 180

11.1 GPT-2的架構和因果自註意力 181

11.1.1 GPT-2的架構 181

11.1.2 GPT-2中的詞嵌入和位置編碼 182

11.1.3 GPT-2中的因果自註意力 183

11.2 從零開始構建GPT-2XL 187

11.2.1 字節對編碼器(BPE)詞元化 187

11.2.2 GELU激活函數 188

11.2.3 因果自註意力 190

11.2.4 構建GPT-2XL模型 191

11.3 加載預訓練權重並生成文本 193

11.3.1 加載GPT-2XL的預訓練參數 194

11.3.2 定義用於生成文本的generate()函數 195

11.3.3 用GPT-2XL生成文本 197

11.4 小結 199

第 12章 訓練生成文本的Transformer 200

12.1 從零開始構建並訓練GPT 201

12.1.1 文本生成GPT的架構 202

12.1.2 文本生成GPT模型的訓練過程 203

12.2 海明威小說的文本詞元化 204

12.2.1 對文本進行詞元化 205

12.2.2 創建訓練批次 208

12.3 構建用於生成文本的GPT 209

12.3.1 模型超參數 209

12.3.2 構建因果自註意力機制模型 210

12.3.3 構建GPT模型 210

12.4 訓練GPT模型以生成文本 212

12.4.1 訓練GPT模型 212

12.4.2 生成文本的函數 213

12.4.3 使用不同版本的訓練好的模型生成文本 215

12.5 小結 218

 

第四部分 實際應用和新進展

第 13章 使用MuseGAN生成音樂 220

13.1 音樂的數字化表示 221

13.1.1 音符、八度音階和音高 221

13.1.2 多軌音樂簡介 222

13.1.3 音樂的數字化表示:鋼琴捲譜 224

13.2 音樂生成所用的藍圖 226

13.2.1 用和弦、風格、旋律和節奏構建音樂 227

13.2.2 訓練MuseGAN所用的藍圖 228

13.3 準備MuseGAN所需的訓練數據 229

13.3.1 下載訓練數據 230

13.3.2 將多維對象轉換為音樂作品 230

13.4 構建MuseGAN 231

13.4.1 MuseGAN中的批評者 232

13.4.2 MuseGAN中的生成器 233

13.4.3 優化器和損失函數 235

13.5 訓練MuseGAN以生成音樂 236

13.5.1 訓練MuseGAN 237

13.5.2 使用訓練好的MuseGAN生成音樂 238

13.6 小結 239

第 14章 構建並訓練音樂Transformer 241

14.1 音樂Transformer簡介 242

14.1.1 表示基於演奏的音樂 242

14.1.2 音樂Transformer的架構 245

14.1.3 訓練音樂Transformer的過程 246

14.2 詞元化音樂作品 248

14.2.1 下載訓練數據 248

14.2.2 詞元化MIDI文件 249

14.2.3 準備訓練數據 251

14.3 構建用於生成音樂的GPT 253

14.3.1 音樂Transformer中的超參數 253

14.3.2 構建音樂Transformer 254

14.4 訓練和使用音樂Transformer 255

14.4.1 訓練音樂Transformer 255

14.4.2 使用訓練好的Transformer生成音樂 256

14.5 小結 258

第 15章 擴散模型和文生圖Transformer 259

15.1 去噪擴散模型簡介 260

15.1.1 正向擴散過程 260

15.1.2 使用U-Net模型為圖像去噪 261

15.1.3 去噪U-Net模型的訓練藍圖 263

15.2 準備訓練數據 264

15.2.1 作為訓練數據的花朵圖像 264

15.2.2 正向擴散過程的可視化 265

15.3 構建去噪U-Net模型 267

15.3.1 去噪U-Net模型中的註意力機制 267

15.3.2 去噪U-Net模型 268

15.4 訓練和使用去噪U-Net模型 269

15.4.1 訓練去噪U-Net模型 270

15.4.2 使用訓練好的模型生成花朵圖像 271

15.5 文生圖Transformer 274

15.5.1 CLIP:一種多模態Transformer 274

15.5.2 用DALL·E 2進行文生圖 276

15.6 小結 277

第 16章 預訓練LLM和LangChain庫 279

16.1 使用OpenAI API生成內容 280

16.1.1 使用OpenAI API運行文本生成

任務 280

16.1.2 使用OpenAI API生成代碼 282

16.1.3 使用OpenAI DALL·E 2生成圖像 283

16.1.4 使用OpenAI API進行語音生成 284

16.2 LangChain簡介 285

16.2.1 LangChain庫的必要性 285

16.2.2 在LangChain中使用

OpenAI API 286

16.2.3 零樣本提示、單樣本提示和少樣本提示 286

16.3 用LangChain創建博學多才的零樣本智能體 288

16.3.1 申請Wolfram Alpha API密鑰 288

16.3.2 在LangChain中創建智能體 290

16.3.3 用OpenAI GPT添加工具 291

16.3.4 添加能生成代碼和圖像的工具 293

16.4 LLM的局限性和倫理問題 295

16.4.1 LLM的局限性 295

16.4.2 LLM的倫理問題 296

16.5 小結 297

附錄A 安裝Python、Jupyter Notebook和PyTorch 298

A.1 安裝Python並設置虛擬環境 298

A.1.1 安裝Anaconda 298

A.1.2 設置Python虛擬環境 299

A.1.3 安裝Jupyter Notebook 299

A.2 安裝PyTorch 300

A.2.1 安裝不帶CUDA的PyTorch 300

A.2.2 安裝帶CUDA的PyTorch 301

附錄B 閱讀本書需要掌握的基礎知識 303

B.1 深度學習和深度神經網絡 303

B.1.1 神經網絡簡介 303

B.1.2 神經網絡中不同類型的層 304

B.1.3 激活函數 304

B.2 訓練深度神經網絡 305

B.2.1 訓練過程 305

B.2.2 損失函數 306

B.2.3 優化器 306