一、机器学习的初衷
对有些问题我们难以通过写一段计算机程序来解决。例如:如何让一段段程序来让计算机识别手写的数字(如下图)。
写这个程序时我们遇到的第一个问题为:如何制定一组规则来识别手写的数字?以数字0为例。0这个数字写起来是个封闭的圆。有些人写0时没能封闭这个圆;有些人写的0右上方结束的线略低于左上方开始的线(如下图)。
在这个例子里,程序很难区分0和6。有一种办法,我们可以设置个界限(cutoff):在某个界限内是0,超过某个界限为6。但这个界限怎么设置能达到最佳的效果呢?每个数字,我们都设置类似的一系列规则。你能想像,当我们编制一系列启发式(规则和猜测)列表的时候来对数字进行准确识别时,这程序就变得十分的复杂了。
这类问题还有很多。如:识别对象、语音转成文字、垃圾邮件检测、预测房价等。有些问题我们甚至不知道怎么编写程序,因为我们不了解大脑是怎么处理这些事的。就算我们找到一个办法来编写程序,其复杂性也会相当恐怖。
机器学习(Machine Learning, ML)提供更好的一种解决方案。机器学习解决这个问题的方法是:收集每个成千上万个手写数字的例子,然后编写一个算法可以从例子中学习一个模式(patterns)-非自己设计规则;利用学习到的经验,计算机可以在新的环境下解决同样的问题。
本质上,我们的目标是通过例子来教会计算机解决问题,就好像我们教小孩来区分猫和狗一样。
二、机器学习的定义
下面是Arthur Samuels给出的一个广泛使用的机器学习定义:
机器学习是一个研究领域,它使计算机能够在没有明确编程的情况下学习。
Machine Learning is the field of study that gives computers the ability to learn without being programmed explicitly.
你可能会问,学习是什么含义?下面是另一个广泛使用的定义(Tom Mitchell),它更加地具体和有技术性。
关于经验E(experience)和一系列的任务T(tasks)及其性能指标P(performance),如果随之经验E的积累,针对已定义的任务T的性能指标P有所改善,就说计算机具有学习能力。
A computer program is said to learn from experience E with respect to some task T and performance measure P if its performance on task T, as measured by P, improves with experience E.
在识别手写数字的例子里,任务T为识别手写数字;经验E为手写数字的例子,性能指标P为识别数字的准确性。
机器学习用计算机科学和统计来做两件事:
1. 预测:根据历史数据来预测未来。在手写数字识别问题里,该模型会查看数千个手写数字的例子,从而形成每个数字的大致形状。然后,新的手写数字图像就能够被识别。
2. 推理:发现数据中的模式。在给出许多手写数字的示例中,可以发现数字通常由直线、曲线、转弯等笔画所组成。这些模式对不同手写数字是共通的。
三、ML(机器学习)和AI(人工智能)的区别
机器学习(ML)和人工智能(AI)是高度相互关联的领域,两者之间并没有一个达到广泛共识的区别。一般来说,AI通常指具有智能表现或形为的计算机;ML指的是让计算机学习特定的模式,并利用这些模式做出预测。也就是说,人工智能运用机器学习。或者说,机器学习是人工智能的子集或组件。
四、什么是统计模型?
教计算机进行预测涉及到给机器学习模型输入(喂)数据。这里的模型代表着这个世界运作的方式。
例如:我们在训练一个机器学习模型来预测房屋租金。通常情况下,房间和卫生间的数量一定程度上决定了房租的高低。简单的基于此,房屋租金等于房间的数量乘于1200,再加上卫生间的数量乘于400。于是我们得到:
因此,如果2间房和1个卫生间,则我们估计月租在$2800;如果3间房和2个卫生间,则月租为$4400。
重点:机器学习指一组基于数据集(如房间\卫生间数量\租金)的估算功能(如房租估算)的技术。这些功能,我们称之为模型,可用于预测未来的数据。
注:功能的英文原文为function,有些文章翻译成函数
房间数量和卫生间个数为特性(features)或变量(variables),租金为目标(target)。上例,我们有2个特性。通常,我们会有更多的特性,如房间大小,合同签定的年限等。
五、到底学到了什么?
为了解释机器学习到底学到了什么,我们举一个垃圾邮件分类程序的例子。一种解决方法是编写一段计算机程序来识别垃圾邮件。这个程序可以将每封电子邮件的单词进行分解,形成并且维护一张垃圾邮件常见单词列表(例如:‘贷款’,‘$’, ‘信用’,‘折扣’,‘提供’,‘密码’,‘伟哥’)。如果一封邮件包含大量这些词汇,就被归类为垃圾邮件。
虽然上面的策略可能会有较好的结果(比如说准确率达到80%), 但这个准确性很大程度上取决于我们维护的单词列表,以及我们选择将电子邮件归类为垃圾邮件的精确阀值(precise threshold)。
在机器学习中,我们的策略是从样本中学到上述的单词列表和阀值 。事实上,除了学习到哪些是“垃圾(好或坏)”单词外,还学到了单词的“垃圾(好坏)”程度。因此,我们机器学习模块会象下同的样子:
Spamscore分数越高,此邮件为垃圾邮件的概率越高。
这个例子,学习到的东西是:每个单词垃圾程度的概念(上面公式中的数字5和2)。
注意,这不是解决该问题的唯一方法。我们这样解决该问题,是因为我们注意到垃圾邮件通常包含特定的单词,然后我们提出了一个策略,即分析每一个单词作为可能的嫌疑因素。
六、机器学习的优势
对比于手动维护垃圾单词列表,用机器学习的方案具有一些优势。
1. 大大减少了手工工作量。如果手工创建这张单词列表,列表可能会很长。如果你尝试手动维护单词列表,这个工作量不小。如果还处理全球的上百种语言呢?如果没有机器学习,这个任务可能就变得无法实现了。
2. 可复用。同样的方法也适用于其他类似的任务。如区分电影评论是正面的还是负面的。同样的,如果我们手动建立一个单词列表,那么我们必须手动创建一个新的单词列表。但是,如果我们去学习它,基于我们已有的数据(如:评级和用户在IMDB上的留言),用同样的算法就可以实现了。
3. 自动更新。如果将来垃圾邮件的发送者变得更加聪明了,故意将密码这个敏感词写成蜜码,或者通过邮件推销我们目前不知道的新产品等等情况。用机器学习方法,我们只需要简单地将算法设置为每天训练,于是机器学习算法会通过这些新的数据持续地适应和改善。
七、总结
1. 对于许多问题,以明确的编程作为解决方案的复杂度极高
2. 机器学习 - 让计算机从数据中学习
3. 机器学习可以用于预测,可以发现数据中的模式
4. 人工智能 - 一个更广泛的术语,指的是计算机的任何“智能”行为
5. 机器学习方法通常更容易更新和扩展
(来源:CommonLounge)