在本文开始之前,笔者要和大家分享两个在网络上流行的公式:
传统编程的公式:规则+数据=答案
机器学习的公式:答案+数据=规则
这两个公式中的三个关键词是一模一样的,分别是数据、规则和答案,但是这三个关键词在等号左右的排列位置却不同。从中我们不难看出,机器学习正在改变着整个编程行业。
而这一观点也得到了一些专家的佐证,以网络安全为例,Institute for Critical Infrastructure Technology 高级研究员 James Scott 曾表示,基于签名的恶意软件检测已死,取而代之的是基于机器学习的人工智能,它将成为防御变异哈希最好的方式。
那么,基于机器学习的编程到底与传统编程有哪些不同呢?顾名思义,机器学习大部分工作是由机器来完成的,而传统编程需要程序员自己根据具体的问题建模解决。除此之外,基于机器学习的编程比传统编程还强在哪里呢?
输入
首先,两者输入的都是数据,但是能够接受的数据类型不同。基于机器学习的编程基本可以接受所有的数据类型,例如声音、图片、视频、文本等等,而传统编程接受的数据类型要看程序员的设置,一般来说只可以接受程序员定义好的数据类型。
基于机器学习的数据选择还可以分为三部分,训练用数据、验证用数据和测试用数据。随着数据的不断累积,反复让之前的简单逻辑与数据结果进行比对,不断修正验证,最终结果会愈趋向正确。而传统编程是基于规则的算法,如果发生错误,那么在被发现之前,该错误会一直重复发生。
处理
基于机器学习的编程中,处理包括知识表示和模式匹配、搜索、逻辑、问题解决和学习。而在传统编程中,需要根据待解决的问题设计程序,并完成字符输入。
机器学习比较常见的 3 个应用场景分别是:一次性模型,要解决的问题是由上级严格定义的,并且提供了一些小型数据;嵌入模型,里面有许多变量,比如,模型是静态的还是迭代的,是局部的还是通过 API 远程调用的等等;深度模型,建立用于特定某个领域预测的模型,并通过经验和技巧来提升和证明其准确性。
预测
基于机器学习的编程是基于预测的,而传统编程是基于解释的。基于概率、基于反馈、基于总结,这是机器学习这种经验主义最大的特点,也是与传统程序设计这种基于因果关系的最大不同点。
结论
通过上文对比,基于机器学习的编程在很多方面都胜过传统编程,传统编程更适合于简单的任务,而基于机器学习的编程更适合解决复杂的问题。针对基于机器学习的编程步骤,普华永道也给出了描述,笔者在此贴出来,希望能对大家有用。
普华永道信息图总结的机器学习的主要流程/步骤:
选择数据:这一过程又分为三部分,分别是训练用数据、验证用数据、测试用数据
数据建模:使用训练数据构建涉及相关特征的模型
验证模型:用验证数据验证建立的模型
调试模型:为了提升模型的性能,使用更多的数据、不同的特征,调整参数,这也是最耗时耗力的一步
使用模型:部署模型训练好的模型,对新的数据进行预测
测试模型:使用测试用数据验证模型,并评估模型的性能
评论