深度学习精粹与PyTorch实践

  • 书籍语言:简体中文
  • 下载次数:4217
  • 书籍类型:Epub+Txt+pdf+mobi
  • 创建日期:2024-10-19 10:10:02
  • 发布日期:2025-09-06
  • 连载状态:全集
  • 书籍作者:爱德华·拉夫
  • 运行环境:pc/安卓/iPhone/iPad/Kindle/平板

内容简介

深度学习绝非不可窥探的黑箱!深入理解其模型和算法的实际运作机制,是驾驭并优化结果的关键。你无需成为数学专家或资深数据科学家,同样能够掌握深度学习系统内部的工作原理。本书旨在通过深入浅出的方式,为你揭示这些原理,让你在理解和解释自己的工作时更加自信与从容。

《深度学习精粹与PyTorch实践》以浅显易懂的方式揭示了深度学习算法的内部运作机制,即使是机器学习初学者也能轻松理解。本书通过平实的语言解析、详尽的代码注释,以及数十个基于PyTorch框架的实战示例,逐步引导你探索深度学习的核心概念与实用工具。本书避免了复杂的数学公式堆砌,而是采用直观易懂的方式阐述每种神经网络类型的运作逻辑。更令人兴奋的是,书中提供的所有解决方案均可在现有的GPU硬件上顺畅运行!

主要内容

● 选择正确的深度学习组件

● 训练和评估深度学习模型

● 微调深度学习模型以实现性能最大化了解深度学习术语


作者简介

Edward Raff博士是Booz Allen Hamilton公司的首席科学家,也是战略创新集团机器学习研究团队的共同负责人。他的工作涉及监督内部研究、招聘和培养技术人才、与高校合作伙伴合作以及专门从事高端机器学习的业务开发。Raff博士还协助几位客户开展高级研究。

他对机器学习的写作、开发和教学的热情源于他渴望分享自己对机器学习所有领域的热爱。他是Java统计分析工具(Java Statistical Analysis Tool,JSAT)的创建者,JSAT是一个用于在Java中进行快速机器学习的库。他目前带有5名博士生,编写了60多种出版物,并获得了3项最佳论文奖。


下载地址

序言

X

深度学习精粹与PyTorch实践

以及逻辑回归和线性回归、k-means聚类、最近邻搜索和主成分分析(Principal Compoment Analysis,PCA)等简单算法。在阅读本书前,最好已使用过scikit-learn提供的这些工具,并了解生态系统中的其他工具,如NumPy、pandas和通用的面向对象开发。但不需要了解PyTorch,因为本书会讲解,但我鼓励读者在阅读各章时查阅PyTorch文档,以获取相关细节知识。

如果你想了解深度学习背后的奥秘,并开始了解它是如何工作的、何时使用它以及如何自信地使用它,你就应该阅读本书!我试图在展示代码、实际细节和相关知识之间找到一个平衡点,同时融入所需的数学、统计学和理论理解,而这正是你从这个快速发展的领域中脱颖而出并与时俱进所需要的。如果你能坚持下去,会发现每一章都充满挑战,但又收获颇丰。本书的内容应该可以帮助任何初级到中级的ML工程师、数据科学家或研究人员打下坚实的基础。即使是与我共事的资深研究人员也会发现这些内容非常有用,而且我已经在生产中使用了其中的许多代码。我的几位博士生也发现,这些代码有助于在“可用”和“可定制”之间取得平衡,可以节省时间,帮助更快地完成研究。

本书结构安排

本书内容分为两部分,共14章。第Ⅰ部分(第1~6章)侧重于介绍深度学习的基础:编码框架、基本架构类型、不同组件的术语以及构建和训练神经网络的技术。这些基本工具可用于构建更大、更复杂的系统。第Ⅱ部分(第7~14章)讲解了一些新的设计选择或策略。每一章都有助于将深度学习的实用性扩展到一种新的任务或问题,拓宽读者的深度学习能力范围,并提供新的杠杆来调整不同的设计权衡(例如,速度与准确率)。

虽然跳读到听起来与你日常工作特别相关的章节可能很诱人,但这不是一本可以跳读章节的书!本书是按照线性顺序精心编排的。每一章都建立在前一章所介绍的概念或技术的基础上,以帮助读者慢慢加深对这些概念或技术的理解,从而掌握各种技能。

第Ⅰ部分“基础方法”共包含6章内容。

● 第1章讨论PyTorch及其工作原理,并展示如何使用这个框架。

● 第2章介绍最基本的神经网络类型——全连接网络,以及如何在PyTorch中编写代码来训练任意类型的网络。这包括演示全连接网络如何与线性模型相关联。

