明白机器学习是一种算法,想要了解这种算法就要知道它和以往的算法有什么区别。
举个例子,过去在实现人脸识别技术上是通过人为在程序中对每个人脸图像进行区域划分,找到人的五官,然后计算五官尺寸,然后跟数据库对比,数据库中也全部是五官尺寸数据。这样做的好处是人很容易理解这个过程,也可以通过修改具体参数来调整识别能力。简单来说,算法越复杂,包含数据越多,识别出来的精确度相对就更高。
机器学习换了另一种思路,程序员不再写明机器如何做判断,而是通过输入大量人脸图片,然后告诉程序这个判断是正确还是错误的,一开始的错误率当然很高,猫和狗和人都区分不出来,就像傻子一样数据乱飞,但是随着数据越来越大,程序不断根据设定来调整自己的计算系数,直到最后这些系数能够精确判断随意输入的图片是什么。
如果这时候你再研究他的算法可能会惊异的发现原来区别不同人的方式不是看五官,而是看发际线的位置和发际线形状。这是大量运算后得出的最明显差异。对于机器来说,他是不知道这个到底是什么的。对他来说只是一堆数据而已,而他只是找到了这所有数据中最不同的部分,次不同的部分等等。
说的更粗浅一些,以前编程是看你怎么写公式,电脑只要把接收到的数据代进去算一遍然后给你结果就好了!机器学习不同的是我把数学运算法则和数学定理写好,然后不断告诉你我输入得数和最终的正确结果是什么。电脑通过不断重复试错,找到一个最适合的运算公式。当然执行过程要比这个复杂得多得多的多得多……
补充一些小关点吧!深度学习(deep learning)属于机器学习(machine learning)的范畴下,而且是其中相对简单的部分,而深度学习又属于人工智能AI中一个小范畴。而且目前的机器识别主要用于识别,也就是帮助人类从繁杂的数据中挑选规律进而得出结果的这个等级。更简单的说,是从海量数据中得出有规律的简单结果。而人类的思维特征能从简单事物推论出复杂结论,并且指导行动。比如,机器学习可以通过数据练习后帮你判断什么样的茶壶好卖,但是并不能帮你设计茶壶。机器学习能够识别你的床单是否平整但是不能帮你铺床。所以从这个角度,机器学习和电影中的机器人三大定律什么的不是一个物种,当前人类谈惧怕AI实在有点多虑。
这个只是我了解的粗浅角度,如理解有误,望大神指正!
简单来说:
编程的技术是
问题 —> 算法 —> 结果
遇到问题,提出算法,得到结果
机器学习
问题 —> 结果 —> 算法(方法)
遇到问题,知道结果,通过机器学习得到最优的算法(不停用 training data建立模型然后和 testing data 比较准确率)
虽然很多时候我们并不知道原理(带了一堆你认为无关的变量后准确率高了很多)但是确实好用
应用上来说:银行的信用评级系统(芝麻信用分之类) google精准投放的广告,都是机器学习的应用了
有一定算法基础可以用weka自己试试看
一个常常让大众感到困惑的问题是:人工智能(AI),机器学习(ML),深度学习(DL),机器视觉(CV)以及自然语言处理(NLP)之间是什么关系?
从科普角度粗略地说,人工智能涵盖了其他所有概念[图1],而机器学习是人工智能的一个子方向,而深度学习又是机器学习中的一类方法。至于机器视觉与自然语言处理,它们是人工智能领域的两个具体应用,而且往往会用到深度学习。
越是简单的概念其实越难解释。比如有人提到机器学习问题事实上是一个「优化问题」,有人认为是机器学习是一个「编程概念」,也有人认为现阶段的机器学习是「统计推断」。
从不同的角度看,这些说法都有道理。我个人比较喜欢Tom Mitchell对于「学习任务」的定义[1]:
每个机器学习都可以被精准地定义为:1) 任务T;2) 训练过程E;3) 模型表现P。而学习过程则可以被拆解为「为了实现任务T」,我们「通过训练过程E」,逐步「提高表现P」的一个过程。
比如我们想要做一个模型来判断一张图片是猫还是狗(任务T)。为了提高模型的准确度(模型表现P),我们不断给模型提供图片让其学习猫与狗的区别(训练过程E)。在这个学习过程中,我们所得到的最终模型就是机器学习的产物,而训练过程就是学习过程。「机器学习」和「人类学习」是可以做类比的。套用刚才的公式:为了在高考中得到高分(任务T),小王每天做10套模拟题(训练E),并不断参加模考检测自己的错误率(评估P)。
但除了相似性以外,机器与人类在学习过程中也有很多差异:
机器与人类的学习过程中有很多差别,上面只是其中的一小部分。比较显著的差别是现阶段的机器更适合简单问题、大量数据的高效且准确的预测,而人类更适合复杂状况下面临有限数据做出决策。在可预见的未来,我们依然还是需要两条腿走路,让机器和人类做各自擅长的事情,不能单纯的说谁更好。其实结合人类知识与机器的学习能力是非常自然的想法,比如现在比较流行的主动学习(active learning),比如让机器学会阅读从人类知识库中收集知识,比如人机互动(HCI)与机器学习的交叉研究等。
前面提到了机器学习的最终产物往往是一个「模型」。因此从另一个角度看,机器学习其实是在「寻找一个映射函数 ,使得输入 经过后得到期望的输出 ,也就是 」。继续拿猫狗分类为例,我们希望输入 (猫与狗的图片)之后得到正确的输出 (它是猫还是狗),此时学习的过程就是寻找正确的判别器的过程。
如果我们预先假设应该符合 形式,那么学习过程就是确定a与b取值的问题。这也是为什么机器学习也可以被理解为优化问题或者参数寻优的过程。在求解最优参数时,往往没有闭式解(closed-form solution),即很少会得到 这种明确的答案。因此需要用各种优化算法求解,且大部分优化问题是无法得到最佳答案的,这也是为什么我们很少会得到「完美的机器学习」模型。
通过上面这个例子,我们可以看到机器学习成功与否取决于多个因素:
不难看出,机器学习中的每个环节都互有关联。而且在整个过程中,我们不可避免地会引入各种各样的人为先验(代入我们的假设)。举个例子,我们往往基于经验提出对模型的猜想,比如猜测正确模型是一个二次函数,形式为 ,但真实的情况可能是 ,那不可避免的我们就引入了人为的偏差(bias),这样再怎样训练都无法学习到完美模型。同理,即使我们对于模型有正确的假设,但如果数据量不够,也很难寻找到最优参数。另一个常常被人挂在嘴边的机器学习问题是过拟合,也就是说在学习过程中模型“死记硬背”,却没有发现数据中真正核心的部分只记住了表象。就像小王背会了很多往年高考题的答案,毫厘不差,但上了真正的考场依然低分,因为他并没有学会解题而只是背住了训练题的答案。
从理论角度看,我们有PAC学习理论(Probably Approximately Correct)来给定某个学习任务的过拟合误差的边界(边界)。PAC中给出的边界取决于:1) 训练数据的数量;(2) 模型假设空间的复杂度等。而在实际场景中,衡量一个学习任务的复杂度却不容易,比如训练数据并非是从真实数据分布中随机产生。即便如此,我们依然可以大致得到这个结论:简单且正确的模型假设+大量的训练数据=优秀的机器学习模型,这为我们应用机器学习方法打下了一个基础。
如何让机器学习落地到各行各业是一个非常有价值但同时充满挑战的任务。除了上文提到的理论基础外,我们还需要选择合适的任务来实践,并不是任何问题都适合应用机器学习。从我为不同行业客户提供咨询的经验来看:
总结来看,机器学习可以被看做是一种与人类思维有异曲同工的学习方法,各有擅长之处。进入二十一世纪后,随着硬件与数据量的发展,高精度的机器学习模型正在变为可能,特别是在机器视觉和自然语言领域已经有了很多突破。即使如此,我们也还是要认识到它不是个新概念,也不会让每个人都失业。从实际角度出发,机器学习模型的结果跟问题的复杂度、可用数据量,以及正确的评估方法都有很大的关系。从应用角度出发,传统企业应该从「问题定义明确,数据处理大,利润率高的问题」出发,引入混合模型,即同时使用人为的经验与机器学习进行预测。从降低成本的角度出发,要善用已有的工具与成熟的模型,快速迭代。
而在科技快速发展的年代,我也推荐大家对机器学习有更多了解和学习,欢迎参考「微调:未来 3~5 年内,哪个方向的机器学习人才最紧缺?」「 如何用3个月零基础入门机器学习?」
[1] Mitchell, T., 2017, Dec. Key Ideas in Machine Learning. http://www.cs.cmu.edu/~tom/mlbook/keyIdeas.pdf
[2] Image Processing with the Computer Vision API | Microsoft Azure