移动平台深度神经网络实战:原理、架构与优化
上QQ阅读APP看书,第一时间看更新

1.4 如何掌握机器学习

有的人说机器学习入门并不难,有的人会觉得机器学习难以理解。我们需要先越过这道壁垒,才能进一步讨论移动平台深度学习的话题,那么该如何去学习机器学习这种技术与方法呢?在本节当中,我们将介绍掌握机器领域知识的学习曲线、技术栈以及常用框架。

1.4.1 学习曲线

首先,我们必须清楚机器学习是计算机科学中的一个领域,所以要能够掌握机器学习,真正通过计算机把机器学习应用起来是需要以计算机科学为基础的。比如要了解基础的程序设计语言,至少是Python或者MATLAB,要知道基本的数据结构,要知道基本的数据处理技术,要知道基本的数据存储查询技术等。

其次,机器学习算法一般都有比较严密完善的数学原理,如果不能从数学的角度去理解机器学习,我们是无法理解其中一些本质核心的东西的,那就永远只能从使用模型的角度对这个领域浅尝辄止了。

另外机器学习也是一个依靠经验的领域,许多参数和方法都需要依靠日常的经验积累出来,从而形成一种解决问题的思维和感觉,这样在利用机器学习技术解决现有问题时会更快、更有效,往往能找到合适的解决方案。

所以机器学习是有学习曲线的,也许更像一个无限循环的S形学习曲线,一开始学习基本的机器学习算法,做简单的实验非常容易入手。根据经验,进一步学习更多的机器学习算法后可能会逐渐迷失在各种机器学习模型之中,学习难度陡然上升。当你将大多数经典模型融会贯通之后,你又会觉得各种类型的机器学习算法变化无非几类,于是学习难度曲线又会变得平滑。但当你开始解决实际问题时,就又会陷入陡峭的学习曲线中,在攀爬式的学习中不断积累经验。说到解决实际问题,这是本书希望特别跟读者一起探讨的话题,希望读者能够随着内容的逐步深入,结合实战内容对深度学习有一个全面的掌握,并在此基础上从移动、嵌入式端着手解决实际生产环境当中的问题。

总而言之,机器学习是一个需要不断进行理论和经验积累的技术,每过一个阶段都会遇到相应的瓶颈。这不是一成不变的,而是一个需要不断学习实践的技术。只有在不断遇到问题并解决问题后才能不断前行。

1.4.2 技术栈

我们把深度学习的技术栈分为3个类别。第1类是基础数学工具,第2类是机器学习基础理论方法,第3类是机器学习的实践工具与框架。我们在这里对这几类内容做一个概述,如果读者在阅读本书的过程当中发现有不甚了解的基础概念或知识时,可以翻回这一章节寻找你需要的工具和技术并进行了解,循环往复、温故而知新。

基础数学工具包括高等数学、线性代数、概率论与数理统计、离散数学、矩阵理论、随机过程、最优化方法和复变函数等。没错,基础数学工具在机器学习领域乃至其工程领域必不可少,通过本书的学习,望读者能够对这些知识有一个较为全面的掌握。

机器学习基础理论方法包括决策树、支持向量机、贝叶斯、人工神经网络、遗传算法、概率图模型、规则学习、分析学习、增强学习,等等。

机器学习的实践工具与框架类目就比较繁杂了,包括基础语言与工具、工程框架、数据存储工具和数据处理工具。

① 基础语言与工具有MATLAB及其工具包,Python与相应的库(NumPy、SciPy、Matplotlib和Scikit-learn等)。

② 工程框架包括TensorFlow、MXNet、Torch和PyTorch、Keras等。

③ 数据存储包括Oracle、SQL Server、MySQL、PostgreSQL等传统的关系型数据库,LevelDB、LMDB、Redis等K/V型数据库,MongoDB等文档型数据库,Neo4j等图形数据库,HBase、Cassandra等列数据库,数不胜数。

④ 数据处理工具则包括批处理、实时处理两大类。批处理工具有Hadoop,以及基于Hadoop的Hive和Pig。

⑤ 实时处理工具有Storm和Hurricane实时处理系统《分布式实时处理系统:原理、架构与实现》已于2016年7月由机械工业出版社出版,书中详细阐述了Hurricane实时处理系统的架构和流处理实战。。至于非常有名的Spark应该属于改良的批处理工具,也能用于实时处理场景。