译者序
机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。随着计算机软硬件技术的不断发展,机器学习正在悄然改变世界。深度学习(Deep Learning)是机器学习的一个分支和新的研究方向,它能够使计算机通过层次概念来学习经验和理解世界,更接近机器学习实现人工智能的最初目标。深度学习在数据挖掘、机器学习、机器翻译、自然语言处理、个性推荐,以及其他相关领域都取得了很多成果。
在开始深度学习项目之前,选择一个合适的大数据处理框架是非常重要的,选择一个合适的框架能起到事半功倍的作用。Spark是一个以声明的方式,围绕速度、易用性和复杂分析构建的大数据处理框架,它提供了一个全面、统一的框架,以管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)。本书用通俗易懂的语言,详细介绍了基于Spark的深度学习框架的安装和创建,并通过不同领域的具体案例为读者介绍了Spark具体应用方法,希望读者能够更好地理解和应用Spark。
本书作者Ahmed Sherif是一名数据科学家,在美国西北大学获得了预测分析硕士学位。他一直在研究机器学习理论和应用,并使用Python和R语言进行预测建模。最近,他一直在使用Azure开发机器学习和云上深度学习的解决方案。2016年,他出版了第一本书——《实用商业智能》,他目前是微软公司数据和人工智能领域的技术解决方案专家。本书另外一位作者Amrith Ravindra是一名机器学习爱好者,他深入地研究了机器学习理论。Amrith Ravindra在坦帕市的一次数据科学会议上认识了Ahmed Sherif,他们决定集思广益,写一本关于他们最喜欢的机器学习算法的书。他们希望这本书能够帮助大家实现成为一名数据科学家并积极为机器学习做出贡献的最终目标。
非常感谢电子工业出版社计算机出版分社将这样一本好书交给我翻译。我深知自己的知识面和翻译水平有限,难免有疏漏和错误之处,恳请读者批评指正。出版社的编辑帮助我耐心审阅翻译的书稿,并提出了许多中肯的修改意见,非常感谢他们。希望读者能够从书中得到更多的知识,开发更多的机器学习应用来改变世界。
黄友良
2019年11月
序
如果你正在阅读这本书,那么可以肯定的是,你已经意识到人工智能(AI)和机器学习(ML)对当今的巨大影响,以及深度神经网络带来的不可思议的惊人效率。Matei Zaharia和他的团队开发的Spark,不是为了让它成为Hadoop的竞争对手,而是作为人工智能和机器学习的广泛应用。正如Zaharia所说过的:“Spark只关注如何计算,不关注数据存储在哪里。”Spark被称为用于大规模数据处理的统一分析引擎,它特别针对弹性、速度、易用性、通用性和可移植性进行了优化,本书将向你详细介绍Spark,相信你一定会成为Spark的狂热爱好者。
作为读者,如果你对Spark在深度学习领域的应用感到兴奋,那么本书就可以为你提供帮助。作者首先通过提供简明扼要的文字说明,帮助你设置Spark以进行深度学习的开发。在完成初始设置之后,你很自然地就创建了一个神经网络。随后,作者详细说明了卷积神经网络和循环神经网络的难点。在各个行业,人工智能每天都有新的应用。在实际应用方面,作者提供了使用SparkML预测消防部门的呼叫,使用XGBoost预测房地产价值,使用LSTM预测苹果公司的股票价格,以及使用Keras创建电影推荐引擎等实际但又进行了适当简化的案例。
人工智能和机器学习分类繁多,令人眼花缭乱的工具集和库的使用令人望而却步。作者非常出色地将不同的库混合在一起,并在读者对本书的学习过程中,不断融入相关但多样化的技术。随着深度学习框架开始融合并向抽象方向发展,探索性数据分析的规模必然会增长。这就是为什么本书并非创造一个众所周知的“一招鲜”(或YOLO模型,双关语),而是涵盖了相关或高度相关的技术,如使用长短期记忆单元的生成网络,使用TF-IDF的自然语言处理,使用深度卷积网络的人脸识别,使用Word2Vec创建和可视化单词向量,并在Spark上使用TensorFlow进行图像分类。除简洁和专注的写作风格外,本书的另一个优势是,内容与机器学习、深度学习高度相关。
在学术领域和行业领域,我有一个独特的机会亲自看到Spark的发展。作为斯坦福大学的访问学者,我参加了Spark的共同创始人之一Matei Zaharia的各种会议,并有幸了解了他对Databricks、大规模算法运作及大数据未来的看法。同时,作为人工智能和深度学习的从业者和首席架构师,我目睹了世界上最大的零售商实验室如何使用Spark标准化其业务机器学习模型的部署。随着云技术不断支持新的数据应用程序架构,我认为Spark是各个行业的、全新的且不可预料的机器学习实现的关键推动者和加速器。这需要大规模解决现实世界中的业务问题,拥有蓬勃发展的生态系统,并能够为企业级SLA提供全天候支持的能力。Spark以前所未有的速度、弹性和社区适应性满足所有这些标准。Spark经常用于高级案例分析,如系统遥测的复杂异常值分析。将Spark视为一种工具,它可以弥补传统商务智能与现代机器学习服务之间的差距,从而取得有意义的业务成果。随着数据成为核心竞争优势,防患(数据中断)于未然至关重要,同时要考虑季节性、周期性和不断增加的时间相关性。易操作性是行业接纳的关键,而这正是Spark与众不同的地方;数据洞察力和行动洞察力也是Spark的强项。
你所持有的这本书是Spark向人工智能和机器学习广泛应用迈出的又一大步。它为你提供了在实际问题中应用的工具和技术。将它看作探索之旅的开端,成为一个全面的机器学习工程师和传播者,而不仅是一个Spark追星族。我们希望这本书能够帮助你利用Apache Spark来轻松、高效地处理业务和技术相关的问题。
Adnan Masood博士
斯坦福大学计算机工程系访问学者
微软最有价值专家&微软人工智能和机器学习首席架构师
斯坦福盖茨计算机科学大楼
2018年6月12日
前言
随着深度学习在现代各行业中迅速得到广泛应用,各个机构都在寻找将流行的大数据工具与高效的深度学习库结合起来的方法。这将有助于深度学习模型以更高的效率和更快的速度进行训练。
在本书的帮助下,你将通过学习特定的操作来得到深度学习算法的结果,而不会陷入理论的困境。从为深度学习设置Apache Spark到实现各种类型的神经网络,本书解决了大多数常见和不太常见的问题,以便在分布式环境中执行深度学习。除此之外,你还可以访问Spark的深度学习代码,这些代码可以用来回答类似问题,也可以在调整后回答稍有不同的问题。你还将学习如何用Spark对数据进行流处理和集群处理。一旦掌握了基础知识,你将探索如何使用TensorFlow和Keras等流行库,如卷积神经网络、循环神经网络和长短期记忆网络,在Spark中实现和部署深度学习模型。最后,这是一本旨在教授如何在Spark中实际应用模型的指南,所以我们不会深入讨论本书使用的模型背后的理论和数学知识。
在本书的最后,你将拥有在Apache Spark上部署高效深度学习模型的专业知识。
本书的读者对象
本书适用于对机器学习和大数据概念有基本了解的人,以及希望通过自上而下而非自下而上的方法来扩展已有知识的人。本书以即学即用的方式进行讲解,任何没有编程经验的人,即使是没有使用过Python语言的人,都可以按照提示逐步地轻松实现本书中的算法。本书中的大多数代码都是简单易懂的,每个代码块执行一个特定的功能,或者执行挖掘、转换和将数据拟合到深度学习模型中的操作。
本书旨在通过介绍有趣的项目(如股票价格预测)为读者提供实践经验的同时,让读者对深度学习和机器学习概念有更深入的理解。这可能以提供在线资源链接的方式展现,如已发表的论文、教程和指南,它贯穿本书的每一章。
本书包括哪些内容
第1章:为深度学习开发设置Spark。本章包括在虚拟Ubuntu桌面环境下设置Spark开发所需的所有内容。
第2章:在Spark中创建神经网络。本章介绍了从头开始开发神经网络而不使用任何深度学习库(如TensorFlow或Keras)的过程。
第3章:卷积神经网络的难点。本章介绍了图像识别中与卷积神经网络相关的一些难点,以及解决问题的方法。
第4章:循环神经网络的难点。本章介绍了前馈神经网络和递归神经网络。我们描述了循环神经网络的一些难点,以及如何使用LSTM解决它们。
第5章:用Spark机器学习预测消防部门呼叫。我们将使用Spark机器学习开发一个分类模型,用于预测来自旧金山市消防部门的呼叫。
第6章:在生成网络中使用LSTM。本章给出了一种使用小说或大型文本语料库作为输入数据来定义和训练LSTM模型的实用方法,同时还使用训练模型生成自己的输出序列。
第7章:使用TF-IDF进行自然语言处理。本章介绍了分类聊天机器人对话数据升级的步骤。
第8章:使用XGBoost进行房地产价值预测。本章重点介绍了如何使用金斯县房屋销售数据集来训练一个简单的线性模型,并使用它来预测房价,然后使用一个稍微复杂的模型来做同样的事情并提高预测的准确度。
第9章:使用长短期记忆单元预测苹果公司股票的市场价格。本章的重点是使用Keras中的LSTM创建深度学习模型,以预测苹果公司股票的市场价格。
第10章:使用深度卷积网络进行人脸识别。本章利用10个不同受试者的面部图像的MIT-CBCL数据集来训练和测试深度卷积神经网络模型。
第11章:使用Word2Vec创建和可视化单词向量。本章重点关注向量在机器学习中的重要性,并指导用户利用谷歌的Word2Vec模型训练不同的模型,并可视化小说中产生的单词向量。
第12章:使用Keras创建电影推荐引擎。本章专注于为使用深度学习库Keras的用户构建电影推荐引擎。
第13章:使用TensorFlow在Spark中进行图像分类。本章专注于利用迁移学习来认识世界知名足球运动员克里斯蒂亚诺·罗纳尔多和里奥·梅西。
如何更好地利用本书
1. 利用书中提供的链接可以更好地理解本书中使用的一些术语。
2. 互联网是当今世界上最大的大学。观看YouTube、Udemy、edX、Lynda和Coursera等网站提供的有关各种深度学习和机器学习概念的视频。
3. 若仅翻看这本书容易忘记知识点,那么可以在阅读本书时实际执行每一步操作。建议你在浏览每一步操作时打开Jupyter Notebook,这样就可以在阅读本书时实践每一步操作,同时检查你从每个步骤获得的输出。
4. 本书提供的额外参考资料请访问http://www.broadview.com.cn/37882进行下载,如正文中标有参见“链接1”“链接2”等字样时,即可从上述网站下载的“参考资料.pdf”文件中进行查询。