| 作者 |
| [印度] 桑塔努·帕塔纳亚克(Santanu Pattanayak)[澳] 图珊·加内格达拉(Thushan Ganegedara) |
| 丛书名 |
| 智能系统与技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781911191537 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------Python人工智能项目实战--------------------------- 通过结合深度学习和强化学习,帮助你构建智能而且实用的人工智能系统。本书涉及的项目涵盖众多领域,例如医疗健康、电子商务、专家系统、智能安防、移动应用和自动驾驶,使用的技术包括卷积神经网络、深度强化学习、基于LSTM的RNN、受限玻尔兹曼机、生成对抗网络、机器翻译和迁移学习。本书有关构建智能应用的理论知识将帮助读者使用有趣的方法来拓展项目,令其快速创建有影响力的AI应用。读完本书之后,你将有足够的能力建立自己的智能模型,轻松地解决来自任何领域的问题。 ---------------------------TensorFlow自然语言处理--------------------------- 本书首先介绍NLP和TensorFlow基础知识,然后介绍如何使用Word2vec(包括高级扩展)创建单词嵌入,将单词序列转换为可由深度学习算法访问的向量。关于经典深度学习算法的章节,如卷积神经网络(CNN)和递归神经网络(RNN),展示了句子分类和语言生成等重要的NLP任务。此外还介绍如何将高性能的RNN模型,如长短期记忆(long short memory, LSTM)单元应用于NLP任务,你还将探索神经机器翻译并实现一个神经机器翻译器。 |
| 目录 |
---------------------------Python人工智能项目实战--------------------------- 译者序 前言 作者简介 审校者简介 第1章 人工智能系统基础知识 1 1.1 神经网络 2 1.2 神经激活单元 5 1.2.1 线性激活单元 5 1.2.2 sigmoid激活单元 6 1.2.3 双曲正切激活函数 6 1.2.4 修正线性单元 7 1.2.5 softmax激活单元 9 1.3 用反向传播算法训练神经网络 9 1.4 卷积神经网络 12 1.5 循环神经网络 13 1.6 生成对抗网络 16 1.7 强化学习 18 1.7.1 Q学习 19 1.7.2 深度Q学习 20 1.8 迁移学习 21 1.9 受限玻尔兹曼机 22 1.10 自编码器 23 1.11 总结 24 第2章 迁移学习 26 2.1 技术要求 26 2.2 迁移学习简介 27 2.3 迁移学习和糖尿病视网膜病变检测 28 2.4 糖尿病视网膜病变数据集 29 2.5 定义损失函数 30 2.6 考虑类别不平衡问题 31 2.7 预处理图像 32 2.8 使用仿射变换生成额外数据 33 2.8.1 旋转 34 2.8.2 平移 34 2.8.3 缩放 35 2.8.4 反射 35 2.8.5 通过仿射变换生成额外的图像 36 2.9 网络架构 36 2.9.1 VGG16迁移学习网络 38 2.9.2 InceptionV3迁移学习网络 39 2.9.3 ResNet50迁移学习网络 39 2.10 优化器和初始学习率 40 2.11 交叉验证 40 2.12 基于验证对数损失的模型检查点 40 2.13 训练过程的Python实现 41 2.14 类别分类结果 50 2.15 在测试期间进行推断 50 2.16 使用回归而非类别分类 52 2.17 使用keras sequential工具类生成器 53 2.18 总结 57 第3章 神经机器翻译 58 3.1 技术要求 59 3.2 基于规则的机器翻译 59 3.2.1 分析阶段 59 3.2.2 词汇转换阶段 60 3.2.3 生成阶段 60 3.3 统计机器学习系统 60 3.3.1 语言模型 61 3.3.2 翻译模型 63 3.4 神经机器翻译 65 3.4.1 编码器–解码器模型 65 3.4.2 使用编码器–解码器模型进行推断 66 3.5 实现序列到序列的神经机器翻译 67 3.5.1 处理输入数据 67 3.5.2 定义神经翻译机器的模型 71 3.5.3 神经翻译机器的损失函数 73 3.5.4 训练模型 73 3.5.5 构建推断模型 74 3.5.6 单词向量嵌入 78 3.5.7 嵌入层 79 3.5.8 实现基于嵌入的NMT 79 3.6 总结 84 第4章 基于GAN的时尚风格迁移 85 4.1 技术要求 85 4.2 DiscoGAN 86 4.3 CycleGAN 88 4.4 学习从手绘轮廓生成自然手提包 89 4.5 预处理图像 89 4.6 DiscoGAN的生成器 91 4.7 DiscoGAN的判别器 93 4.8 构建网络和定义损失函数 94 4.9 构建训练过程 97 4.10 GAN训练中的重要参数值 99 4.11 启动训练 100 4.12 监督生成器和判别器的损失 101 4.13 DiscoGAN生成的样例图像 103 4.14 总结 104 第5章 视频字幕应用 105 5.1 技术要求 105 5.2 视频字幕中的CNN和LSTM 106 5.3 基于序列到序列的视频字幕系统 107 5.4 视频字幕系统数据集 109 5.5 处理视频图像以创建CNN特征 110 5.6 处理视频的带标签字幕 113 5.7 构建训练集和测试集 114 5.8 构建模型 115 5.8.1 定义模型的变量 116 5.8.2 编码阶段 117 5.8.3 解码阶段 117 5.8.4 计算小批量损失 118 5.9 为字幕创建单词词汇表 118 5.10 训练模型 119 5.11 训练结果 123 5.12 对未见过的视频进行推断 124 5.12.1 推断函数 126 5.12.2 评估结果 127 5.13 总结 128 第6章 智能推荐系统 129 6.1 技术要求 129 6.2 什么是推荐系统 129 6.3 基于潜在因子分解的推荐系统 131 6.4 深度学习与潜在因子协同过滤 132 6.5 SVD++ 136 6.6 基于受限玻尔兹曼机的推荐系统 138 6.7 对比分歧 139 6.8 使用RBM进行协同过滤 140 6.9 使用RBM实现协同过滤 142 6.9.1 预处理输入 143 6.9.2 构建RBM网络进行协作过滤 144 6.9.3 训练RBM 147 6.10 使用训练好的RBM进行推断 149 6.11 总结 150 第7章 用于电影评论情感分析的移动应用程序 151 7.1 技术要求 152 7.2 使用TensorFlow mobile构建Android移动应用程序 152 7.3 Android应用中的电影评论评分 153 7.4 预处理电影评论文本 154 7.5 构建模型 156 7.6 训练模型 157 7.7 将模型冻结为protobuf格式 159 7.8 为推断创建单词到表征的字典 161 7.9 应用程序交互界面设计 162 7.10 Android应用程序的核心逻辑 164 7.11 测试移动应用 168 7.12 总结 170 第8章 提供客户服务的AI聊天机器人 171 8.1 技术要求 172 8.2 聊天机器人的架构 172 8.3 基于LSTM的序列到序列模型 173 8.4 建立序列到序列模型 174 8.5 Twitter平台上的聊天机器人 174 8.5.1 构造聊天机器人的训练数据 175 8.5.2 将文本数据转换为单词索引 175 8.5.3 替换匿名用户名 176 8.5.4 定义模型 176 8.5.5 用于训练模型的损失函数 178 8.5.6 训练模型 179 8.5.7 从模型生成输出响应 180 8.5.8 所有代码连起来 180 8.5.9 开始训练 181 8.5.10 对一些输入推特的推断结果 181 8.6 总结 182 第9章 基于增强学习的无人驾驶 183 9.1 技术要求 183 9.2 马尔科夫决策过程 184 9.3 学习Q值函数 185 9.4 深度Q学习 186 9.5 形式化损失函数 186 9.6 深度双Q学习 187 9.7 实现一个无人驾驶车的代码 189 9.8 深度Q学习中的动作离散化 189 9.9 实现深度双Q值网络 190 9.10 设计智能体 191 9.11 自动驾驶车的环境 194 9.12 将所有代码连起来 197 9.13 训练结果 202 9.14 总结 203 第10章 从深度学习的角度看CAPTCHA 204 10.1 技术要求 205 10.2 通过深度学习破解CAPTCHA 205 10.2.1 生成基本的CAPTCHA 205 10.2.2 生成用于训练CAPTCHA破解器的数据 206 10.2.3 CAPTCHA破解器的CNN架构 208 10.2.4 预处理CAPTCHA图像 208 10.2.5 将CAPTCHA字符转换为类别 209 10.2.6 数据生成器 210 10.2.7 训练CAPTCHA破解器 211 10.2.8 测试数据集的准确性 212 10.3 通过对抗学习生成CAPTCHA 214 10.3.1 优化GAN损失 215 10.3.2 生成器网络 215 10.3.3 判别器网络 216 10.3.4 训练GAN 219 10.3.5 噪声分布 220 10.3.6 数据预处理 220 10.3.7 调用训练 221 10.3.8 训练期间CAPTCHA的质量 222 10.3.9 使用训练后的生成器创建CAPTCHA 224 10.4 总结 225 ---------------------------TensorFlow自然语言处理--------------------------- 译者序 前言 关于作者 关于审阅者 第1章 自然语言处理简介 1 1.1 什么是自然语言处理 1 1.2 自然语言处理的任务 2 1.3 传统的自然语言处理方法 3 1.3.1 理解传统方法 4 1.3.2 传统方法的缺点 7 1.4 自然语言处理的深度学习方法 8 1.4.1 深度学习的历史 8 1.4.2 深度学习和NLP的当前状况 9 1.4.3 理解一个简单的深层模型—全连接神经网络 10 1.5 本章之外的学习路线 12 1.6 技术工具简介 14 1.6.1 工具说明 15 1.6.2 安装Python和scikit-learn 15 1.6.3 安装Jupyter Notebook 15 1.6.4 安装TensorFlow 16 1.7 总结 17 第2章 理解TensorFlow 18 2.1 TensorFlow是什么 18 2.1.1 TensorFlow入门 19 2.1.2 TensorFlow客户端详细介绍 21 2.1.3 TensorFlow架构:当你执行客户端时发生了什么 21 2.1.4 Cafe Le TensorFlow:使用类比理解TensorFlow 23 2.2 输入、变量、输出和操作 24 2.2.1 在TensorFlow中定义输入 25 2.2.2 在TensorFlow中定义变量 30 2.2.3 定义TensorFlow输出 31 2.2.4 定义TensorFlow操作 31 2.3 使用作用域重用变量 40 2.4 实现我们的第一个神经网络 42 2.4.1 准备数据 43 2.4.2 定义TensorFLow图 43 2.4.3 运行神经网络 45 2.5 总结 46 第3章 Word2vec——学习词嵌入 48 3.1 单词的表示或含义是什么 49 3.2 学习单词表示的经典方法 49 3.2.1 WordNet—使用外部词汇知识库来学习单词表示 50 3.2.2 独热编码表示方式 53 3.2.3 TF-IDF方法 53 3.2.4 共现矩阵 54 3.3 Word2vec—基于神经网络学习单词表示 55 3.3.1 练习:queen = king – he + she吗 56 3.3.2 为学习词嵌入定义损失函数 58 3.4 skip-gram算法 59 3.4.1 从原始文本到结构化的数据 59 3.4.2 使用神经网络学习词嵌入 60 3.4.3 使用TensorFlow实现skip-gram 67 3.5 连续词袋算法 69 3.6 总结 71 第4章 高级Word2vec 72 4.1 原始skip-gram算法 72 4.1.1 实现原始skip-gram算法 73 4.1.2 比较原始skip-gram算法和改进的skip-gram算法 75 4.2 比较skip-gram算法和CBOW算法 75 4.2.1 性能比较 77 4.2.2 哪个更胜一筹:skip-gram还是CBOW 79 4.3 词嵌入算法的扩展 81 4.3.1 使用unigram分布进行负采样 81 4.3.2 实现基于unigram的负采样 81 4.3.3 降采样:从概率上忽视常用词 83 4.3.4 实现降采样 84 4.3.5 比较CBOW及其扩展算法 84 4.4 最近的skip-gram和CBOW的扩展算法 85 4.4.1 skip-gram算法的限制 85 4.4.2 结构化skip-gram算法 85 4.4.3 损失函数 86 4.4.4 连续窗口模型 87 4.5 GloVe:全局向量表示 88 4.5.1 理解GloVe 88 4.5.2 实现GloVe 89 4.6 使用Word2vec进行文档分类 90 4.6.1 数据集 91 4.6.2 用词向量进行文档分类 91 4.6.3 实现:学习词嵌入 92 4.6.4 实现:词嵌入到文档嵌入 92 4.6.5 文本聚类以及用t-SNE可视化文档嵌入 93 4.6.6 查看一些特异点 94 4.6.7 实现:用K-means对文档进行分类/聚类 95 4.7 总结 96 第5章 用卷积神经网络进行句子分类 97 5.1 介绍卷积神经网络 97 5.1.1 CNN基础 97 5.1.2 卷积神经网络的力量 100 5.2 理解卷积神经网络 100 5.2.1 卷积操作 100 5.2.2 池化操作 103 5.2.3 全连接层 104 5.2.4 组合成完整的CNN 105 5.3 练习:在MNIST数据集上用CNN进行图片分类 105 5.3.1 关于数据 106 5.3.2 实现CNN 106 5.3.3 分析CNN产生的预测结果 108 5.4 用CNN进行句子分类 109 5.4.1 CNN结构 110 5.4.2 随时间池化 112 5.4.3 实现:用CNN进行句子分类 112 5.5 总结 115 第6章 递归神经网络 116 6.1 理解递归神经网络 116 6.1.1 前馈神经网络的问题 117 6.1.2 用递归神经网络进行建模 118 6.1.3 递归神经网络的技术描述 119 6.2 基于时间的反向传播 119 6.2.1 反向传播的工作原理 120 6.2.2 为什么RNN不能直接使用反向传播 120 6.2.3 基于时间的反向传播:训练RNN 121 6.2.4 截断的BPTT:更有效地训练RNN 121 6.2.5 BPTT的限制:梯度消失和梯度爆炸 122 6.3 RNN的应用 123 6.3.1 一对一RNN 123 6.3.2 一对多RNN 123 6.3.3 多对一RNN 124 6.3.4 多对多RNN 124 6.4 用RNN产生文本 125 6.4.1 定义超参数 125 6.4.2 将输入随时间展开用于截断的BPTT 125 6.4.3 定义验证数据集 126 6.4.4 定义权重和偏置 126 6.4.5 定义状态持续变量 127 6.4.6 用展开的输入计算隐藏状态和输出 127 6.4.7 计算损失 128 6.4.8 在新文本片段的开头重置状态 128 6.4.9 计算验证输出 128 6.4.10 计算梯度和优化 129 6.4.11 输出新生成的文本块 129 6.5 评估RNN的文本结果输出 130 6.6 困惑度:衡量文本结果的质量 131 6.7 有上下文特征的递归神经网络:更长记忆的RNN 132 6.7.1 RNN-CF的技术描述 132 6.7.2 实现RNN-CF 133 6.7.3 RNN-CF产生的文本 138 6.8 总结 140 第7章 长短期记忆网络 142 7.1 理解长短期记忆网络 142 7.1.1 LSTM是什么 143 7.1.2 更详细的LSTM 144 7.1.3 LSTM与标准RNN的区别 149 7.2 LSTM如何解决梯度消失问题 150 7.2.1 改进LSTM 152 7.2.2 贪婪采样 153 7.2.3 集束搜索 153 7.2.4 使用词向量 154 7.2.5 双向LSTM(BiLSTM) 155 7.3 其他LSTM的变体 156 7.3.1 窥孔连接 156 7.3.2 门循环单元 157 7.4 总结 159 第8章 LSTM应用:文本生成 160 8.1 数据集 160 8.1.1 关于数据集 160 8.1.2 数据预处理 162 8.2 实现LSTM 162 8.2.1 定义超参数 163 8.2.2 定义参数 163 8.2.3 定义LSTM单元及操作 165 8.2.4 定义输入和标签 165 8.2.5 定义处理序列数据所需的序列计算 166 8.2.6 定义优化器 167 8.2.7 随时间衰减学习率 167 8.2.8 做预测 168 8.2.9 计算困惑度(损失) 168 8.2.10 重置状态 169 8.2.11 贪婪采样避免单峰 169 8.2.12 生成新文本 169 8.2.13 生成的文本样例 170 8.3 LSTM与窥孔LSTM和GRU对比 171 8.3.1 标准LSTM 171 8.3.2 门控循环单元(GRU) 172 8.3.3 窥孔LSTM 174 8.3.4 训练和验证随时间的困惑度 175 8.4 改进LSTM:集束搜索 176 8.4.1 实现集束搜索 177 8.4.2 集束搜索生成文本的示例 179 8.5 LSTM改进:用单词替代n-gram生成文本 179 8.5.1 维度灾难 179 8.5.2 Word2vec补救 180 8.5.3 使用Word2vec生成文本 180 8.5.4 使用LSTM-Word2vec和集束搜索生成的文本示例 181 8.5.5 随时间困惑度 182 8.6 使用TensorFlow RNN API 183 8.7 总结 186 第9章 LSTM应用:图像标题生成 188 9.1 了解数据 188 9.1.1 ILSVRC ImageNet数据集 189 9.1.2 MS-COCO数据集 189 9.2 图像标题生成实现路径 191 9.3 使用CNN提取图像特征 193 9.4 实现:使用VGG-16加载权重和推理 193 9.4.1 构建和更新变量 194 9.4.2 预处理输入 195 9.4.3 VGG-16推断 196 9.4.4 提取图像的向量化表达 197 9.4.5 使用VGG-16预测类别概率 197 9.5 学习词嵌入 198 9.6 准备输入LSTM的标题 198 9.7 生成LSTM的数据 199 9.8 定义LSTM 201 9.9 定量评估结果 203 9.9.1 BLEU 203 9.9.2 ROUGE 204 9.9.3 METEOR 204 9.9.4 CIDEr 206 9.9.5 模型随着时间变化的BLEU-4 206 9.10 为测试图像生成标题 207 9.11 使用TensorFlow RNN API和预训练的GloVe词向量 210 9.11.1 加载GloVe词向量 210 9.11.2 清洗数据 212 9.11.3 使用TensorFlow RNN API和预训练的词嵌入 213 9.12 总结 218 第10章 序列到序列学习:神经机器翻译 220 10.1 机器翻译 220 10.2 机器翻译简史 221 10.2.1 基于规则的翻译 221 10.2.2 统计机器翻译(SMT) 222 10.2.3 神经机器翻译(NMT) 223 10.3 理解神经机器翻译 225 10.3.1 NMT原理 225 10.3.2 NMT架构 226 10.4 为NMT系统准备数据 228 10.4.1 训练阶段 229 10.4.2 反转源句 229 10.4.3 测试阶段 230 10.5 训练NMT 230 10.6 NMT推理 231 10.7 BLEU评分:评估机器翻译系统 232 10.7.1 修正的精确度 232 10.7.2 简短惩罚项 233 10.7.3 最终BLEU得分 233 10.8 从头开始实现NMT:德语到英语的翻译 233 10.8.1 数据介绍 234 10.8.2 处理数据 234 10.8.3 学习词嵌入 235 10.8.4 定义编码器和解码器 236 10.8.5 定义端到端输出计算 238 10.8.6 翻译结果 239 10.9 结合词嵌入训练NMT 241 10.9.1 最大化数据集词汇表和预训练词嵌入之间的匹配 241 10.9.2 将嵌入层定义为TensorFlow变量 243 10.10 改进NMT 245 10.10.1 教师强迫 246 10.10.2 深度LSTM 247 10.11 注意力 247 10.11.1 突破上下文向量瓶颈 247 10.11.2 注意力机制细节 248 10.11.3 注意力NMT的翻译结果 253 10.11.4 源句子和目标句子注意力可视化 254 10.12 序列到序列模型的其他应用:聊天机器人 256 10.12.1 训练聊天机器人 256 10.12.2 评估聊天机器人:图灵测试 257 10.13 总结 258 第11章 自然语言处理的现状与未来 259 11.1 NLP现状 259 11.1.1 词嵌入 260 11.1.2 神经机器翻译 264 11.2 其他领域的渗透 266 11.2.1 NLP与计算机视觉结合 266 11.2.2 强化学习 268 11.2.3 NLP生成式对抗网络 269 11.3 走向通用人工智能 270 11.3.1 一个模型学习全部 271 11.3.2 联合多任务模型:为多个NLP任务生成神经网络 272 11.4 社交媒体NLP 273 11.4.1 社交媒体中的谣言检测 274 11.4.2 社交媒体中的情绪检测 274 11.4.3 分析推特中的政治框架 274 11.5 涌现的新任务 275 11.5.1 讽刺检测 275 11.5.2 语言基础 276 11.5.3 使用LSTM略读文本 276 11.6 新兴的机器学习模型 277 11.6.1 阶段LSTM 277 11.6.2 扩张RNN(DRNN) 278 11.7 总结 278 11.8 参考文献 279 附录 数学基础与高级TensorFlow 282 |