机器学习的本质
1.前言这个世界不缺少专家,我只是期待他们中有一位能把事情说清楚。
机器学习很火。 机器学习专家很贵。 所有大型互联网公司都驾着机器学习的马车朝着人工智能前进。
然而今天哪怕是互联网从业者,大部分也是不知道机器学习到底是什么的。机器如何学习?机器学到的是什么?为什么机器经过学习能够神奇的预测用户的喜好、股票的涨跌?人们好奇又渴望。
这里所说的从业者可能是开发工程师,可能是产品经理,也可能是运营,他们与机器学习专家们在同一家公司工作,参与同一个项目,但机器学习算法对他们仍然像黑魔法一样,神秘又疑惑。
这样的局面未免让人沮丧,毕竟如果相对论都可以在高等教育中得到普及,有什么领域是复杂到没办法好好说清楚的呢。据我有限的观察,造成这个局面的原因无非两种:
不少专业人士乐于将机器学习包装得晦涩曲折,以享用他人迷惑眼神中的优越感。很少人把机器学习以直接的、让人容易理解的方式说出来。有那么几个在这样做的人,面向的也是专业领域学习者而非一般的科普受众。我鄙视第一种人类。
我希望所有的写作者都能够追逐RichardStevens的光芒,把复杂的东西变简单,追求简洁明了,追求直接易懂。
这个系列文章,我将试着为开发工程师,产品经理、设计师、所有希望了解学习机器学习的人,介绍机器学习的原理、方法和实战技巧。
我追求它尽可能好理解的同时,也会保持它的准确度和实用度。理论方面,以周志华的《机器学习》西瓜书,林軒田機器學習系列课程(Foundations、Techniques),AndrewNg’s MachineLearning 为学习资料,结合我个人的理解及日常与朋友同事的讨论。实用实战方面,我将以手机淘宝中第一款** DAU(DailyActiveUser)导购产品——有好货为例子,如果你从事导购或者电商相关工作那么对例子中的场景一定非常熟悉。如果你对导购并不了解也不用担心,讲解的重点仍是机器学习原理和方法的普世应用,理解了原理方法之后可以在任何适合机器学习的场景中进行实践。
这是这个系列的第一篇,看完这篇您将知道
什么是机器学习?机器学到的到底是什么?什么样的问题适合用机器学习来解决?2.什么是机器学习?机器学到的到底是什么?2.1什么是机器学习?在讨论机器学习之前,我们首先看看人类是如何学习的。如图1上半部分所示,人类通过阅读书籍、查阅资料,观察得到信息,这些信息经过人脑学习,最后习得了某种技能。
机器学习也是类似,只不过机器学习的输入是数据(Data),学到的结果叫模型(Model)(备注1)。从数据中学得模型这个过程通过执行某个学习算法(LearningAlgorithm)来完成。
数据(Data)学习算法(LearningAlgorithm)模型(Model)是机器学习的三个要素。
图1:
当然,上面的类比可能还比较抽象。下面就以“有好货”这个产品为例子,来理解一下机器学习的概念。
首先介绍下有好货(图2所示)。
有好货是手机淘宝的一款导购产品,在首页第一屏就能看到产品入口。这款产品在2015-2016我们用了一年的时间,将每日用户数从xxxx做到了xxxx,成为第一个每日用户数破xxxx的导购产品。这里面的一大秘诀就是将个性化推荐技术、机器学习技术与产品设计做了深层次的融合,以个性化推荐和机器学习为内核驱动产品设计的演进和决策。(有好货的故事我将另写一个系列)
这里以有好货的“瀑布流”页面(图2中间)为例。这个页面是一个完全个性化的页面,不同的用户进入到有好货瀑布流页看到的商品推荐是不同的。
有限的屏幕空间,我们希望给每个用户展现他最有可能点击的商品。那什么商品是当前用户最可能点击的呢?这个预测就由机器学习完成。
类比图一的概念,这个场景下的数据、学习算法和模型分别对应着:
数据:输入数据包括:用户对商品的浏览、点击历史行为数据以及相应的用户商品特征数据。这些历史数据记录了什么样的用户点击了什么样的商品,什么样的用户对什么样的商品看了没有点击。我们认为这些历史数据中蕴含了某种规律,希望机器学习能把这种规律挖掘出来,在将来面对新的用户和商品时,就能预测是否会点击。
学习算法:机器学习算法有很多,逻辑回归、随机森林都适用于这个场景,但这里我们先不对具体的算法作展开,暂时读者只需要概念性的知道,基于输入数据执行“学习算法”便可产生模型(模型就代表了学习算法从数据中挖掘出的规律)。
模型:学得模型之后,面对新的用户和商品,模型就能作出相应的判断,用户会点击还是不会点击。利用模型的这个“技能”,我们便可以做到给每个用户推荐他最感兴趣的商品了。
总而言之,机器学习是一门研究“学习算法”的学问,“学习算法”基于历史的经验数据产生模型,进而使计算机有了对新情况进行预判和预测的“技能”(比如预测用户的喜好或股票的涨跌)。
2.2机器学到的到底是什么?理解了机器学习的概念,我们知道机器学习无非三个要素(1)数据,(2)学习算法,(3)模型
数据很好理解,当我们希望预测用户是否会点击某个商品,就把历史上用户对商品的点击浏览行为喂给机器学习算法,希望从历史数据中中挖掘出某种规律。学习算法有很多,上面提到过的逻辑回归、随机森林只是众多算法中的两种。事实上对各种不同学习算法的讨论是机器学习书籍的重点,一章介绍一种,就厚厚一本书了。读者不必着急,这部分我们将慢慢展开。在这一小节,我想重点讨论的是,我们说机器学习学得的模型可以预测用户是否会点击某个商品,可是模型在机器内部到底是怎么表示的呢?机器学到的模型到底是什么?许多人觉得机器学习非常神秘,是因为人类习得的技能并没有一个直观的展示形式,因此很难想象机器学到的模型到底是什么,其实答案非常简单:机器学到的模型是一个映射。
映射,在数学的许多分支就等价于函数(备注2)。而函数,我们再熟悉不过了,给定一个(输入集合中的)元素,函数唯一对应(输出集合的)一个输出值。
比如函数f(x)=x2,给定任意实数x,x的平方就是函数的输出。
比如函数f(x)=w1*x1+w2*x2+…+wd*xd+b,当w1,w2,…,wd是确定的,那么给定一组x1,x2,…,xd,就能唯一确定一个输出值f(x)。(事实上这个就是最简单的一种机器学习模型——线性模型)。
而在有好货的例子中,机器学习学到的模型就是这样一个函数:
给定一个用户和商品,这个函数就能够唯一输出一个分数,表示用户点击该商品的可能性。
这就是机器学习的秘密。
3.什么样的问题适合用机器学习来解决?不少计算机科学专业的同学可能会有些疑惑,计算机科学在本科阶段教授了大量的算法——字符串匹配算法、排序算法、贪心、动态规划,算法导论厚厚一千多页,可这些都不属于机器学习的范畴,机器学习也不是计算机科学本科的必修课。
那到底算法导论中的算法跟机器学习算法有什么区别呢?
什么样的问题适合用机器学习来解决?什么情况需要使用机器学习呢?
答案是:
难以用规则解决的问题,可以尝试用机器学习来解决。(备注3)
算法导论中经典的排序问题,无论解法是快排还是归并排序,解法已经是一个确定的规则。但是机器学习问题,比如垃圾邮件识别,比如辨识一张图片中的物体是不是树叶,就很难用规则来解决。前者的规则难以穷举,后者则根本很难描述辨别树叶的规则。
因此,仍然以规则堆砌的观念来看待算法的朋友们注意了,
永远不要跟机器学习专家说:“加条规则呗” 永远不要跟机器学习专家说:“加条规则呗” 永远不要跟机器学习专家说:“加条规则呗”
GodBlessYou~
3.1适合用机器学习解决的问题的必要条件另外,在2.2节我们提到:当我们希望预测用户是否会点击某个商品,就把历史上用户对商品的点击浏览行为喂给机器学习算法,因为我们认为历史数据中隐藏着用户是否会点击商品的某种规律。
这其实道出了能用机器学习解决的问题需要具备这样的必要条件
有大量数据,并且数据中有隐藏的某种规律或模式
如果某些问题没有任何的规律,比如抛硬币,那么无论有多少数据也是不行的。
3.2小测试读到这里,不如试试看你对机器学习理解的怎么样了。
判断下面这些问题适不适合用机器学习解决。能不能用机器学习解决。
问题:预测下一次六合彩的中奖号码。 答案:不能用机器学习解决,因为跟投硬币一样摇奖是随机的,并没有规律。
问题:判断一个图形是否是圆。 答案:无需用机器学习解决,因为有明显的规则。
问题:预测股票的涨跌。答案:可以用机器学习辅助交易并盈利。要是你发现自己能很好的解这个问题,请跟我做朋友吧:)
问题:预测一个10岁的小朋友长大了会喜欢的女孩子的类型。答案:可能不能用机器学习解决,因为缺少“大量数据”这点必要条件。
人工智能 如何表示环境和世界
数学是打开科学大门的钥匙。——培根
数学基础知识蕴含着处理智能问题的基本思想与方法,也是理解复杂算法的必备要素。今天的种种人工智能技术归根到底都建立在数学模型之上,要了解人工智能,首先要掌握必备的数学基础知识,具体来说包括:
线性代数:如何将研究对象形式化?概率论:如何描述统计规律?数理统计:如何以小见大?最优化理论:如何找到最优解?信息论:如何定量度量不确定性?形式逻辑:如何实现抽象推理?线性代数:如何将研究对象形式化事实上,线性代数不仅仅是人工智能的基础,更是现代数学和以现代数学作为主要分析方法的众多学科的基础。从量子力学到图像处理都离不开向量和矩阵的使用。而在向量和矩阵背后,线性代数的核心意义在于提供了⼀种看待世界的抽象视角:万事万物都可以被抽象成某些特征的组合,并在由预置规则定义的框架之下以静态和动态的方式加以观察。
着重于抽象概念的解释而非具体的数学公式来看,线性代数要点如下:线性代数的本质在于将具体事物抽象为数学对象,并描述其静态和动态的特性;向量的实质是n维线性空间中的静止点;线性变换描述了向量或者作为参考系的坐标系的变化,可以用矩阵表示;矩阵的特征值和特征向量描述了变化的速度与方向。
总之,线性代数之于人工智能如同加法之于高等数学,是一个基础的工具集。
概率论:如何描述统计规律?除了线性代数之外,概率论也是人工智能研究中必备的数学基础。随着连接主义学派的兴起,概率统计已经取代了数理逻辑,成为人工智能研究的主流工具。在数据爆炸式增长和计算力指数化增强的今天,概率论已经在机器学习中扮演了核心角色。
同线性代数一样,概率论也代表了一种看待世界的方式,其关注的焦点是无处不在的可能性。频率学派认为先验分布是固定的,模型参数要靠最大似然估计计算;贝叶斯学派认为先验分布是随机的,模型参数要靠后验概率最大化计算;正态分布是最重要的一种随机变量的分布。
数理统计:如何以小见大?在人工智能的研究中,数理统计同样不可或缺。基础的统计理论有助于对机器学习的算法和数据挖掘的结果做出解释,只有做出合理的解读,数据的价值才能够体现。数理统计根据观察或实验得到的数据来研究随机现象,并对研究对象的客观规律做出合理的估计和判断。
虽然数理统计以概率论为理论基础,但两者之间存在方法上的本质区别。概率论作用的前提是随机变量的分布已知,根据已知的分布来分析随机变量的特征与规律;数理统计的研究对象则是未知分布的随机变量,研究方法是对随机变量进行独立重复的观察,根据得到的观察结果对原始分布做出推断。
用一句不严谨但直观的话讲:数理统计可以看成是逆向的概率论。数理统计的任务是根据可观察的样本反过来推断总体的性质;推断的工具是统计量,统计量是样本的函数,是个随机变量;参数估计通过随机抽取的样本来估计总体分布的未知参数,包括点估计和区间估计;假设检验通过随机抽取的样本来接受或拒绝关于总体的某个判断,常用于估计机器学习模型的泛化错误率。
最优化理论:如何找到最优解?本质上讲,人工智能的目标就是最优化:在复杂环境与多体交互中做出最优决策。几乎所有的人工智能问题最后都会归结为一个优化问题的求解,因而最优化理论同样是人工智能必备的基础知识。最优化理论研究的问题是判定给定目标函数的最大值(最小值)是否存在,并找到令目标函数取到最大值(最小值)的数值。如果把给定的目标函数看成一座山脉,最优化的过程就是判断顶峰的位置并找到到达顶峰路径的过程。
通常情况下,最优化问题是在无约束情况下求解给定目标函数的最小值;在线性搜索中,确定寻找最小值时的搜索方向需要使用目标函数的一阶导数和二阶导数;置信域算法的思想是先确定搜索步长,再确定搜索方向;以人工神经网络为代表的启发式算法是另外一类重要的优化方法。
信息论:如何定量度量不确定性?近年来的科学研究不断证实,不确定性就是客观世界的本质属性。换句话说,上帝还真就掷骰子。不确定性的世界只能使用概率模型来描述,这促成了信息论的诞生。
信息论使用“信息熵”的概念,对单个信源的信息量和通信中传递信息的数量与效率等问题做出了解释,并在世界的不确定性和信息的可测量性之间搭建起一座桥梁。
总之,信息论处理的是客观世界中的不确定性;条件熵和信息增益是分类问题中的重要参数;KL散度用于描述两个不同概率分布之间的差异;最大熵原理是分类问题汇总的常用准则。
形式逻辑:如何实现抽象推理?1956年召开的达特茅斯会议宣告了人工智能的诞生。在人工智能的襁褓期,各位奠基者们,包括约翰·麦卡锡、赫伯特·西蒙、马文·闵斯基等未来的图灵奖得主,他们的愿景是让“具备抽象思考能力的程序解释合成的物质如何能够拥有人类的心智。”通俗地说,理想的人工智能应该具有抽象意义上的学习、推理与归纳能力,其通用性将远远强于解决国际象棋或是围棋等具体问题的算法。
如果将认知过程定义为对符号的逻辑运算,人工智能的基础就是形式逻辑;谓词逻辑是知识表示的主要方法;基于谓词逻辑系统可以实现具有自动推理能力的人工智能;不完备性定理向“认知的本质是计算”这一人工智能的基本理念提出挑战。