浅说机器学习理论

机器学习是现在在风口上。其包括一系列的具体算法,学习这些算法需要一定的数学基础(线性代数、概率论),网上有大量的资料可以参考学习;对于工程来说门槛就更低了,有许多优秀的现成框架可以使用。虽然我们调用一些api、调调参数就能完成很多工作,但是理解这背后的“为什么”还需要下一番功夫。机器学习理论是该领域的分析框架,这方面的内容比较抽象,且“实用性不强”,所以常常被人忽略。这篇博客就来通俗地讲讲这些理论。

1.什么是机器学习

计算机编程算法是用来解决各种实际问题的。在传统的算法中,面对一个实际问题,程序员靠个人的智慧推导出了问题准确的解决方法,然后通过编写程序解决问题。如果把寻找解决方案的过程比喻成寻宝,把具体解决问题的方案比作宝藏的话,那么传统的编程就是靠人的推理的推导出了宝藏的具体位置。但现实中有大量的问题很难由人推测出精确的解决方案,尤其是那些涉及变量很多(高维)的问题。面对这类问题虽然难于给出一个确切的解决方案,但我们总觉得可以找到一个“大概”或者说“模糊”的解决方案(有统计规律)。

机器学习正是为了解决这种问题的,它是对“确切推导出宝藏位置”这一条件的软化,虽然我们不能推出宝藏的准确位置,但是我们可以给出这一宝藏的大致范围(对应着hypothesis set)然后利用算法通过大量的数据从这个范围中筛选出“宝藏”。例如在预测房价这种机器学习的典型任务中,影响因素可能上千个,我们不太可能推导出一个包含这些影响因素的确切方程。但是我们可以给出一个范围,即一个相对模糊的解决方案,例如:“这些影响因素与房价呈线性关系”,这么一来我们划定的宝藏范围就是“所有的线性方程的集合”,然后机器学习要做的是从这些候选集中通过与大量数据进行“比对”找出一个合适的具体方程当做我们要找的“宝藏”。这就是机器学习算法的寻宝过程。

一个机器学习算法要成功,首先这个定的范围需要能框住正在的“宝藏”,其次这个找宝藏的过程也得合理高效,并且还得有足够的数据进行比对筛选。下面我们来说说这么判定我们挖出了真正的宝藏。

2.怎么判断机器学习“学”到了东西

前文我们说机器学习是在一堆算法的候选集中,通过大量数据的“比对”选出一个表现好的算法。这部分用于“比对”的数据就叫“训练集”。通过训练集“选出来”的算法往往在训练集上表现很好。但这样的效果并不仅仅是我们想要的,机器学习算法的输出是一个“解决方案”,靠这个“解决方案”去应对所有的输入情况,而训练集仅仅包括了输入可能性的一小部分,我们希望以这一小部分的数据训练模型,能让模型处理它没有见过的数据(泛化)。打个比方,你通过一些例题去教一个孩子线性方程组的解法,教完过后这些孩子对于例题应该都能熟练解答,但是评价这个孩子是否“学会了”不应该拿这些例题去考他,而应该用他没见过的线性方程组去考他,即看他是否有举一反三(泛化)的能力。

机器学习中有一套理论去保证泛化能力。为了体现我不是民科,我还是搬几个公式吧:) 。首先一个理论基础是霍夫丁不等式Hoeffding Inequality :

$P(\left | \nu -\mu  \right |> \varepsilon )< 2exp(-2\varepsilon ^{2}N)......(1)$

这篇文章不打算详细推导数学,所以这里我只讲公式背后的故事。这个不等式告诉我们的是:我们通过有限数据得到的参数$\nu$(算法在训练集上的误差)与理想中的参数$\mu$(算法在所有数据上的误差)之间的关系:$\nu$与$\mu$之间的误差大于 $\varepsilon$的概率小于不等式的右边的指数表达式的结果。不等式右边N是计算出用到的数据量(训练集大小), $\varepsilon$是允许的误差。