● 第3章介绍卷积,以及卷积神经网络如何在基于图像的深度学习中占据主导地位。

● 第4章介绍循环神经网络,以及循环神经网络如何编码序列信息、如何用于解决文本分类问题。

● 第5章介绍可应用于任何神经网络的新的训练技术,以在更短的时间内获得更高的准确率,并解释如何实现这一目标。

● 第6章介绍当今常用的现代设计模式,以将神经网络设计知识带入现代。

第Ⅱ部分“构建高级网络”共包含8章内容。

● 第7章介绍自动编码技术,这是一种在没有标签数据的情况下训练神经网络的技

前 言XI

术,可以实现无监督学习。

● 第8章介绍图像分割和目标检测,这两种技术可用于在图像中查找多个目标。

● 第9章介绍生成对抗网络,这是一种可以生成合成数据的无监督方法,也是许多现代图像篡改和深度伪造技术的基础。

● 第10章教授如何实现注意力机制,这是网络先验的最新重要进展之一。注意力机制支持深度网络选择性地忽略输入中不相关或不重要的部分。

● 第11章利用注意力构建了开创性的序列到序列模型,并展示了如何利用在生产系统中部署的相同方法来构建English-to-French转换器。

● 第12章通过重新思考网络的设计方式,介绍了一种避免循环网络(源于其缺点)的新策略。其中包括使用transformer架构这一当前最佳自然语言处理工具的基础。

● 第13章介绍迁移学习,这是一种利用在一个数据集上训练的网络来提高另一个数据集性能的方法。它允许使用较少的标签数据,使其成为实际工作中最有用的技巧之一。

● 第14章是本书的最后一章,重温了现代神经网络的一些最基本的组成部分,并力图传授最近发表的、大多数从业人员一无所知的三种技术,以构建更好的模型。

数学符号说明

以下是书中最常用的符号和符号样式,以及它们的对应代码,可以作为快速参考和入门。

符号

含义

代码

x或x∈??

小写字母用于表示单浮点值,∈??明确表示该值为“实数”

x=3.14或x= np.array(3.14)

x或x∈??d

粗体小写表示d值的向量

x = np.zeros(d)

X或x∈??rc,

大写表示矩阵或更高阶张量;“,”分隔的数字/字母的数量使轴的数量明确

X = np.zeros((r,c))

XT或xT

表示转置矩阵或向量

np.transpose(x) 或

np.transpose(X)

i=结束Σ

开始 fi()

表达式或函数f()的求和

result = 0

for i in range(start, end+1):

result += f(i)

i=Π结束开始fi()

表达式或函数f()的乘积

result = 1

for i in range(start, end+1):

result *= f(i)

x2

矩阵或张量的2-范数,表示其值的“大小”

result = 0

for val in x:

result += val**2

result = np.sqrt(result)

XII 深度学习精粹与 PyTorch 实践

练习

