解剖深度学习原理:从0编写深度学习库pdf下载pdf下载

解剖深度学习原理:从0编写深度学习库百度网盘pdf下载

作者:
简介:本篇主要提供解剖深度学习原理:从0编写深度学习库pdf下载
出版社:电子工业出版社
出版时间:2021-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

适读人群 :没有任何深度学习基础的初学者;具有深度学习库使用经验、想了解其底层实现原理的从业人员

深度学习是目前人工智能的核心技术,本书从原理到实现,介绍了深度学习的基本理论、网络结构、优化技术和实际应用,帮助读者用Python的NumPy库从底层而不是借助现有的深度学习库,从0开始构建属于自己的深度学习库。

内容简介

本书深入浅出地介绍了深度学习的基本原理和实现过程,带领读者用Python的NumPy库从底层而不是借助现有的深度学习库,从0开始构建属于自己的深度学习库。本书在介绍基本的Python编程、微积分、概率、统计知识的基础上,按照深度学习的发展脉络介绍了回归模型、神经网络、卷积神经网络、循环神经网络、生成对抗网络等深度学习的核心知识,在深入浅出地剖析原理的同时,给出了详细的代码实现过程。
本书既适合没有任何深度学习基础的初学者阅读,也适合具有深度学习库使用经验、想了解其底层实现原理的从业人员参考。同时,本书特别适合作为高等院校的深度学习教材。


作者简介

哈尔滨工业大学数学力学系应用数学本科、基础数学硕士,南京航空航天大学航空宇航制造工程专业博士。2008-2009年德州农工大学tamu访问学者,2016年休斯敦大学访问研究。从事过曲面造型、特征造型的算法研究和系统实现,开发过数控玻璃切割系统。在高校从事过高等数学、线性代数、概率统计、数据结构、C++编程语言、图形学、计算机网络等课程教学,目前主要研究方向:计算机图形学与计算机视觉、深度学习人工智能等。编著了《C++17从入门到精通》《Python 3从入门到实战》等书。

目录

