机器学习是否容易学,这个问题一直备受关注。过去,我会简单地回答“好学”。然而,随着对机器学习的理解逐渐加深,我意识到这个问题并非那么简单。机器学习确实“好学”,但还需要进一步的“学习”。
有些人认为,学习机器学习必须先掌握数学知识。数学真的那么难学吗?
这种观点相当普遍,因为它包含两个问题:机器学习是否真的需要先学好数学?以及数学是否一定都很难学?
首先,让我们谈谈机器学习。我们经常谈论“机器学习”,仿佛它是一项独立的技术。实际上,机器学习是一个涵盖众多模型和算法的大框架。因此,学习机器学习就是理解各种模型和算法的实际应用。
机器学习的学习难度可以从三个层次来看:
最高层次:如果你的目标是开发新的模型或改进现有模型,这将是最难的层次。全球能做到的人不多。
中间层次:掌握各种机器学习算法的数学原理和逻辑。这涉及理解和推导各种公式。虽然比第一层简单,但依然需要较高的数学水平。
最低层次:掌握机器学习算法的基本原理和逻辑,不涉及复杂的数学推导。这种方式更注重实际应用,而非理论细节。
许多人学习机器学习的目的并不是记住数学公式,而是学会如何应用。因此,机器学习其实并不难学。
如果我们学习机器学习是为了解决问题,那么我们自然希望学习的成本越低,时间越短。而众所周知,数学是一个耗时的过程,这也是很多人不敢轻易尝试机器学习的原因之一。
那么,有没有不学数学就能解决机器学习问题的方法呢?
答案是肯定的,而且方法不止一种。
第一种方法是“调包”。软件工程中的一个重要思想是“封装”,用户只需调用已定义的接口即可。机器学习领域也有不少封装良好的第三方库,例如广为人知的Scikit-Learn。使用这些库,你可以避免接触任何数学原理,只需要准备数据、拟合模型和预测结果即可。
这种方法简单易行,但可能会让人感到不安。因为作为程序员,我们总是怀疑问题的根源。所以,了解一些机器学习的基本原理仍然是必要的。
第二种方法是不依赖数学来理解机器学习的原理和逻辑。如果你把机器学习视为工具,那么重点在于选择和组合不同的工具。机器学习模型就像一个工具箱,我们需要了解每种工具的功能,然后根据具体问题选择合适的工具。
当然,理想很丰满,现实很骨感。机器学习模型不像螺丝批那样简单,完全不接触数学却能准确选择所需工具,这需要一定的积累和学习材料。
目前市面上很少有从这个角度编写的教材,我尝试编写了一本书《机器学习算法的数学原理和Python实现》,希望能为大家提供另一种学习机器学习的方向。
回到最初的问题,机器学习难不难学?
现在我的答案是:不好说。
机器学习本身并没有改变,而是我对它的理解发生了变化。之前,我认为机器学习是一个大框架,里面装满了各种模型和算法。这个说法对不对?难以说清。不同的人对机器学习有不同的理解。
对于一些人来说,机器学习可能只是解决问题的一种方法。在这种情况下,机器学习更像是一个工作环节,上游产生的数据经过机器学习处理后形成新的产品,供下游使用。
这种理解或许有些理想化,但它可能更贴近实际应用。现实中,你可能需要自己思考如何实现目标,而不是依赖现成的方案。
软件工程有一个生命周期,机器学习同样如此。建立一个机器学习工程,至少需要以下几步:
数据采集 数据集不是自然存在的,需要设计数据字段并采集数据。这涉及数据清洗和管理,是一个复杂的过程。
数据清洗 数据采集完成后,接下来的重要步骤是数据清洗。这一步类似于烹饪前的准备工作,确保数据质量。
特征工程 特征工程是提升模型性能的关键步骤,它通过增强数据特点来优化模型效果。
模型训练 这一步终于可以看到我们熟悉的场景。模型训练是机器学习的核心,但仅仅掌握它还不够,还需要考虑实际应用。
模型部署 模型训练完成后,需要将其部署到生产环境中,使其发挥作用。这一步同样充满挑战。
机器学习不仅仅是模型训练,还包括一系列复杂的工序。从学术角度和工程角度来看待机器学习,会产生不同的理解和要求。
对于对这方面感兴趣的朋友,可以参考《机器学习:软件工程方法与实现》《机器学习:实用视角》《Python机器学习系统构建》等书籍,深入探讨相关问题。我正在撰写一本从工程角度介绍机器学习的书,希望能为大家提供更多有价值的见解。