内容简介
人工智能是近年来全球火热的研究领域之一,尤其是随着深度学习算法研究的突破,人工智能技术被应用到图片识别、机器翻译、语音助手、自动驾驶等一系列领域中,取得了前所未有的智能水平。深度学习算法涵盖的内容非常前沿和广袤,国内外出版的相关书籍并不算多,有些侧重于理论层面的推导,有些侧重于框架API的介绍,鲜有能结合深度学习算法理论和实战讲解的教材。为了使读者能够深刻理解深度学习算法精髓,本书以探索问题式叙述风格展开,从最简单的人工智能问题入手,一步步地引导读者分析和解决并发现新的问题,重温当年算法设计人员的探索之路。本书介绍了深度学习算法所需要的基础数学理论、TensorFlow 2.x框架的基本使用方法、回归问题、分类问题、反向传播算法、梯度下降算法、过拟合、全连接网络、卷积神经网络、循环神经网络、自编码器、生成对抗网络、强化学习、迁移学习等主流和前沿知识。针对每个算法或模型,本书均详细分析了采用TensorFlow框架的实现方法,并基于多个常见的经典数据集进行了算法模型的实战,如基于MNIST和CIFAR10数据集的图片识别实战、基于IMDB数据集的文本分析实战、基于动漫头像数据集的图片生成实战和基于OpenAI Gym环境的平衡杆游戏实战等。通过原理与实战结合的方式,读者可最大限度地理解算法理论,同时提升工程实现能力。本书可作为高等院校人工智能课程的教材,也可供从事人工智能、深度学习算法研究与开发人员自学或参考。
作品目录
第1章人工智能绪论
1.1人工智能简介
1.1.1人工智能
1.1.2机器学习
1.1.3神经网络与深度学习
1.2神经网络发展简史
1.2.1浅层神经网络
1.2.2深度学习
1.3深度学习特点
1.3.1数据量
1.3.2计算力
1.3.3网络规模
1.3.4通用智能
1.4深度学习应用
1.4.1计算机视觉
1.4.2自然语言处理
1.4.3强化学习
1.5深度学习框架
1.5.1主流框架
1.5.2TensorFlow 2与TensorFlow 1.x
1.5.3功能演示
1.6开发环境安装
1.6.1Anaconda安装
1.6.2CUDA安装
1.6.3TensorFlow安装
1.6.4常用编辑器安装
参考文献
第2章回归问题
2.1神经元模型
2.2优化方法
2.3线性模型实战
2.4线性回归
参考文献
第3章分类问题
3.1手写数字图片数据集
3.2模型构建
3.3误差计算
3.4真的解决了吗
3.5非线性模型
3.6表达能力
3.7优化方法
3.8手写数字图片识别体验
3.8.1网络搭建
3.8.2模型训练
第4章TensorFlow基础
4.1数据类型
4.1.1数值类型
4.1.2字符串类型
4.1.3布尔类型
4.2数值精度
4.2.1读取精度
4.2.2类型转换
4.3待优化张量
4.4创建张量
4.4.1从数组、列表对象创建
4.4.2创建全0或全1张量
4.4.3创建自定义数值张量
4.4.4创建已知分布的张量
4.4.5创建序列
4.5张量的典型应用
4.5.1标量
4.5.2向量
4.5.3矩阵
4.5.4三维张量
4.5.5四维张量
4.6索引与切片
4.6.1索引
4.6.2切片
4.6.3小结
4.7维度变换
4.7.1改变视图
4.7.2增加、删除维度
4.7.3交换维度
4.7.4复制数据
4.8Broadcasting
4.9数学运算
4.9.1加、减、乘、除运算
4.9.2乘方运算
4.9.3指数和对数运算
4.9.4矩阵相乘运算
4.10前向传播实战
第5章TensorFlow进阶
5.1合并与分割
5.1.1合并
5.1.2分割
5.2数据统计
5.2.1向量范数
5.2.2最值、均值、和
5.3张量比较
5.4填充与复制
5.4.1填充
5.4.2复制
5.5数据限幅
5.6高级操作
5.6.1tf.gather
5.6.2tf.gather_nd
5.6.3tf.boolean_mask
5.6.4tf.where
5.6.5scatter_nd
5.6.6meshgrid
5.7经典数据集加载
5.7.1随机打散
5.7.2批训练
5.7.3预处理
5.7.4循环训练
5.8MNIST测试实战
第6章神经网络
6.1感知机
6.2全连接层
6.2.1张量方式实现
6.2.2层方式实现
6.3神经网络
6.3.1张量方式实现
6.3.2层方式实现
6.3.3优化目标
6.4激活函数
6.4.1Sigmoid
6.4.2ReLU
6.4.3LeakyReLU
6.4.4tanh
6.5输出层设计
6.5.1普通实数空间
6.5.2[0,1]区间
6.5.3[0,1]区间,和为1
6.5.4[-1,1]
6.6误差计算
6.6.1均方差误差函数
6.6.2交叉熵损失函数
6.7神经网络类型
6.7.1卷积神经网络
6.7.2循环神经网络
6.7.3注意力(机制)网络
6.7.4图卷积神经网络
6.8汽车油耗预测实战
6.8.1数据集
6.8.2创建网络
6.8.3训练与测试
参考文献
第7章反向传播算法
7.1导数与梯度
7.2导数常见性质
7.2.1基本函数的导数
7.2.2常用导数性质
7.2.3导数求解实战
7.3激活函数导数
7.3.1Sigmoid函数导数
7.3.2ReLU函数导数
7.3.3LeakyReLU函数导数
7.3.4tanh函数梯度
7.4损失函数梯度
7.4.1均方误差函数梯度
7.4.2交叉熵函数梯度
7.5全连接层梯度
7.5.1单神经元梯度
7.5.2全连接层梯度
7.6链式法则
7.7反向传播算法
7.8Himmelblau函数优化实战
7.9反向传播算法实战
7.9.1数据集
7.9.2网络层
7.9.3网络模型
7.9.4网络训练
7.9.5网络性能
参考文献
第8章Keras高层接口
8.1常见功能模块
8.1.1常见网络层类
8.1.2网络容器
8.2模型装配、训练与测试
8.2.1模型装配
8.2.2模型训练
8.2.3模型测试
8.3模型保存与加载
8.3.1张量方式
8.3.2网络方式
8.3.3SavedModel方式
8.4自定义网络简介
8.4.1自定义网络层
8.4.2自定义网络
8.5模型乐园
8.6测量工具
8.6.1新建测量器
8.6.2写入数据
8.6.3读取统计信息
8.6.4清除状态
8.6.5准确率统计实战
8.7可视化
8.7.1模型端
8.7.2浏览器端
第9章过拟合
9.1模型的容量
9.2欠拟合与过拟合
9.2.1欠拟合
9.2.2过拟合
9.3数据集划分
9.3.1验证集与超参数
9.3.2提前停止
9.4模型设计
9.5正则化
9.5.1L0正则化
9.5.2L1正则化
9.5.3L2正则化
9.5.4正则化效果
9.6Dropout
9.7数据增强
9.7.1旋转
9.7.2翻转
9.7.3裁剪
9.7.4生成数据
9.7.5其他方式
9.8过拟合问题实战
9.8.1构建数据集
9.8.2网络层数的影响
9.8.3Dropout的影响
9.8.4正则化的影响
参考文献
第10章卷积神经网络
10.1全连接网络的问题
10.1.1局部相关性
10.1.2权值共享
10.1.3卷积运算
10.2卷积神经网络
10.2.1单通道输入和单卷积核
10.2.2多通道输入和单卷积核
10.2.3多通道输入、多卷积核
10.2.4步长
10.2.5填充
10.3卷积层实现
10.3.1自定义权值
10.3.2卷积层类
10.4LeNet-5实战
10.5表示学习
10.6梯度传播
10.7池化层
10.8BatchNorm层
10.8.1前向传播
10.8.2反向更新
10.8.3BN层实现
10.9经典卷积网络
10.9.1AlexNet
10.9.2VGG系列
10.9.3GoogLeNet
10.10CIFAR10与VGG13实战
10.11卷积层变种
10.11.1空洞卷积
10.11.2转置卷积
10.11.3分离卷积
10.12深度残差网络
10.12.1ResNet原理
10.12.2ResBlock实现
10.13DenseNet
10.14CIFAR10与ResNet18实战
参考文献
第11章循环神经网络
11.1序列表示方法
11.1.1Embedding层
11.1.2预训练的词向量
11.2循环神经网络
11.2.1全连接层可行吗
11.2.2权值共享
11.2.3全局语义
11.2.4循环神经网络原理
11.3梯度传播
11.4RNN层使用方法
11.4.1SimpleRNNCell
11.4.2多层SimpleRNNCell网络
11.4.3SimpleRNN层
11.5RNN情感分类问题实战
11.5.1数据集
11.5.2网络模型
11.5.3训练与测试
11.6梯度弥散和梯度爆炸
11.6.1梯度裁剪
11.6.2梯度弥散
11.7RNN短时记忆
11.8LSTM原理
11.8.1遗忘门
11.8.2输入门
11.8.3刷新Memory
11.8.4输出门
11.8.5小结
11.9LSTM层使用方法
11.9.1LSTMCell
11.9.2LSTM层
11.10GRU简介
11.10.1复位门
11.10.2更新门
11.10.3GRU使用方法
11.11LSTM/GRU情感分类问题再战
11.11.1LSTM模型
11.11.2GRU模型
11.12预训练的词向量
参考文献
第12章自编码器
12.1自编码器原理
12.2FashionMNIST图片重建实战
12.2.1Fashion MNIST数据集
12.2.2编码器
12.2.3解码器
12.2.4自编码器
12.2.5网络训练
12.2.6图片重建
12.3自编码器变种
12.3.1Denoising Auto-Encoder
12.3.2Dropout Auto-Encoder
12.3.3Adversarial Auto-Encoder
12.4变分自编码器
12.4.1VAE原理
12.4.2Reparameterization Trick
12.5VAE图片生成实战
12.5.1VAE模型
12.5.2Reparameterization技巧
12.5.3网络训练
12.5.4图片生成
参考文献
第13章生成对抗网络
13.1博弈学习实例
13.2GAN原理
13.2.1网络结构
13.2.2网络训练
13.2.3统一目标函数
13.3DCGAN实战
13.3.1动漫图片数据集
13.3.2生成器
13.3.3判别器
13.3.4训练与可视化
13.4GAN变种
13.4.1DCGAN
13.4.2InfoGAN
13.4.3CycleGAN
13.4.4WGAN
13.4.5Equal GAN
13.4.6Self-Attention GAN
13.4.7BigGAN
13.5纳什均衡
13.5.1判别器状态
13.5.2生成器状态
13.5.3纳什均衡点
13.6GAN训练难题
13.6.1超参数敏感
13.6.2模式崩塌
13.7WGAN原理
13.7.1JS散度的缺陷
13.7.2EM距离
13.7.3WGAN-GP
13.8WGAN-GP实战
参考文献
第14章强化学习
14.1先睹为快
14.1.1平衡杆游戏
14.1.2Gym平台
14.1.3策略网络
14.1.4梯度更新
14.1.5平衡杆游戏实战
14.2强化学习问题
14.2.1马尔科夫决策过程
14.2.2目标函数
14.3策略梯度方法
14.3.1REINFORCE算法
14.3.2原始策略梯度的改进
14.3.3带基准的REINFORCE算法
14.3.4重要性采样
14.3.5PPO算法
14.3.6PPO实战
14.4值函数方法
14.4.1值函数
14.4.2值函数估计
14.4.3策略改进
14.4.4SARSA算法
14.4.5DQN算法
14.4.6DQN变种
14.4.7DQN实战
14.5Actor-Critic方法
14.5.1Advantage AC算法
14.5.2A3C算法
14.5.3A3C实战
参考文献
第15章自定义数据集
15.1精灵宝可梦数据集
15.2自定义数据集加载
15.2.1创建编码表
15.2.2创建样本和标签表格
15.2.3数据集划分
15.3宝可梦数据集实战
15.3.1创建Dataset对象
15.3.2数据预处理
15.3.3创建模型
15.3.4网络训练与测试
15.4迁移学习
15.4.1迁移学习原理
15.4.2迁移学习实战
· · · · · ·
作者简介
龙良曲:网名“龙龙老师”,毕业于中南大学,曾担任新加坡国立大学助理研究员,专注于深度学习领域的前沿算法研究。担任网易云课堂“深度学习与PyTorch入门实战”“深度学习与TensorFlow2入门实战”等视频课程的主讲教师,帮助无数学员快速掌握深度学习算法知识,课程广受好评。