第1章 编程和数学基础 1
1.1 Python快速入门 1
1.1.1 快速安装Python 1
1.1.2 Python基础 2
1.1.3 Python中的常见运算 5
1.1.4 Python控制语句 7
1.1.5 Python常用容器类型 10
1.1.6 Python常用函数 16
1.1.7 类和对象 22
1.1.8 Matplotlib入门 24
1.2 张量库NumPy 33
1.2.1 什么是张量 33
1.2.2 创建ndarray对象 37
1.2.3 ndarray数组的索引和切片 53
1.2.4 张量的计算 57
1.3 微积分 63
1.3.1 函数 64
1.3.2 四则运算和复合运算 66
1.3.3 极限和导数 69
1.3.4 导数的四则运算和链式法则 72
1.3.5 计算图、正向计算和反向传播求导 74
1.3.6 多变量函数的偏导数与梯度 75
1.3.7 向量值函数的导数与Jacobian矩阵 78
1.3.8 积分 83
1.4 概率基础 84
1.4.1 概率 84
1.4.2 条件概率、联合概率、全概率公式、贝叶斯公式 86
1.4.3 随机变量 88
1.4.4 离散型随机变量的概率分布 89
1.4.5 连续型随机变量的概率密度 91
1.4.6 随机变量的分布函数 93
1.4.7 期望、方差、协方差、协变矩阵 95
第2章 梯度下降法 99
2.1 函数极值的必要条件 99
2.2 梯度下降法基础 101
2.3 梯度下降法的参数优化策略 108
2.3.1 Momentum法 108
2.3.2 AdaGrad法 110
2.3.3 AdaDelta法 112
2.3.4 RMSprop法 114
2.3.5 Adam法 115
2.4 梯度验证 117
2.4.1 比较数值梯度和分析梯度 117
2.4.2 通用的数值梯度 118
2.5 分离梯度下降法与参数优化策略 119
2.5.1 参数优化器 119
2.5.2 接受参数优化器的梯度下降法 120
第3章 线性回归、逻辑回归和softmax回归 122
3.1 线性回归 122
3.1.1 餐车利润问题 122
3.1.2 机器学习与人工智能 123
3.1.3 什么是线性回归 126
3.1.4 用正规方程法求解线性回归问题 127
3.1.5 用梯度下降法求解线性回归问题 129
3.1.6 调试学习率 133
3.1.7 梯度验证 135
3.1.8 预测 135
3.1.9 多特征线性回归 136
3.2 数据的规范化 143
3.2.1 预测大坝出水量 143
3.2.2 数据的规范化过程 147
3.3 模型的评估 149
3.3.1 欠拟合和过拟合 149
3.3.2 验证集和测试集 153
3.3.3 学习曲线 155
3.3.4 偏差和方差 160
3.4 正则化 165
3.5 逻辑回归 168
3.5.1 逻辑回归基础 169
3.5.2 逻辑回归的NumPy实现 173
3.5.3 实战:鸢尾花分类的NumPy实现 178
3.6 softmax回归 180
3.6.1 spiral数据集 180
3.6.2 softmax函数 181
3.6.3 softmax回归模型 186
3.6.4 多分类交叉熵损失 188
3.6.5 通过加权和计算交叉熵损失 191
3.6.6 softmax回归的梯度计算 191
3.6.7 softmax回归的梯度下降法的实现 197
3.6.8 spiral数据集的softmax回归模型 197
3.7 批梯度下降法和随机梯度下降法 199
3.7.1 MNIST手写数字集 199
3.7.2 用部分训练样本训练逻辑回归模型 201
3.7.3 批梯度下降法 202
3.7.4 随机梯度下降法 207
第4章 神经网络 209
4.1 神经网络概述 209
4.1.1 感知机和神经元 209
4.1.2 激活函数 213
4.1.3 神经网络与深度学习 216
4.1.4 多个样本的正向计算 221
4.1.5 输出 224
4.1.6 损失函数 224
4.1.7 基于数值梯度的神经网络训练 229
4.2 反向求导 235
4.2.1 正向计算和反向求导 235
4.2.2 计算图 237
4.2.3 损失函数关于输出的梯度 239
4.2.4 2层神经网络的反向求导 242
4.2.5 2层神经网络的Python实现 247
4.2.6 任意层神经网络的反向求导 252
4.3 实现一个简单的深度学习框架 256
4.3.1 神经网络的训练过程 256
4.3.2 网络层的代码实现 257
4.3.3 网络层的梯度检验 260
4.3.4 神经网络的类 261
4.3.5 神经网络的梯度检验 263
4.3.6 基于深度学习框架的MNIST手写数字识别 266
4.3.7 改进的通用神经网络框架:分离加权和与激活函数 268
4.3.8 独立的参数优化器 276
4.3.9 fashion-mnist的分类训练 279
4.3.10 读写模型参数 282
第5章 改进神经网络性能的基本技巧 285
5.1 数据处理 285
5.1.1 数据增强 285
5.1.2 规范化 289
5.1.3 特征工程 289
5.2 参数调试 296
5.2.1 权重初始化 296
5.2.2 优化参数 301
5.3 批规范化 301
5.3.1 什么是批规范化 301
5.3.2 批规范化的反向求导 303
5.3.3 批规范化的代码实现 304
5.4 正则化 310
5.4.1 权重正则化 310
5.4.2 Dropout 312
5.4.3 早停法 316
5.5 梯度爆炸和梯度消失 317
第6章 卷积神经网络 318
6.1 卷积入门 319
6.1.1 什么是卷积 319
6.1.2 一维卷积 325
6.1.3 二维卷积 326
6.1.4 多通道输入和多通道输出 338
6.1.5 池化 341
6.2 卷积神经网络概述 344
6.2.1 全连接神经元和卷积神经元 345
6.2.2 卷积层和卷积神经网络 346
6.2.3 卷积层和池化层的反向求导及代码实现 349
6.2.4 卷积神经网络的代码实现 361
6.3 卷积的矩阵乘法 364
6.3.1 一维卷积的矩阵乘法 364
6.3.2 二维卷积的矩阵乘法 365
6.3.3 一维卷积反向求导的矩阵乘法 371
6.3.4 二维卷积反向求导的矩阵乘法 373
6.4 基于坐标索引的快速卷积 377
6.5 典型卷积神经网络结构 393
6.5.1 LeNet-5 393
6.5.2 AlexNet 394
6.5.3 VGG 395
6.5.4 残差网络 396
6.5.5 Inception网络 398
6.5.6 NiN 399
第7章 循环神经网络 403
7.1 序列问题和模型 403
7.1.1 股票价格预测问题 404
7.1.2 概率序列模型和语言模型 405
7.1.3 自回归模型 406
7.1.4 生成自回归数据 406
7.1.5 时间窗方法 408
7.1.6 时间窗采样 409
7.1.7 时间窗方法的建模和训练 409
7.1.8 长期预测和短期预测 410
7.1.9 股票价格预测的代码实现 412
7.1.10 k-gram语言模型 415
7.2 循环神经网络基础 416
7.2.1 无记忆功能的非循环神经网络 417
7.2.2 具有记忆功能的循环神经网络 418
7.3 穿过时间的反向传播 421
7.4 单层循环神经网络的实现 425
7.4.1 初始化模型参数 425
7.4.2 正向计算 425
7.4.3 损失函数 427
7.4.4 反向求导 427
7.4.5 梯度验证 429
7.4.6 梯度下降训练 432
7.4.7 序列数据的采样 433
7.4.8 序列数据的循环神经网络训练和预测 441
7.5 循环神经网络语言模型和文本的生成 448
7.5.1 字符表 448
7.5.2 字符序列样本的采样 450
7.5.3 模型的训练和预测 452
7.6 循环神经网络中的梯度爆炸和梯度消失 455
7.7 长短期记忆网络 456
7.7.1 LSTM的神经元 457
7.7.2 LSTM的反向求导 460
7.7.3 LSTM的代码实现 461
7.7.4 LSTM的变种 469
7.8 门控循环单元 470
7.8.1 门控循环单元的工作原理 470
7.8.2 门控循环单元的代码实现 472
7.9 循环神经网络的类及其实现 475
7.9.1 用类实现循环神经网络 475
7.9.2 循环神经网络单元的类实现 483
7.10 多层循环神经网络和双向循环神经网络 491
7.10.1 多层循环神经网络 491
7.10.2 多层循环神经网络的训练和预测 497
7.10.3 双向循环神经网络 500
7.11 Seq2Seq模型 506
7.11.1 机器翻译概述 507
7.11.2 Seq2Seq模型的实现 508
7.11.3 字符级的Seq2Seq模型 516
7.11.4 基于Word2Vec的Seq2Seq模型 522
7.11.5 基于词嵌入层的Seq2Seq模型 533
7.11.6 注意力机制 541
第8章 生成模型 552
8.1 生成模型概述 552
8.2 自动编码器 556
8.2.1 什么是自动编码器 557
8.2.2 稀疏编码器 559
8.2.3 自动编码器的代码实现 560
8.3 变分自动编码器 563
8.3.1 什么是变分自动编码器 563
8.3.2 变分自动编码器的损失函数 564
8.3.3 变分自动编码器的参数重采样 565
8.3.4 变分自动编码器的反向求导 565
8.3.5 变分自动编码器的代码实现 566
8.4 生成对抗网络 571
8.4.1 生成对抗网络的原理 573
8.4.2 生成对抗网络训练过程的代码实现 577
8.5 生成对抗网络建模实例 579
8.5.1 一组实数的生成对抗网络建模 579
8.5.2 二维坐标点的生成对抗网络建模 585
8.5.3 MNIST手写数字集的生成对抗网络建模 590
8.5.4 生成对抗网络的训练技巧 594
8.6 生成对抗网络的损失函数及其概率解释 594
8.6.1 生成对抗网络的损失函数的全局最优解 594
8.6.2 Kullback-Leibler散度和Jensen-Shannon散度 595
8.6.3 生成对抗网络的最大似然解释 598
8.7 改进的损失函数——Wasserstein GAN 599
8.7.1 Wasserstein GAN的原理 599
8.7.2 Wasserstein GAN的代码实现 603
8.8 深度卷积对抗网络 605
8.8.1 一维转置卷积 606
8.8.2 二维转置卷积 609
8.8.3 卷积对抗网络的代码实现 612
参考文献 617

