第 一部分 生成式人工智能简介
第 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