编辑推荐
本书为软件工程师和数据科学家而编写,书中简明而全面地介绍了目前的神经网络和深度学习技术。全书展示了基于Keras框架、以Python编码的20多种有效的神经网络。你将从本书中学到以下内容:在大型神经网络上使用反向传播算法逐步优化函数微调神经网络以改进结果质量使用深度学习进行图像和音频处理在特定的案例中使用递归神经张量网络(RNTN)以取得比标准词嵌入更好的效果识别循环神经网络(RNN)适于解决的问题探索自动编码机的实现过程使用强化学习增强深层神经网络全书通俗易懂,强调实际案例,适合广大的机器学习从业者和爱好者入门与实践。
内容简介
作为一款轻量级、模块化的开源深度学习框架,Keras以容易上手、利于快速原型实现、能够与TensorFlow和Theano等后端计算平台很好兼容等优点,深受众多开发人员和研究人员的喜爱。本书结合大量实例,简明扼要地介绍了目前热门的神经网络技术和深度学习技术。从经典的多层感知机到用于图像处理的深度卷积网络,从处理序列化数据的循环网络到伪造仿真数据的生成对抗网络,从词嵌入到AI游戏应用中的强化学习,本书引领读者一层一层揭开深度学习的面纱,并在逐渐清晰的理论框架下,提供多个Python编码实例,方便读者动手实践。通过阅读本书,读者不仅能学会使用Keras快捷构建各个类型的深度网络,还可以按需自定义网络层和后端功能,从而提升自己的AI编程能力,在成为深度学习专家的路上更进一步。
作者简介
作者简介Antonio Gulli是企业领导和软件部门高管,具备创新精神和执行力,并乐于发现和管理优选高科技人才。他是搜索引擎、在线服务、机器学习、信息检索、数据分析以及云计算等多方面的专家。他幸运地拥有欧洲4个不同国家的工作经验,并管理过来自欧洲和美国6个不同国家的员工。Antonio在出版业(Elsevier)、消费者互联网(Ask.com 和Tiscali)以及高科技研发(微软和谷歌)等多个跨度的行业里历任CEO、GM、CTO、副总裁、总监及区域主管。Sujit Pal是Elsevier Labs技术研发主管,致力于构建围绕研发内容和元数据的智能系统。他的主要兴趣包括信息检索、本体论、自然语言处理、机器学习,以及分布式处理。他现在的工作是利用深度学习模型对图像进行分类和相似度识别。在此之前,他在卫生保健行业工作,帮助构建基于本体论的语义搜索、关联广告,以及EMR数据处理平台。他在他的博客Salmon Run上发表技术文章。译者简介 王海玲,大学毕业于吉林大学计算机系,从小喜爱数学,曾获得华罗庚数学竞赛全国二等奖。拥有世界500强企业多年研发经验。作为项目骨干成员,参与过美国惠普实验室机器学习项目。 李昉,毕业于东北大学自动化系,大学期间曾获得“挑战杯”全国一等奖。拥有世界500强企业多年研发经验,随后加入互联网创业公司。2013年开始带领研发团队将大数据分析运用于“预订电商”价格分析预测(《IT经理世界》2013年第6期)。现在中体彩*运营公司负责大数据和机器学习方面的研发。同时是集智俱乐部成员,参与翻译人工智能图书《Deep Thinking》。中文版审校者简介于立国,现任国美大数据研究院研发总监,曾任知名上市互联网广告公司——品众互动研发总监,也曾在Adobe数字化营销部门担任负责人,对大数据、人工智能、互联网广告领域深有研究。
目录
- 第 1章 神经网络基础 1
- 1.1感知机2
- 第 一个Keras代码示例3
- 1.2多层感知机—第 一个神经网络的示例3
- 1.2.1感知机训练方案中的问题4
- 1.2.2激活函数—sigmoid5
- 1.2.3激活函数—ReLU5
- 1.2.4激活函数6
- 1.3实例—手写数字识别6
- 1.3.1One-hot编码—OHE7
- 1.3.2用Keras定义简单神经网络7
- 1.3.3运行一个简单的Keras网络并创建基线10
- 1.3.4用隐藏层改进简单网络11
- 1.3.5用dropout进一步改进简单网络14
- 1.3.6Keras中的不同优化器测试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安装和API28
- 2.1安装Keras28
- 2.1.1第 1步—安装依赖项28
- 2.1.2第 2步—安装Theano29
- 2.1.3第3步—安装TensorFlow29
- 2.1.4第4步—安装Keras30
- 2.1.5第5步—测试Theano、TensorFlow和Keras30
- 2.2配置Keras31
- 2.3在Docker上安装Keras32
- 2.4在谷歌Cloud ML上安装Keras34
- 2.5在亚马逊AWS上安装Keras36
- 2.6在微软Azure上安装Keras37
- 2.7Keras API39
- 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使用TensorBoard47
- 2.8.3使用Quiver47
- 2.9小结48
- 第3章深度学习之卷积网络49
- 3.1深度卷积神经网络—DCNN50
- 3.1.1局部感受野50
- 3.1.2共享权重和偏置51
- 3.1.3池化层51
- 3.2DCNN示例—LeNet52
- 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章生成对抗网络和WaveNet78
- 4.1什么是生成对抗网络78
- 生成对抗网络的一些应用80
- 4.2深度卷积生成对抗网络82
- 4.3用Keras adversarial生成MNIST数据85
- 4.4用Keras adversarial生成CIFAR数据91
- 4.5WaveNet—一个学习如何产生音频的生成模型99
- 4.6小结108
- 第5章词嵌入109
- 5.1分布式表示110
- 5.2word2vec110
- 5.2.1skip-gram word2vec模型111
- 5.2.2CBOW word2vec模型114
- 5.2.3从模型中提取word2vec向量116
- 5.2.4使用word2vec的第三方实现117
- 5.3探索GloVe121
- 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章循环神经网络—RNN137
- 6.1SimpleRNN单元138
- 用Keras实现SimpleRNN—生成文本139
- 6.2RNN拓扑结构143
- 6.3梯度消失和梯度爆炸145
- 6.4长短期记忆网络—LSTM146
- 用Keras实现LSTM—情感分析148
- 6.5门控循环单元—GRU153
- 用Keras实现GRU—词性标注154
- 6.6双向RNN160
- 6.7有状态RNN161
- 用Keras实现有状态LSTM—电量消费预测161
- 6.8其他RNN变体167
- 6.9小结167
- 第7章其他深度学习模型169
- 7.1Keras函数API170
- 7.2回归网络172
- Keras回归示例—预测空气中的苯含量172
- 7.3无监督学习—自动编码器176
- Keras自动编码器示例—句向量178
- 7.4构造深度网络185
- Keras示例—问答记忆网络185
- 7.5自定义Keras192
- 7.5.1Keras示例—使用lambda层193
- 7.5.2Keras示例—自定义归一化层193
- 7.6生成模型196
- 7.6.1Keras示例—Deep Dreaming197
- 7.6.2Keras示例—风格转换204
- 7.7小结208
- 第8章游戏中的AI210
- 8.1强化学习211
- 8.1.1*大化未来奖赏212
- 8.1.2Q学习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.1Keras 2.0—新特性230
- 9.1.1安装Keras 2.0230
- 9.1.2API的变化231