这个公式告诉我们只要使用的数据量足够大,单个算法在训练集的表现能够代表这个算法在所有数据上的真实表现。这个公式只是告诉我们一个算法的情况,但是我们说过机器学习的过程是在所有候选集上挑一个最好的算法。候选集一多,出现小概率事件的概率会变大。例如买彩票,对于我一个人而言中大奖的概率是微乎其微的,但对于一个集合来说,比如全北京买彩票的中有人中大奖的概率还是很高的。数学上我们用union bound 来代表这类问题:

$P( A_{1}\cup A_{2} ...\cup A_{k} )< P ( A_{1} )+ P ( A_{2} )+...+P( A_{k}  )......(2)$

在(1)中考虑union bound后可以得到:

$P\left ( \exists h_{i}\in H ,\left | \nu (h_{i})-\mu (h_{i}) \right | >\varepsilon \right ) \leqslant  2kexp(-2\varepsilon^{2}N )......(3)$

与(1)式不同的是(3)式中k是模型候选集的大小,其余参数基本相同,这个式子告诉我们即使训练数据足够大,如果我们的候选集中包含的候选算法太多(k太大)也可能得到错误的结果。这也应了那句谚语“林子大了什么鸟都有”:)。因此在机器学习中模型复杂度的选择是一个需要折中考虑的量,一方面模型越复杂即我们划的“范围”越大,则这个范围内包含“宝藏”的概率就越大,另一方面林子变大了出现“坏鸟”的概率也变大了。理想的情况是我们模型的范围取得“准且小”,这当然需要我们对要解决的这类问题有比较多的先验知识,一种极端的情况是当我们的先验知识足够充分了,就可以把我们的范围缩小成一个“点”,即直接找到一个具体算法,这本质上就退化到了传统编程解决问题的方法了。实际上(3)式的刻画是比较粗糙的,大多数情况下k是无穷大的。在机器学习中为了解决无穷问题又有“打散”、VC维等概念,这些概念的补充对(3)式右边所代表的上界进行了更精确地刻画。但是在这里(3)式足够表达上述思想了,那些“更精确”的理论这里就不讲了,如果感兴趣可以参考相关教材。

机器学习算法对应着两类误差即偏差和方差,在实际工作中,判断模型的主要误差是哪一种是后续进一步优化模型才有正确的方向。你可以在网上查到大量方差和偏差的“正统”定义,在本文里我就讲一讲我的偏门理解:偏差度量的是由于圈的地太小了,没有圈住“宝藏”引起的误差;方差是指圈的地太大了,林子里出现了“坏鸟”产生的误差。当机器学习的误差由偏差主导时,这时候就可以考虑增大模型的复杂度,即圈更大的范围。当模型的误差由方差主导时,这时就需要降低模型的复杂度,加更多的数据(筛选更严)或者采用一些正则化的方法。说道正则化,我理解的就是对模型做出一些限制,让模型选择的范围缩小,正则化有效地前提是这样的范围缩小是合理的,而要满足这个要的还是先验知识。以上就是对机器学习理论的一些理解,下面用一个例子进行说明。

3一个实例

现在以公司招聘为例子对机器学习进行类比。公司招人的目的是找一个合适的员工到公司,对应着机器学习里面是“训练”出一个合适的算法供以后使用。现在假设公司招人的办法就是出一些题让候选者解答,从中选出得分最高的人,把这个人招进来;这对应着机器学习里面通过大量的数据挑选出合适的算法,此处“题”和“数据”相对应,“候选人”和“候选算法”相对应。假设公司的题都是选择题的类型,现在公司有20道这样的题(数据量),那么对于一个应聘者来说如果他能全部做对这些题,那么他大概率是合格的,因为这些题他全部能蒙对的概率很小(0.25^20)。

现在公司定了个算法:去外面大街拉50个人来做题,如果能全部做对就认为他是合格的候选者。这个算法的缺点是很可能这50个人里面没一个人做得好,所以招不到合适的人,这对应着机器学习里的欠拟合:由于模型不够强(候选集太小)导致的效果不好;而且这个例子中是“去大街上拉50个人”,这个模型的选取没有利用好先验知识,这在机器学习中属于模型选取不当,比如本来应该用gmm模型而实际用成了hmm模型。