每章都以一组练习结束,以帮助读者实践所学内容。为了鼓励读者自行解决问题,书中没有提供答案。相反,作者和出版商意在邀请读者在Manning在线平台与其他读者分享和讨论各自的解决方案(https://liveproject.manning.com/project/945)。一旦读者提交了自己的解决方案,就可以看到其他读者提交的解决方案以及作者对哪一个方案是最优解决方案的解读。

关于Google Colab

虽然深度学习确实需要使用GPU才能工作,但是我设计的每一章内容都可以在 Google Colab上运行:这是一个可以支持用户根据个人需要选择免费或便宜使用GPU算力的平台。一个不错的GPU至少要花费600美元,而你完全可以选择借助Google Colab先自学,之后再投资。如果你以前没有使用过Colab,不妨参照附录完成设置,说白了,它就是一个云端的Jupyter notebook。

关于代码下载


目录

第1章 学习的机制 3

1.1 Colab入门 7

1.2 张量 7

1.3 自动微分 15

1.3.1 使用导数将损失降至最低 17

1.3.2 使用自动微分计算导数 18

1.3.3 知识整合:使用导数最小化函数 19

1.4 优化参数 21

1.5 加载数据集对象 23

1.6 练习 26

1.7 小结 27

第2章 全连接网络 29

2.1 优化神经网络 30

2.1.1 训练神经网络的符号 30

2.1.2 建立线性回归模型 32

2.1.3 训练循环 32

2.1.4 定义数据集 34

2.1.5 定义模型 36

2.1.6 定义损失函数 37

2.1.7 知识整合:在数据上训练线性回归模型 38

2.2 构建第一个神经网络 40

2.2.1 全连接网络的符号 40

2.2.2 PyTorch中的全连接网络 41

2.2.3  增加非线性 43

2.3 分类问题 46

2.3.1 分类简单问题 46

2.3.2 分类损失函数 48

2.3.3 训练分类网络 51

2.4 更好地训练代码 53

2.4.1 自定义指标 53

2.4.2 训练和测试阶段 54

2.4.3 保存检查点 55

2.4.4 知识整合:更好的模型训练函数 56

2.5 批量训练 61

2.6 练习 64

2.7 小结 65

第3章 卷积神经网络 67

3.1 空间结构先验信念 68

3.2 什么是卷积 74

3.2.1 一维卷积 75

3.2.2 二维卷积 76

3.2.3 填充 77

3.2.4  权重共享 78

3.3 卷积如何有益于图像处理 79

3.4 付诸实践:我们的第一个CNN 82

3.4.1 使用多个过滤器生成卷积层 83

3.4.2 每层使用多个过滤器 84

3.4.3 通过展平将卷积层与线性层混合 84

3.4.4 第一个CNN的PyTorch代码 86

3.5 添加池化以减少对象移动 88

3.6 数据增强 93

3.7 练习 97

3.8 小结 97

第4章 循环神经网络 99

4.1 作为权重共享的循环神经网络 100

4.1.1 全连接网络的权重共享 101

4.1.2 随时间共享权重 105

4.2 在PyTorch中实现RNN 107

4.2.1 一个简单的序列分类问题 108

4.2.2 嵌入层 112

4.2.3 使用最后一个时间步长进行预测 114

4.3 通过打包减短训练时间 119

4.3.1 填充和打包 120

4.3.2 可打包嵌入层 122

4.3.3 训练批量RNN 122

4.3.4 同时打包和解包输入 124

4.4 更为复杂的RNN 125

4.4.1 多层 126

4.4.2 双向RNN 127

4.5 练习 129

4.6 小结 130

第5章 现代训练技术 131

5.1 梯度下降分两部分进行 132

5.1.1 添加学习率调度器 133

5.1.2 添加优化器 134

5.1.3 实现优化器和调度器 135

5.2 学习率调度器 139

5.2.1 指数衰减:平滑不稳定训练 140

5.2.2 步长下降调整:更平滑 143

5.2.3 余弦退火:准确率更高但稳定性较差 144

5.2.4 验证平台:基于数据的调整 147

5.2.5 比较调度器 151

5.3 更好地利用梯度 152

5.3.1 SGD与动量:适应梯度一致性 153

5.3.2 Adam:增加动量变化 159

5.3.3 梯度修剪:避免梯度爆炸 162

5.4 使用Optuna进行超参数优化 164

5.4.1 Optuna 164

5.4.2 使用PyTorch的Optuna 167

5.4.3 使用Optuna修剪试验 171

5.5 练习 173

5.6 小结 174

第6章 通用设计构建块 175

6.1 更好的激活函数 179

6.1.1 梯度消失 179

6.1.2 校正线性单位(ReLU):避免梯度消失 181

6.1.3 使用LeakyReLU激活训练 184

6.2 归一化层:神奇地促进收敛 186

6.2.1 归一化层用于何处 187

6.2.2 批量归一化 188

6.2.3 使用批量归一化进行训练 190

6.2.4 层归一化 192

6.2.5 使用层归一化进行训练 192

6.2.6 使用哪个归一化层 195

6.2.7 层归一化的特点 195

6.3 跳跃连接:网络设计模式 198

6.3.1 实施全连接的跳跃 200

6.3.2 实现卷积跳跃 203

6.4 1×1卷积:在通道中共享和重塑信息 206

6.5 残差连接 208

6.5.1 残差块 208

6.5.2 实现残差块 210

6.5.3 残差瓶颈 210

6.5.4 实现残差瓶颈 212

6.6 长短期记忆网络RNN 214

6.6.1 RNN:快速回顾 214

6.6.2 LSTM和门控机制 215

6.6.3 LSTM训练 217

6.7 练习 220

6.8 小结 220

第Ⅱ部分 构建高级网络

第7章 自动编码和自监督 225

7.1 自动编码的工作原理 227

7.1.1 主成分分析是自动编码器的瓶颈 228

7.1.2 实现PCA 229

7.1.3 使用PyTorch实现PCA 232

7.1.4 可视化PCA结果 233

7.1.5 简单的非线性PCA 235

7.2 设计自动编码神经网络 238

7.2.1 实现自动编码器 239

7.2.2 可视化自动编码器结果 240

7.3 更大的自动编码器 242

7.4 自动编码器去噪 247

7.5 时间序列和序列的自回归模型 252

7.5.1 实现char-RNN自回归文本模型 254

7.5.2 自回归模型是生成模型 261

7.5.3 随着温度调整采样 263

7.5.4 更快地采样 266

7.6 练习 268

7.7 小结 269

第8章 目标检测 271

8.1 图像分割 272

8.1.1 核检测:加载数据 273

8.1.2 在PyTorch中表示图像分割问题 275

8.1.3 建立第一个图像分割网络 277

8.2 用于扩展图像大小的转置卷积 279

8.3 U-Net:查看精细和粗糙的细节 284

8.4 带边界框的目标检测 289

8.4.1 Faster R-CNN 290

8.4.2 在PyTorch中实现Faster R-CNN 295

8.4.3 抑制重叠框 303

8.5 使用预训练的Faster R-CNN 305

8.6 练习 307

8.7 小结 308

第9章 生成对抗网络 309

9.1 理解生成对抗网络 310

9.1.1 损失计算 312

9.1.2 GAN博弈 314

9.1.3 实现第一个GAN 316

9.2 模式崩溃 324

9.3 Wasserstein GAN:缓解模式崩溃 327

9.3.1 WGAN判别器损失 327

9.3.2 WGAN生成器损失 328

9.3.3 实现WGAN 329

9.4 卷积GAN 334

9.4.1 设计卷积生成器 334

9.4.2 设计卷积判别器 336

9.5 条件GAN 339

9.5.1 实现条件GAN 340

9.5.2 训练条件GAN 341

9.5.3 使用条件GAN控制生成 342

9.6 GAN潜在空间概览 343

9.6.1 从Hub获取模型 343

9.6.2 对GAN输出进行插值 344

9.6.3 标记潜在维度 346

9.7 深度学习中的伦理问题 349

9.8 练习 350

9.9 小结 351

第10章 注意力机制 353

10.1 注意力机制学习相对输入重要性 354

10.1.1 训练基线模型 355

10.1.2 注意力机制 357

10.1.3 实现简单的注意力机制 359

10.2 添加上下文 363

10.2.1 点分数 365

10.2.2 总分数 366

10.2.3 附加注意力 367

10.2.4 计算注意力权重 369

10.3 知识整合:一种有上下文的完整注意力机制 371

10.4 练习 375

10.5 小结 376

第11章 序列到序列 377

11.1 序列到序列作为一种去噪自动编码器 378

11.2 机器翻译和数据加载器 380

11.3 序列到序列的输入 385

11.3.1 自回归法 386

11.3.2 教师强制法 386

11.3.3 教师强制法与自回归法的比较 387

11.4 序列到序列注意力 387

11.4.1 实现序列到序列 389

11.4.2 训练和评估 394

11.5 练习 400

11.6 小结 400

第12章 RNN的网络设计替代方案 401

12.1 TorchText:处理文本问题的工具 402

12.1.1 安装TorchText 402

12.1.2 在TorchText中加载数据集 402

12.1.3 定义基线模型 405

12.2 随时间平均嵌入 406

12.3 随时间池化和一维CNN 413

12.4 位置嵌入为任何模型添加序列信息 417

12.4.1 实现位置编码模块 421

12.4.2 定义位置编码模型 422

12.5 Transformer:大数据的大模型 425

12.5.1 多头注意力 425

12.5.2 transformer模块 430

12.6 练习 433

12.7 小结 434

第13章 迁移学习 435

13.1 迁移模型参数 436

13.2 迁移学习和使用CNN进行训练 440

13.2.1 调整预训练网络 442

13.2.2 预处理预训练的ResNet 446

13.2.3 热启动训练 447

13.2.4 使用冻结权重进行训练 449

13.3 用较少的标签学习 451

13.4 文本预训练 454

13.4.1 带有Hugging Face库的transformer 455

13.4.2 无梯度的冻结权重 457

13.5 练习 459

13.6 小结 460

第14章 高级构件 461

14.1 池化问题 462

14.1.1 锯齿损害了平移不变性 464

14.1.2 通过模糊实现抗锯齿 469

14.1.3 应用抗锯齿池化 473

14.2 改进后的残差块 476

14.2.1 有效深度 477

14.2.2 实现ReZero 478

14.3 混合训练减少过拟合 481

14.3.1 选择混合率 483

14.3.2 实现MixUp 484

14.4 练习 489

14.5  小结 489

附录A 设置Colab 491


短评

    产品特色