本书为软件工程师和数据科学家而编写,书中简明而全面地介绍了目前的神经网络和深度学习技术。全书展示了基于Keras框架、以Python编码的20多种有效的神经网络。
你将从本书中学到以下内容:
在大型神经网络上使用反向传播算法逐步优化函数
微调神经网络以改进结果质量
使用深度学习进行图像和音频处理
在特定的案例中使用递归神经张量网络(RNTN)以取得比标准词嵌入更好的效果
识别循环神经网络(RNN)适于解决的问题
探索自动编码机的实现过程
使用强化学习增强深层神经网络
全书通俗易懂,强调实际案例,适合广大的机器学习从业者和爱好者入门与实践。
作为一款轻量级、模块化的开源深度学习框架,Keras以容易上手、利于快速原型实现、能够与TensorFlow和Theano等后端计算平台很好兼容等优点,深受众多开发人员和研究人员的喜爱。
本书结合大量实例,简明扼要地介绍了目前热门的神经网络技术和深度学习技术。从经典的多层感知机到用于图像处理的深度卷积网络,从处理序列化数据的循环网络到伪造仿真数据的生成对抗网络,从词嵌入到AI游戏应用中的强化学习,本书带领读者一层一层揭开深度学习的面纱,并在逐渐清晰的理论框架下,提供多个Python编码实例,方便读者动手实践。
通过阅读本书,读者不仅能学会使用Keras快捷构建各个类型的深度网络,还可以按需自定义网络层和后端功能,从而提升自己的AI编程能力,在成为深度学习专家的路上更进一步。
第 1章 神经网络基础 1
1.1 感知机 2
第 一个Keras代码示例 3
1.2 多层感知机—第 一个神经网络的示例 3
1.2.1 感知机训练方案中的问题 4
1.2.2 激活函数—sigmoid 5
1.2.3 激活函数—ReLU 5
1.2.4 激活函数 6
1.3 实例—手写数字识别 6
1.3.1 One-hot编码—OHE 7
1.3.2 用Keras定义简单神经网络 7
1.3.3 运行一个简单的Keras网络并创建基线 10
1.3.4 用隐藏层改进简单网络 11
1.3.5 用dropout进一步改进简单网络 14
1.3.6 Keras中的不同优化器测试 16
1.3.7 增加训练轮数 20
1.3.8 控制优化器的学习率 20
1.3.9 增加内部隐藏神经元的数量 21
1.3.10 增加批处理的大小 22
1.3.11 识别手写数字的实验总结 22
1.3.12 采用正则化方法避免过拟合 22
1.3.13 超参数调优 24
1.3.14 输出预测 24
1.4 一种实用的反向传播概述 25
1.5 走向深度学习之路 26
1.6 小结 27
第 2章 Keras安装和API 28
2.1 安装Keras 28
2.1.1 第 1步—安装依赖项 28
2.1.2 第 2步—安装Theano 29
2.1.3 第3步—安装TensorFlow 29
2.1.4 第4步—安装Keras 30
2.1.5 第5步—测试Theano、TensorFlow和Keras 30
2.2 配置Keras 31
2.3 在Docker上安装Keras 32
2.4 在谷歌Cloud ML上安装Keras 34
2.5 在亚马逊AWS上安装Keras 36
2.6 在微软Azure上安装Keras 37
2.7 Keras API 39
2.7.1 从Keras架构开始 40
2.7.2 预定义神经网络层概述 40
2.7.3 预定义激活函数概述 43
2.7.4 损失函数概述 44
2.7.5 评估函数概述 44
2.7.6 优化器概述 44
2.7.7 一些有用的操作 44
2.7.8 保存和加载权重及模型结构 45
2.8 自定义训练过程的回调函数 45
2.8.1 检查点设置 45
2.8.2 使用TensorBoard 47
2.8.3 使用Quiver 47
2.9 小结 48
第3章 深度学习之卷积网络 49
3.1 深度卷积神经网络—DCNN 50
3.1.1 局部感受野 50
3.1.2 共享权重和偏置 51
3.1.3 池化层 51
3.2 DCNN示例—LeNet 52
3.2.1 用Keras构建LeNet代码 53
3.2.2 深度学习的本领 59
3.3 用深度学习网络识别CIFAR-10图像 60
3.3.1 用深度学习网络改进CIFAR-10的性能 64
3.3.2 通过数据增加改善CIFAR-10的性能 66
3.3.3 用CIFAR-10进行预测 68
3.4 用于大型图片识别的极深度卷积网络 69
3.4.1 用VGG-16网络识别猫 71
3.4.2 使用Keras内置的VGG-16网络模块 72
3.4.3 为特征提取回收内置深度学习模型 73
3.4.4 用于迁移学习的极深inception-v3网络 74
3.5 小结 76
第4章 生成对抗网络和WaveNet 78
4.1 什么是生成对抗网络 78
生成对抗网络的一些应用 80
4.2 深度卷积生成对抗网络 82
4.3 用Keras adversarial生成MNIST数据 85
4.4 用Keras adversarial生成CIFAR数据 91
4.5 WaveNet—一个学习如何产生音频的生成模型 99
4.6 小结 108
第5章 词嵌入 109
5.1 分布式表示 110
5.2 word2vec 110
5.2.1 skip-gram word2vec模型 111
5.2.2 CBOW word2vec模型 114
5.2.3 从模型中提取word2vec向量 116
5.2.4 使用word2vec的第三方实现 117
5.3 探索GloVe 121
5.4 使用预训练好的词向量 122
5.4.1 从头开始学习词向量 123
5.4.2 从word2vec中微调训练好的词向量 127
5.4.3 从GloVe中微调训练好的词向量 131
5.4.4 查找词向量 132
5.5 小结 136
第6章 循环神经网络—RNN 137
6.1 SimpleRNN单元 138
用Keras实现SimpleRNN—生成文本 139
6.2 RNN拓扑结构 143
6.3 梯度消失和梯度爆炸 145
6.4 长短期记忆网络—LSTM 146
用Keras实现LSTM—情感分析 148
6.5 门控循环单元—GRU 153
用Keras实现GRU—词性标注 154
6.6 双向RNN 160
6.7 有状态RNN 161
用Keras实现有状态LSTM—电量消费预测 161
6.8 其他RNN变体 167
6.9 小结 167
第7章 其他深度学习模型 169
7.1 Keras函数API 170
7.2 回归网络 172
Keras回归示例—预测空气中的苯含量 172
7.3 无监督学习—自动编码器 176
Keras自动编码器示例—句向量 178
7.4 构造深度网络 185
Keras示例—问答记忆网络 185
7.5 自定义Keras 192
7.5.1 Keras示例—使用lambda层 193
7.5.2 Keras示例—自定义归一化层 193
7.6 生成模型 196
7.6.1 Keras示例—Deep Dreaming 197
7.6.2 Keras示例—风格转换 204
7.7 小结 208
第8章 游戏中的AI 210
8.1 强化学习 211
8.1.1 最大化未来奖赏 212
8.1.2 Q学习 212
8.1.3 深度Q网络作为Q函数 213
8.1.4 探索和利用的平衡 214
8.1.5 经验回放,或经验值 215
8.2 示例—用Keras深度Q网络实现捕捉游戏 215
8.3 未来之路 226
8.4 小结 228
第9章 结束语 229
9.1 Keras 2.0—新特性 230
9.1.1 安装Keras 2.0 230
9.1.2 API的变化 231
绕开晦涩的理论和艰深的数学逻辑,你可以像搭建乐高积木一样搭建自己的深度学习模型,是不是很神奇呢?这就是Keras框架带给我们的乐趣。而本书作为一本展现诸多实现细节的指导书,定会成为你桌头案边的亲密伙伴。
——云从科技副总裁 张立
Keras是深度学习领域受欢迎的框架之一。译者李昉一直在集智俱乐部参与学术文章的翻译工作。本书的出版对有志于了解、学习深度学习的读者来说是一个非常好的消息。
——北京师范大学系统科学学院教授,博士生导师,集智俱乐部、AI学园创始人,腾讯研究院、阿里研究院、网络智库专家 张江
很高兴看到这本书中文译本的出版。本书译者都曾在我的培训班学习,他们为此付出很多时间。如果你了解一些深度学习理论,如果你想快速构建自己的应用,那么这本书无疑可以给你提供巨大的帮助。
——炼数成金创始人、首席科学家 黄志洪
Keras为支持快速实验而生,这个基于模块化和易扩展性的API一直以“user friendly”著称。作者Antonio Gulli作为谷歌在机器学习领域重量级专家之一,发表过很多篇有行业影响力的专业论述。本书是一本实用操作手册,译者也是深耕机器学习领域的先行者和实践者,强烈推荐给所有致力于在此领域摸索和创新的从业者。
——上海前隆信息科技有限公司数据中心总监 苏波
本书以由浅入深、由原理到场景的方式介绍了深度学习框架Keras的应用。通过基础神经网络到复杂模型的深度剖析,配以丰富的实例展示,让每一位读者都能深刻地体会到Keras及深度学习的魅力。本书的中文译本忠实于英文原著,讲解详尽,内容充实,是每一位深度学习的技术爱好者必读的书目,也是每一位Keras爱好者的常备宝典。
——Splunk系统架构师 张天犁