由于上面的方法没招到人,于是老板说:“既然候选人太少了,那咱多拉点人来,反正咱们国家最不缺的就是人”,然后拉了1亿人来做题。这种情况下有候选人拿了满分,那么这个人就是合格的吗?在上一个50个候选人的情况下如果有人全做对我们可以认为他大概率很优秀,但是现在这个基数变成了1亿人,一个人要全部蒙对的概率很小,但是1亿人中出一个全蒙对的概率还是很大。所以这对应着机器学习里面的“过拟合”问题,算法在训练集上表现很好,但实际应用时却效果却很差(这个凭运气进入公司的人并不能胜任工作)。面对这种问题可以出更有难度的试题(更好的数据)或这增加题量(加数据)来让蒙对的概率变低。另外也可以换候选者范围(对应着换算法或加正则化),让候选者的范围合理地变小一点。

例如在这个例子中更理性一点的算法是将候选者范围换成大学本科毕业相关专业的几百个人,再让他们来答题,这样的话大概率能选出我们的要的人。机器学习里面有个定理叫“没有免费午餐定律”说的就是不能抛开具体的任务,去评价算法。因为一个机器学习算法对应着一个候选的范围,当我们问题的答案落在了这个范围内,有足够的数据就能训练出合适的答案。另一方面如果一个算法非常强大,但它的范围没包含我们的答案,那么有再多的数据也白搭,其效果可能还不如那些不那么“强大”的算法。这就是我对于机器学习理论的一些理解,希望能够对你有点启发,如果想要全面、严谨、数学化的理解机器学习的理论我推荐林轩田的《机器学习基石》的公开课。

4人工智能“智能”吗

人工智能很火,但现在的人工智能真的智能吗?让我们从之前的分析中看一下在机器学习中有多少是人的“智能”,又有多少是机器的“智能”。还是以寻找宝藏为例,首先判断有没有宝藏可寻,即判断一个问题是否有统计规律可循,这是人的“智能”做出的判断;其次划定宝藏的范围也是人做的决定(选模型及模型的规模);最后划定范围后确定怎么去找宝藏(优化函数、优化算法)也是由人指定的。因此纵观整个机器学习的过程,基本还是靠人类的智慧在解决问题,机器只是按部就班地服从人的指挥,在一定的范围中执行优化算法去找宝藏,这个过程中并没有展现出机器“智能”。

虽然目前的人工智能还根本谈不上“智能”,但是我们也不必沮丧。机器学习的算法让计算机能解决更多的问题,从以前的“确定性”问题到现在的“范围”问题。而“能够解决更多的问题”这本身就是一个巨大的进步。

这几年机器学习里面成功的技术是深度学习。这类算法也并未跳出上述机器学习的理论框架。但是其在计算机视觉、自然语言处理等领域表现出了最好的效果、在某些子领域中其效果甚至能超过人类。我们对深度学习为什么有效或者说深度学习模型圈下的是怎样一块地还不甚清楚,期待后续这方面的研究能够揭示出“智能”的一些边边角角。

原文地址:https://www.cnblogs.com/kangheng/p/10160363.html

时间: 2024-11-05 01:41:34

浅说机器学习理论的相关文章

【机器学习快速入门】简单自学机器学习理论

[机器学习快速入门]简单自学机器学习理论 机器学习理论--part I 前言 (第II部分内容点此:第III部分内容点此) 动机 大多数人在小的时候被魔术师以及魔术技巧所迷住,并想弄明白其中的奥秘.有些人会带着这份迷恋研究到更深处并学习魔术技巧,有些人会接受专业的训练,而其他人会继续平庸下去.我在年幼时也尝试过魔术技巧并沉迷于其中,然而后来学习的是另外一种魔术,称作计算机编程. 编程确实酷似魔法, 和魔术一样,自学的现象在计算机编程世界占了上风.在过去的两年计算机开发者调查显示,超过一半的开发者

机器学习理论研究方法探讨

本文译自:http://www.alexirpan.com/2016/07/17/ml-sleep.html,原文标题<The Machine Learning Casino>,译文供您参考. 一.机器学习理论研究 机器学习是一种能使计算机半自主地对数据进行分析,并从中学习经验的算法. 机器学习理论的研究听上去就好像做这么一件事,让我们的研究人员去深刻探索,提高计算机学习数据集的效率的方法. 事实上,机器学习理论的研究可以在我们的生活的每时每刻找到影子.就好像你在不断的进行一场赌博,只不过你的

