深度学习基础与实践 PDF 文档
本书是由两位技术出身的企业管理者编写的深度学习普及书。本书的前四章提供了足够的关于深度学习的理论知识,包括机器学习的基本概念、神经网络基础、从神经网络到深度网络的演化历程,以及主流的深度网络架构,为读者阅读本书剩余内容打下基础。后五章带领读者进行一系列深度学习的实践,包括建立深层网络、高级调优技术、各种数据类型的向量化和在 Spark 上运行深度学习工作流。
本书适合对深度学习的理论和应用感兴趣的开发人员和研究人员阅读。
与那些围绕着小程序的构建来推进的图书不同,本书选择从介绍一系列基础知识开始,带领你完整地走过深度学习的旅程。
我们发现有太多的书忽略了那些企业中的实践者经常需要快速复习的核心主题。基于在机器学习领域的经验,我们决定从入门级别的实践者经常需要温习的内容开始,以便更好地支持他们的深度学习工程。
你可能想跳过第 1 章和第 2 章,直奔深度学习基础知识相关章节。但我们希望你不要跳过,因为它们提供了基本的理论和原理,能帮助你顺利地开始学习更加艰深的深度学习主题。我们为不同背景的读者提供了一些阅读建议。
目录
前言
第 1 章 机器学习回顾
1.1 学习的机器
1.1.1 机器如何学习
1.1.2 生物学的启发
1.1.3 什么是深度学习
1.1.4 钻进奇幻的兔子洞
1.2 提出问题
1.3 机器学习背后的数学:线性代数
1.3.1 标量
1.3.2 向量
1.3.3 矩阵
1.3.4 张量
1.3.5 超平面
1.3.6 相关数学运算
1.3.7 将数据转换成向量
1.3.8 方程组求解
1.4 机器学习背后的数学:统计学
1.4.1 概率
1.4.2 条件概率
1.4.3 后验概率
1.4.4 分布
1.4.5 样本与总体
1.4.6 重采样方法
1.4.7 选择性偏差
1.4.8 似然
1.5 机器学习如何工作
1.5.1 回归
1.5.2 分类
1.5.3 聚类
1.5.4 欠拟合与过拟合
1.5.5 优化
1.5.6 凸优化
1.5.7 梯度下降
1.5.8 SGD
1.5.9 拟牛顿优化方法
1.5.10 生成模型与判别模型
1.6 逻辑回归
1.6.1 逻辑函数
1.6.2 理解逻辑回归的输出
1.7 评估模型
混淆矩阵
1.8 建立对机器学习的理解
第 2 章 神经网络基础与深度学习
2.1 神经网络
2.1.1 生物神经元
2.1.2 感知器
2.1.3 多层前馈网络
2.2 训练神经网络
反向传播学习
2.3 激活函数
2.3.1 线性函数
2.3.2 sigmoid 函数
2.3.3 tanh 函数
2.3.4 hard tanh 函数
2.3.5 softmax 函数
2.3.6 修正线性函数
2.4 损失函数
2.4.1 损失函数的符号
2.4.2 用于回归的损失函数
2.4.3 用于分类的损失函数
2.4.4 用于重建的损失函数
2.5 超参数
2.5.1 学习率
2.5.2 正则化
2.5.3 动量
2.5.4 稀疏
第 3 章 深度网络基础
3.1 定义深度学习
3.1.1 什么是深度学习
3.1.2 本章结构
3.2 深度网络的通用构建原则
3.2.1 参数
3.2.2 层
3.2.3 激活函数
3.2.4 损失函数
3.2.5 优化算法
3.2.6 超参数
3.2.7 小结
3.3 深度网络的构造块
3.3.1 RBM
3.3.2 自动编码器
3.3.3 变分自动编码器
第 4 章 深度网络的主要架构
4.1 UPN
4.1.1 DBN
4.1.2 GAN
4.2 CNN
4.2.1 生物学启发
4.2.2 思路
4.2.3 CNN 架构概要
4.2.4 输入层
4.2.5 卷积层
4.2.6 池化层
4.2.7 全连接层
4.2.8 CNN 的其他应用
4.2.9 CNN 列表
4.2.10 小结
4.3 RNN
4.3.1 时间维度建模
4.3.2 三维空间输入
4.3.3 为什么不是马尔可夫模型
4.3.4 常见的 RNN 架构
4.3.5 LSTM 网络
4.3.6 特定领域应用与混合网络
4.4 递归神经网络
4.4.1 网络架构
4.4.2 递归神经网络的变体
4.4.3 递归神经网络的应用
4.5 小结与讨论
4.5.1 深度学习会使其他算法过时吗
4.5.2 不同的问题有不同的最佳方法
4.5.3 什么时候需要深度学习
第 5 章 建立深度网络
5.1 将深度网络与适合的问题匹配
5.1.1 列式数据与多层感知器
5.1.2 图像与 CNN
5.1.3 时间序列与 RNN
5.1.4 使用混合网络
5.2 DL4J 工具套件
5.2.1 向量化与 DataVec
5.2.2 运行时与 ND4J
5.3 DL4J API 的基本概念
5.3.1 加载与保存模型
5.3.2 为模型获取输入
5.3.3 建立模型架构
5.3.4 训练与评估
5.4 使用多层感知器网络对 CSV 数据建模
5.4.1 建立输入数据
5.4.2 确定网络架构
5.4.3 训练模型
5.4.4 评估模型
5.5 利用 CNN 对手写图像建模
5.5.1 使用 LeNet CNN 的 Java 代码示例
5.5.2 加载及向量化输入图像
5.5.3 DL4J 中用于 LeNet 的网络架构
5.5.4 训练 CNN 网络
5.6 基于 RNN 的序列数据建模
5.6.1 通过 LSTM 生成莎士比亚风格作品
5.6.2 基于 LSTM 的传感器时间序列分类
5.7 利用自动编码器检测异常
5.7.1 自动编码器示例的 Java 代码列表
5.7.2 设置输入数据
5.7.3 自动编码器的网络结构与训练
5.7.4 评估模型
5.8 使用变分自动编码器重建 MNIST 数字
5.8.1 重建 MNIST 数字的代码列表
5.8.2 VAE 模型的检验
5.9 深度学习在自然语言处理中的应用
5.9.1 使用 Word2Vec 的学习词嵌入
5.9.2 具有段落向量的句子的分布式表示
5.9.3 使用段落向量进行文档分类
第 6 章 深度网络调优
6.1 深度网络调优的基本概念
6.1.1 建立深度网络的思路
6.1.2 构建思路的步骤
6.2 匹配输入数据与网络架构
小结
6.3 模型目标与输出层的关系
6.3.1 回归模型的输出层
6.3.2 分类模型的输出层
6.4 处理层的数量、参数的数量和存储器
6.4.1 前馈多层神经网络
6.4.2 控制层和参数的数量
6.4.3 估计网络内存需求
6.5 权重初始化策略
RNN 的正交权重初始化
6.6 使用激活函数
激活函数汇总表
6.7 应用损失函数
6.8 理解学习率
6.8.1 使用参数更新比率
6.8.2 关于学习率的具体建议
6.9 稀疏性对学习的影响
6.10 优化方法的应用
SGD 最佳实践
6.11 使用并行化和 GPU 更快地进行训练
6.11.1 在线学习与并行迭代算法
6.11.2 DL4J 中的 SGD 并行
6.11.3 GPU
6.12 控制迭代和小批量的大小
调整小批量大小
6.13 如何使用正则化
6.13.1 使用先验函数正则化
6.13.2 最大范数正则化
6.13.3 Dropout
6.13.4 其他正则化事项
6.14 处理类别不平衡
6.14.1 类别采样方法
6.14.2 加权损失函数
6.15 处理过拟合
6.16 通过调优 UI 来使用网络统计信息
6.16.1 检测不佳的权重初始化
6.16.2 检测非混洗数据
6.16.3 检测正则化的问题
第 7 章 调优特定的深度网络架构
7.1 CNN
7.1.1 卷积架构常见的模式
7.1.2 配置卷积层
7.1.3 配置池化层
7.1.4 迁移学习
7.2 RNN
7.2.1 网络输入数据和输入层
7.2.2 输出层与 RnnOutputLayer
7.2.3 训练网络
7.2.4 调试 LSTM 的常见问题
7.2.5 填充与掩码
7.2.6 掩码评估与评分
7.2.7 循环网络架构的变体
7.3 受限玻尔兹曼机
7.3.1 隐藏层神经元与可用信息建模
7.3.2 使用不同的单元
7.3.3 用 RBM 正则化
7.4 DBN
7.4.1 利用动量
7.4.2 使用正则化
7.4.3 确定隐藏单元的数量
第 8 章 向量化
8.1 机器学习中的向量化方法
8.1.1 为什么需要将数据向量化
8.1.2 处理列式原始数据属性的策略
8.1.3 特征工程与规范化技术
8.2 使用 DataVec 进行 ETL 和向量化
8.3 将图像数据向量化
8.3.1 DL4J 中的图像数据表示
8.3.2 使用 DataVec 将图像数据与向量规范化
8.4 将序列数据向量化
8.4.1 序列数据源的主要变体
8.4.2 使用 DataVec 将序列数据向量化
8.5 将文本向量化
8.5.1 词袋
8.5.2 TF-IDF
8.5.3 Word2Vec 与 VSM 的比较
8.6 使用图形
第 9 章 在 Spark 上使用深度学习和 DL4J
9.1 在 Spark 和 Hadoop 上使用 DL4J 的介绍
从命令行操作 Spark
9.2 配置和调优 Spark 运行
9.2.1 在 Mesos 上运行 Spark
9.2.2 在 YARN 中执行 Spark
9.2.3 Spark 调优简要介绍
9.2.4 对在 Spark 上运行的 DL4J 作业调优
9.3 为 Spark 和 DL4J 建立 Maven 项目对象模型
9.3.1 一个 pom.xml 文件依赖模板
9.3.2 为 CDH 5.x 设置 POM 文件
9.3.3 为 HDP 2.4 创建 POM 文件
9.4 Spark 和 Hadoop 故障排除
ND4J 的常见问题
9.5 DL4J 在 Spark 上的并行执行
最小的 Spark 训练示例
9.6 Spark 平台上的 DL4J API 最佳实践
9.7 多层感知器的 Spark 示例
9.7.1 建立 Spark MLP 网络架构
9.7.2 分布式训练与模型评估
9.7.3 构建和执行 DL4J Spark 作业
9.8 使用 Spark 和 LSTM 生成莎士比亚作品
9.8.1 建立 LSTM 网络架构
9.8.2 训练、跟踪进度、理解结果
9.9 基于 Spark 上的 CNN 进行 MNIST 建模
9.9.1 配置 Spark 作业和加载 MNIST 数据
9.9.2 建立 LeNet CNN 架构与训练
附录 A 人工智能是什么
A.1 历史回顾
A.1.1 定义深度学习
A.1.2 定义人工智能
A.2 如今驱动着人们对人工智能的兴趣的动力
A.3 寒冬将至
附录 B RL4J 与强化学习
前言
马尔可夫决策过程
术语
B.1 不同的设置
B.1.1 无模型
B.1.2 观察设置
B.1.3 单人对抗游戏
B.2 Q 学习
B.2.1 从策略到之后的神经网络
B.2.2 策略迭代
B.2.3 探索与开采
B.2.4 贝尔曼方程
B.2.5 初始状态采样
B.2.6 Q 学习的实现
B.2.7 对 Q(s,a) 建模
B.2.8 经验回放
B.2.9 卷积层与图像预处理
B.2.10 历史处理
B.2.11 双 Q 学习
B.2.12 裁剪
B.2.13 缩放奖励
B.2.14 优先回放
B.3 图形、可视化和 Q 均值
B.4 RL4J
B.5 小结
附录 C 每个人都需要了解的数字
附录 D 神经网络和反向传播:数学方法
D.1 介绍
D.2 多层感知器中的反向传播
附录 E 使用 ND4J API
E.1 设计与基本用法
E.1.1 理解 NDArray
E.1.2 ND4J 一般的语法
E.1.3 使用 NDArray 的基础知识
E.1.4 Dataset
E.2 创建输入向量
向量创建的基本方法
E.3 使用 MLLibUtil
E.3.1 从 INDArray 转换到 MLLib 向量
E.3.2 从 MLLib 向量转换到 INDArray
E.4 使用 DL4J 进行模型预测
同时使用 DL4J 和 ND4J
附录 F 使用 DataVec
F.1 为机器学习加载数据
F.2 为多层感知器加载 CSV 数据
F.3 为 CNN 加载图像数据
F.4 为 RNN 加载序列数据
F.5 数据转换:使用 DataVec 加工数据
F.5.1 DataVec 转换:关键概念
F.5.2 DataVec 转换功能:一个示例
附录 G 从源代码构建 DL4J
G.1 验证 Git 是否已安装
G.2 克隆 GitHub 上核心的 DL4J 的工程
G.3 通过压缩文件下载源代码
G.4 使用 Maven 构建源代码
附录 H 设置 DL4J 项目
H.1 创建一个新的 DL4J 项目
H.1.1 Java
H.1.2 使用 Maven
H.1.3 IDE
H.2 设置其他 Maven POM
ND4J 与 Maven
附录 I 为 DL4J 项目设置 GPU
I.1 将后端切换到 GPU
I.1.1 选择 GPU
I.1.2 在多 GPU 系统上进行训练
I.2 不同平台上的 CUDA
I.3 监控 GPU 性能
NVIDIA 系统管理接口
附录 J 解决 DL4J 安装上的问题
J.1 之前安装过 DL4J
J.2 从源代码安装时的内存错误
J.3 旧版本的 Maven
J.4 Maven 和 PATH 变量
J.5 不匹配的 JDK 版本
J.6 C++和其他开发工具
J.7 Windows 和包含路径
J.8 监控 GPU
J.9 使用 JVisualVM
J.10 使用 Clojure
J.11 OS X 上的浮点支持
J.12 Java 7 的 fork-join 漏洞
J.13 注意
J.13.1 其他本地库
J.13.2 检查 Maven 依赖
J.13.3 重新安装依赖
J.13.4 如果出现其他错误
J.14 不同平台
J.14.1 OS X
J.14.2 Windows
J.14.3 Linux
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/04/7UcJ9M00fwdpdAos.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 深度学习的数学 PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论