前言/序言

前言

从计算机被发明以来,使机器具有类似于人类的智能一直是计算机科学家努力的目标。从1956年人工智能的概念被提出以来,人工智能研究经历了多次起伏,从基于数理逻辑的规则推理到状态空间搜索推理、从专家系统到统计学习、从群智能算法到机器学习、从神经网络到支持向量机,不同的人工智能技术曾各领风骚。
近年来,采用深度神经网络的深度学习大放异彩、突飞猛进,如AlphaGo、自动驾驶、机器翻译、语音识别等深度学习的成功应用,不断吸引人们的眼球。作为机器学习的一个分支,深度学习使传统的神经网络技术重回舞台中央,奠定了其在众多人工智能技术中的领先地位。
深度学习没有复杂、深奥的理论,在原理上仍然是传统的神经网络,即用一些简单的神经元函数组合成一个复杂的函数,并采用简单的梯度下降法根据实际样本数据学习神经网络中的模型参数。当然,深度学习的成功,离不开计算机硬件性能的提升(特别是并行计算性能越来越强的图形处理器),以及越来越多的数据。
未来社会,人工智能将无处不在,许多工作将被人工智能代替已经成为共识。目前,世界主要国家纷纷制定了人工智能战略,中小学也开始开设人工智能课程。借助一些深度学习平台,如TensorFlow、PyTorch、Caffe,一个小学生就可以轻松使用深度学习库去实现人脸识别、语音识别等应用,所要做的工作就是直接调用这些平台的API、定义深度神经网络的模型结构、调试训练参数。这些平台使深度学习的实现变得非常容易,使深度学习走进了寻常百姓家,使人工智能不再神秘。从高校到企业,各行各业的人都在使用深度学习开展各种研究与应用。

写作背景
只有透彻地理解技术背后的原理,才能更好地应用技术。尽管网上有大量讲解深度学习原理的文章,以及一些深度学习课程,但图书仍然是系统学习深度学习的重要工具。
市场上的深度学习图书:有些是针对专家或专业研究人员的偏重数学理论的图书,这类图书和学术论文一样,普通读者难以理解,且大都缺少对原理的深度剖析及代码实现,读者即使理解了原理,也可能仍然不知道该如何去实现;有些是工具类图书,主要介绍如何使用各种深度学习库,对原理的讲解非常少,读者只能依葫芦画瓢;有些属于通俗读物,对每个技术领域都浅尝辄止;还有极少的图书,在介绍原理的同时提供代码实现过程,并尽可能避免数学公式的推导。
笔者认为:平台教程类图书具有较强的时效性,而图书的出版周期往往以年计算,读者拿到图书时,平台的接口可能已经发生了较大的变化,图书的价值也就降低了;原理类图书应该通俗易懂,尽量避免复杂、深奥的数学推导,但完全抛弃经典高等数学,对于具有高等数学知识的读者来说,并不是一个好的选择。市场上缺少的,正是在介绍原理的同时讨论如何从底层而不是调用深度学习库编写深度学习算法的通俗易懂的图书。

本书内容
为了照顾没有编程经验、数学基础不足的读者,本书对Python编程、微积分、概率等知识进行了通俗易懂的讲解。在此基础上,本书由浅入深,从最简单的回归模型过渡到神经网络模型,采用从问题到概念的方式剖析深度学习的基本概念和原理,既避免“长篇大论”,也不会“惜字如金”,同时用简单的示例展现模型和算法的核心原理。在剖析原理的基础上,本书进一步用Python的NumPy库从底层进行代码实现,使读者透彻理解相关原理和实现并得到启发。通过阅读本书,读者不需要借助任何深度学习库,就可以从0开始构建属于自己的深度学习库。
本书既适合没有任何深度学习基础的初学者阅读,也适合具有深度学习库使用经验、想了解其底层实现原理的从业人员参考。同时,本书特别适合作为大专院校的深度学习教材。

读者服务
本书的相关资源(包括算法代码、链接列表),读者可访问作者的GitHub站点https://hwdong-net.github.io获取。


董洪伟
2021年3月