统计机器学习理论:随机熵、vc熵、退火VC熵、生长函数、VC维定义理解

一.定义: 有n个训练样本Zn={zi(xi,yi), i=1,2,...,n},定义N(Zn)为函数集中的函数能对样本分类的数目.        解释:xi 代表特征向量如d维特征向量,yi代表一个标记如0或1, 因此zi就是对一个特征的标记,Zn中有n个样本,可能的标记方式2n种,一种标记方式就生成一种样本集: N(Zn)为Zn的标记空间中能被正确分类的标记数量. 举例:在二维特征空间中,不共线的3个二维特征向量,其标记方式有23=8种,每一种标记方式都能被指示函数集二维线性分类器正确分类,

机器学习理论知识部分--偏差方差平衡(bias-variance tradeoff)

摘要: 1.常见问题 1.1 什么是偏差与方差? 1.2 为什么会产生过拟合,有哪些方法可以预防或克服过拟合? 2.模型选择 3.特征选择 4.特征工程与数据预处理 内容: 1.常见问题 1.1 什么是偏差与方差? 泛化误差(general error)可以分解成偏差(bias)的平方加上方差(variance)加上噪声(noise).偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力,方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响

《机器学习理论、方法及应用》研读(1)

第一章 机器学习概述 机器学习的概念 学习:可以从不同角度对学习给出解释,但是都包含了知识获取和能力改善这两个主要方面.因此给学习如下一般的解释:学习是一个有特定目的的知识获取和能力增长过程,其内在行为是获得知识.积累经验发现规律等,其外部表现是改进性能.适应环境.实现自我完善等. 机器学习:机器学习是一门研究怎样用计算机来模拟或实现人类学习活动的学科,是计算机科学.数学.心理学.生物学和哲学等多门学科的交叉. 机器学习的发展历史 第一阶段是20世纪50年代中叶到60年代中叶属于热烈时期.第二阶

【机器学习理论】换底公式--以e,2,10为底的对数关系转化

我们在推导机器学习公式时,常常会用到各种各样的对数,但是奇怪的是--我们往往会忽略对数的底数是谁,不管是2,e,10等. 原因在于,lnx,log2x,log10x,之间是存在常数倍关系. 回顾学过的数学知识,换底公式如下: 则有 故我们不用纠结对数公式中底数究竟是谁,常数倍关系往往对最后结果不产生影响 原文地址:https://www.cnblogs.com/likedata/p/11224415.html

【机器学习基础】理解为什么机器可以学习1——PAC学习模型

引言 自从下定决心认真学习机器学习理论开始,接触到很多基本问题,但其实都不是很理解,比如损失函数.风险函数.经验结构最小化.结构风险最小化.学习方法的泛化能力.VC维等,这些概念在学习中都纯属空泛的概念存在,我都不理解这些概念存在的意义. 为什么会存在这样的问题呢?我自己想了一下,有几个原因:首先,很多相关的书籍在讲授这些概念的时候,很少说这些为什么会有这样的概念问题,为解决什么问题引入的这些概念:然后,还有一些书,在简单表述了这些概念之后就立马挨个介绍算法了,遇到这样的书也会忽视这些基础问题的

用交叉验证改善模型的预测表现

预测模型为何无法保持稳定? 让我们通过以下几幅图来理解这个问题: 此处我们试图找到尺寸(size)和价格(price)的关系.三个模型各自做了如下工作: 第一个模型使用了线性等式.对于训练用的数据点,此模型有很大误差.这样的模型在初期排行榜和最终排行榜都会表现不好.这是"拟合不足"("Under fitting")的一个例子.此模型不足以发掘数据背后的趋势. 第二个模型发现了价格和尺寸的正确关系,此模型误差低/概括程度高. 第三个模型对于训练数据几乎是零误差.这是因

机器学习入门资源--汇总

机器学习入门资源--汇总 基本概念 机器学习 机器学习是近20多年兴起的一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法.机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法.因为学习算法中涉及了大量的统计学理论,机器学习与统计推断学联系尤为密切,也被称为统计学习理论.算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法. 下面从微观到宏观试着梳理一下机器学习的范畴: