前言
目标
本书的目标是向初学者介绍基本的机器学习和深度学习概念与算法,旨在快速介绍机器学习和深度学习的各种“核心”特性,并提供大学课程中包含的代码示例。章节中的材料说明了如何使用Keras解决某些任务,之后你可以进一步阅读以加深知识。
本书还将为你节省搜索代码示例所需的时间,这是一个潜在的耗时过程。在任何情况下,如果你不确定能否理解这里介绍的内容,请浏览代码示例以了解复杂程度。
请记住下面这一点:阅读本书并不会让你成为机器学习或深度学习专家。
你能从本书中学到什么
第1章对人工智能进行了简短的介绍。第2章介绍了机器学习的概念(有监督和无监督学习)、任务类型(回归、分类和聚类)和线性回归。第3章专门介绍了分类算法,如kNN、朴素贝叶斯、决策树、随机森林和支持向量机。
第4章介绍了深度学习,并深入研究了卷积神经网络。第5章介绍了深度学习体系架构,例如RNN和LSTM。
第6章介绍了自然语言处理的各个方面,并提供了一些基本概念和算法,其后是强化学习和贝尔曼方程。附录A介绍了Keras,附录B介绍了TensorFlow 2.0,附录C介绍了pandas。
还有一点:尽管Jupyter比较流行,但是本书中的所有代码示例都是Python脚本。你可以通过各种在线教程快速学习Jupyter的有用功能。此外,完全在线的谷歌Colaboratory也值得关注,它基于Jupyter Notebook并提供了可以免费使用的图形处理器(Graphics Processing Unit,GPU)。
阅读本书需要多少Keras知识
如果你接触过Keras,这对阅读本书会有所帮助。如果完全没有接触过Keras,你可以阅读一下附录A。如果你还想了解Keras和逻辑斯谛回归,请参阅第3章中的示例。该例需要一些涉及激活函数、优化器和成本函数的理论知识,这些知识都将在第4章中进行讨论。
请记住,Keras已经很好地被集成到TensorFlow 2中(在tf.keras
命名空间中),它提供了一个“纯TensorFlow”之上的抽象层,使你能够更快地搭建应用原型。
需要学习本书的理论部分吗
同样,答案取决于你计划在多大程度上参与机器学习。除了创建模型之外,你还将使用各种算法来查看究竟哪些模型提供了项目所需的精确度(或其他度量指标)。如果有所欠缺,机器学习的理论可以帮助你对模型和数据进行“取证”分析,并在理想情况下帮助你确定改进模型的方法。
代码示例的创建
本书中的代码示例是使用 Python 3 和 Keras 创建和测试的,Keras 内置在使用macOS 10.12.6操作系统的MacBook Pro上的TensorFlow 2中。代码示例主要来自作者的“深度学习和Keras”研究生课程。在某些情况下,有些代码示例包含了在线论坛中讨论的小段代码。考虑到本书的体量,书中的代码示例遵循的要点可以概括为“4 个C”,就是尽可能清晰(Clear)、简洁(Concise)、完整(Complete)、正确(Correct)。
本书的技术预备知识
你需要对Python有所了解,并且要知道如何从命令行启动Python代码(在Mac用户的类UNIX环境中)。此外,基础线性代数(向量和矩阵)、概率论/统计学(均值、中值、标准差)和微积分中的基本概念(如导数)将有助于你掌握材料。NumPy和matplotlib的一些知识也会有所帮助——本书假设你熟悉它们的基本功能(如NumPy数组)。
要想理解本书后半部分的代码示例,另一个先决条件也很重要:对神经网络要有一些了解,包括隐藏层和激活函数的概念(即使你没有完全理解它们)。交叉熵的知识对一些代码示例的理解也会有所帮助。
本书的非技术预备知识
尽管这个问题的答案更难量化,但有学习机器学习的强烈愿望,以及阅读和理解代码示例的动机和能力是非常重要的。
即使是简单的机器学习的应用程序接口(Application Programming Interface,API),初次接触时也可能是一个挑战,因此请准备好多次阅读代码示例。
如何设置命令shell
如果你是Mac用户,则可以通过两种方法进行操作。第一种方法是使用Finder导航到Applications→Utilities,然后双击“Utilities”应用程序。接下来,如果你已经打开了命令shell,则可以通过键入以下命令来启动新的命令shell:
open/Applications/Utilities/Terminal.app
Mac用户的另一种方法是从已经可见的命令shell,在MacBook Pro上打开新的命令shell。在一个命令shell中按下command + n快捷键即可启动另一个命令shell。
如果你是PC用户,则可以安装模拟bash命令的Cygwin,或使用其他工具包,例如MKS(一款商用产品)。请自行阅读描述下载和安装过程的在线文档。注意,自定义别名如果是在主启动文件以外的其他文件(例如.bash_login)中定义的,则不会被自动设置。
读完本书,下一步是什么
这个问题的答案千差万别,主要是因为答案在很大程度上取决于你的目标。最好的答案是:尝试一种书中的新工具或技术来解决你关心的问题,无论是专业的还是个人的。问题具体是什么取决于你是谁,因为数据科学家、经理、学生、开发人员的需求各有不同。此外,在应对新挑战时,请牢记所学内容。
O. 坎佩萨托
美国旧金山