本书介绍学习深度学习的基础知识,了解机器学习流程:产生可交付模型的步骤,掌握进行预测,改进决策,并应用概率方法,以及通过分类和聚类对数据进行分组机器学习可以解决哪些问题。提出了一系列可以用来解决现实问题的算法,以及利用神经网络的深度学习技术。本书适合对于想要构建机器学习应用程序的专业人员。
我们需要这样的人,他能够梦想从未有过的事情,并且问自己为什么不能。
—约翰·F 肯尼迪在爱尔兰议会的演讲,1963年6月
人们对如今的人工智能持有两种观点,而且这两种观点并不是截然对立的。一种是绝大多数媒体所宣扬和追求的观点,而另一种则是IT社区宣扬和追求的观点。在这两大阵营中,都有一些真正的专家和权威人士。
媒体所宣扬的观点关注的是人工智能作为一个整体(无论是以已知还是未知的形式)可能对我们未来的生活产生的影响。IT社区(软件和数据科学家所属领域)所宣扬的观点认为,机器学习是新一代软件服务的基础,而新一代软件服务只是比现有服务更智能。
在媒体触及的大众与小得多的IT社区之间的中间地带是云服务团队。云服务团队每天开展研究工作,使技术水平不断提高,并发布新的服务,以便潜在地为新的和现有的应用程序添加智能。
位于人工智能金字塔底部的是经理和管理人员。一方面,他们渴望将从科技新闻中听到的那些令人惊叹的服务应用到业务中,以超越竞争对手;另一方面,在带着极大的希望开启项目后,随之而来的是数额惊人的账单。
人工智能不是一根魔杖。
人工智能不是按使用次数付费的服务。更糟糕的是,它既不是资本,也不是经营支出。
人工智能只是一种软件。
如果能从软件开发的角度来考虑—设置需求、找到可靠的合作伙伴、制定合理的预算、开展工作、在充分考虑敏捷性的前提下重新开始,那么,任何关于人工智能的商业决策都会更有效。
可是,真的就那么简单吗?
虽然人工智能与软件开发有关,但它与建立电子商务网站或预订平台并不完全一样。
如果你不清楚要解决的问题、问题的背景和要表达的观点,就不要开始人工智能项目。
不要以最接近的竞争者为唯一榜样来从事雄心勃勃的冒险项目。
如果你还没准备好花一大笔钱,就不要开始这样的项目。
你需要每次只解决一个痛点,构建一个跨功能的团队,并提供对数据的完全访问。
谁应该阅读本书
在准备本书的过程中,我们收到了很多关于章节结构及文字细节的反馈。我们至少对目录进行了三次大改。困难之处在于,我们写这本书的初衷是使其内容与众不同且具有创新性,追求的是一种与我们熟知的现实相去甚远的机器学习和软件开发理念。希望我们的愿景也是机器学习将来的愿景!
在数据科学的范畴下,我们把机器学习看作交付给开发人员的组件,可嵌入某些Web服务或桌面应用程序中。这看起来仍然是瀑布式结构,公司和企业经常谈论的敏捷在哪里?敏捷机器学习意味着数据科学家和开发人员是在一起工作的,业务分析师和领域专家也会加入团队。同时为了方便数据访问和操作,数据利益相关者—无论是IT、DevOps还是其他什么—也会加入团队。这就是一个恰到好处的敏捷团队。
我们看到了从数据科学到软件开发以及从软件开发到数据科学的技术融合(商业)需求。这本入门书籍对这两方面的读者都是有益的。在深入分析机器学习算法的原理之前,我们首先面向开发人员展开讨论,并展示MLNET的实际运行情况(涉及使用Python和不使用Python两种情况)。我们还面向需要了解更多软件需求的数据科学家进行了讨论。
如果你是一名软件开发人员,愿意将数据科学和机器学习技能添加到自己的技能库中,那么本书就是你的理想选择。如果你是一名数据科学家,愿意学习更多关于软件的知识,那么本书也是非常理想的选择。不过,这两类人都需要更多地了解对方的领域。
这就是本书所下的“赌注”。我们将其归类为“入门级”,因为它注重内容的广度而不是深度。书中提供了NET的例子,因为我们认为,尽管Python生态系统非常丰富和繁荣,但是没有理由不去寻找支持我们在更接近软件应用、软件服务和微服务的情况下进行机器学习的平台,最终可以使用任意的学习管道(包括TensorFlow、PyTorch及Python代码)。
谁不应该阅读本书
这是一本入门级的书,对基于MLNET平台的机器学习进行了广泛但清晰、准确的概述。如果你正在寻找大量的Python示例,那么本书并不理想。如果你正在寻找能在解决方案中复制和粘贴的示例(无论是Python还是MLNET),我们不确定这本书是否理想。如果你正在寻找算法背后的数学本质,或者一些算法实现的简单注释,这本书也不理想。(书中确实包含一些数学知识,但只是皮毛。)
章节安排
本书分为五个部分。第一部分简要介绍人工智能、智能软件的基础,以及机器学习项目在端到端解决方案中的基本实现步骤。第二部分重点介绍MLNET库,概述其核心部分,比如在回归和分类等常见问题中完成数据处理、训练及评估等任务。第三部分涉及一系列算法的数学细节,这些算法通常被训练来解决现实生活中的问题,包括回归器、决策树、集成方法、贝叶斯分类器、支持向量机、K–均值、在线梯度。第四部分致力于研究神经网络,当浅层算法都不适用时,神经网络可能会发挥作用。第五部分是关于人工智能(特别是机器学习)的商业愿景,粗略地回顾了云平台(特别是Azure平台)为数据处理和计算提供的运行时服务。
代码示例
本书中演示的所有代码,包括可能的勘
迪诺·埃斯波西托(Dino Esposito) 在程序开发领域拥有超过25年的经验,14次被评为微软最有价值专家(MVP),撰写了20多本书,包括畅销书Microsoft NET: Architecting Applications for the Enterprise,连续22年为《MSDN杂志》撰写专栏,并经常为微软及全球各类企业的程序开发人员做培训。目前担任BaxEnergy公司的数字战略师,专注于智慧城市和智慧能源等领域。弗朗西斯科·埃斯波西托(Francesco Esposito) 软件和AI公司Youbiquitous的创始人,并且运营着一家小型投资公司。他在青少年时期就为iOS、Android和Windows Phone等平台开发了多款应用程序,目前专注于数学和数据科学,特别关注水和医疗保健领域。
第一部分 机器学习基础第1章 人类是如何学习的 3迈向思考型机器 4机器推理的曙光 4哥德尔不完备定理 4计算机的形式化 5迈向人类思想的形式化 5人工智能学科的诞生 6学习原理 7什么是智能软件 7神经元是如何工作的 8大棒加胡萝卜法 14应变能力 15人工智能的形式 16原始智能 16专家系统 16自治系统 19人工情感的形式 20小结 22第2章 智能软件 23应用人工智能 23 软件智能的发展 24 专家系统 25通用人工智能 27 无监督学习 27 监督学习 29小结 32第3章 映射问题和算法 33基本问题 33 对象分类 34 结果预测 36 对象分组 38更复杂的问题 40 图像分类 41 目标检测 41 文本分析 42自动机器学习 42 AutoML平台概述 42 AutoML模型构建器实战 45小结 48第4章 机器学习解决方案的一般步骤 49数据收集 50 组织中的数据驱动文化 50 存储选项 51数据准备 52 提高数据质量 53 清洗数据 53 特征工程 54 最终确定训练数据集 56模型选择及训练 58 算法速查表 59 神经网络案例 61 评估模型性能 62模型部署 64 选择合适的主机平台 64 公开API 65小结 66第5章 数据因素 67数据质量 67 数据有效性 68 数据收集 69数据完整性 70 完备性 70 唯一性 70 及时性 71 准确性 71 一致性 71什么是数据科学家 71 工作中的数据科学家 72 数据科学家的工具箱 73 数据科学家和软件开发人员 73小结 74第二部分 NET中的机器学习第6章 NET方式 77为什么用/不用Python 78 为什么Python在机器学习中如此受欢迎 78 Python机器学习库的分类 80 基于Python模型的端到端解决方案 82MLNET简介 83 在MLNET中创建和使用模型 84 学习环境的要素 87小结 91第7章 实现MLNET管道 93从数据开始 93 探索数据集 94 应用公共数据转换 94 关于数据集的注意事项 95训练步骤 96 选择算法 96 测量算法的实际值 97 计划测试阶段 97 指标预览 98从客户端应用程序中预测价格 99 获取模型文件 99 设置ASPNET应用程序 99 预测出租车费用 100 设计适当的用户界面 102 质疑数据和解决问题的方法 103小结 103第8章 MLNET任务和算法 105MLNET的整体框架 105 涉及的类型和接口 105 数据表示 107 支持的目录 109分类任务 111 二进制分类 111 多类分类 116聚类任务 122 准备工作数据 122 训练模型 123 评估模型 124迁移学习 126 建立图像分类器的步骤 127 应用必要的数据转换 127 模型的构建和训练 129 关于迁移学习的补充说明 131小结 132第三部分 浅层学习基础第9章 机器学习的数学基础 135统计数据 135 均值 136 众数 138 中位数 139偏差和方差 141 方差 142 偏差 144数据表示 145 五数概括法 145 直方图 146 散点图 148 散点图矩阵 148 以适当的比例绘制 149小结 150第10章 机器学习的度量 151统计与机器学习 151 机器学习的终极目标 152 从统计模型到机器学习模型 153机器学习模型的评价 155 从数据集到预测 155 测量模型的精度 157为处理准备数据 162 缩放 162 标准化 163 归一化 163小结 163第11章 进行简单预测:线性回归 165问题 165 用数据指导预测结果 166 对关系做假设 167线性算法 169 总体思路 169 确定代价函数 170 普通的最小二乘算法 171 梯度下降算法 174 判断算法的好坏 178改进解决方案 178 多项式方法 178 正则化 179小结 180第12章 进行复杂的预测和决策:决策树 181问题 181 什么是树 182 机器学习中的树 183 基于树的算法示例 183基于树的算法的设计原理 185 决策树与专家系统 185 树算法的种类 186分类树 187 CART算法的工作原理 187 ID3算法的工作原理 191回归树 194 算法的工作原理 194 剪枝 195小结 196第13章 进行更好的决策:集成学习算法 197问题 197bagging技术 198 随机森林算法 198 算法步骤 200 优点与缺点 202boosting技术 203 boosting的功能 203 梯度boosting 206 优点与缺点 210小结 210第14章 概率方法:朴素贝叶斯 211贝叶斯统计快速入门 211 贝叶斯概率简介 212 基本符号 212 贝叶斯定理 214 一个实用的代码审查示例 215贝叶斯统计在分类中的应用 216 问题的初始表述 217 简化的有效分子式 217 贝叶斯分类器实践 218朴素贝叶斯分类器 219 通用算法 219 多项式朴素贝叶斯 220 伯努利朴素贝叶斯 223 高斯朴素贝叶斯 224朴素贝叶斯回归 226 贝叶斯线性回归的基础 226 贝叶斯线性回归的应用 228小结 228第15章 对数据进行分组:分类与聚类 229有监督分类的基本方法 230 K–近邻算法 230 算法步骤 232 应用场景 234支持向量机 235 算法概述 235 数学知识回顾 239 算法步骤 240无监督聚类 245 应用案例:缩减数据集 245 K–均值算法 246 K–模型算法 247 DBSCAN算法 248小结 251第四部分 深度学习基础第16章 前馈神经网络 255神经网络简史 255 McCulloch-Pitt神经元 255 前馈网络 256 更复杂的网络 256人工神经元的类型 257 感知机神经元 257 逻辑神经元 260训练神经网络 263 整体学习策略 263 反向传播算法 264小结 270第17章 神经网络的设计 273神经网络概览 273 激活函数 274 隐层 277 输出层 281构建神经网络 282 现成的框架 282 你的第一个Keras神经网络 284 神经网络与其他算法 287小结 289第18章 其他类型的神经网络 291前馈神经网络的常见问题 291递归神经网络 292 有状态神经网络的结构 292 LSTM神经网络 295卷积神经网络 298 图像分类与识别 298 卷积层 299 池化层 301 全连接层 303神经网络的进一步发展 304 生成对抗神经网络 304 自动编码器 305小结 307第19章 情感分析:端到端解决方案 309为训练准备数据 310 对问题进行形式化 310 获取数据 311 处理数据 311 关于中间格式的注意事项 313训练模型 313 选择生态系统 314 建立单词字典 314 选择训练器 315 网络的其他方面 319客户端应用 321 获取模型的输入 321 从模型中预测 322 将响应转化为可用信息 323小结 323第五部分 思考第20章 面向现实世界的AI云服务 327Azure认知服务 327Azure机器学习工作室 329 Azure机器学习服务 331 数据科学虚拟机 333本地服务 333 SQL Server机器学习服务 333 机器学习服务器 334微软数据处理服务 334 Azure数据湖 334 Azure Databricks 334 Azure HDInsight 335 用于Apache Spark的NET 335 Azure数据分享 336 Azure数据工厂 336小结 336第21章 人工智能的商业愿景 339工业界对AI的看法 339 挖掘潜能 339 AI可以为你做什么 340 面临的挑战 342端到端解决方案 343 我们就叫它咨询吧 344 软件和数据科学之间的界线 344 敏捷AI 346小结 349Contents PART I LAYING THE GROUNDWORK OF MACHINE LEARNING Chapter 1 How Humans Learn 3 The Journey Toward Thinking Machines 4 The Dawn of Mechanical Reasoning 4 Godel’s Incompleteness Theorems 4 Formalization of Computing Machines 5 Toward the Formalization of Human Thought 5 The Birth of Artificial Intelligence as a Discipline 6 The Biology of Learning 7 What Is Intelligent Software, Anyway? 7 How Neurons Work 8 The Carrot-and-Stick Approach 14 Adaptability to Changes 15 Artificial Forms of Intelligence 16 Primordial Intelligence