首页 > 代码库 > 理解机器学习

理解机器学习

理解机器学习

0. 前言

当决定想写这篇文章,以对前段时间的学习做个总结,同时对自己的努力有所交代的时候,一个难题摆在了我的面前:人工智能的命题太大,我驾驭不了。而选择一个具体的题目,其容量又不足以表达作者的思路。这与我们设计网络、选择参数何其相似!

最终,我选择了机器学习这个不大不小的范围。题目也是增删数次,风格一变再变,最终还是定了这个严肃一点的。希望大家能够喜欢。

当提到机器学习的时候,我们必须要弄清楚几个问题:

  1. 希望学到什么?

  2. 用什么方法学?

  3. 学习的效果如何?

  4. 不能学得更好的原因是什么?

弄清楚了上述问题,我们就对机器学习的体系有了一个整体的概念,从而能够更深刻地理解相关问题。所以,上述几个问题,也划定了本文的基本框架。希望读者在读完本文之后,能够对机器学习有一些新的理解。

1. 学什么?

机器学习,目的是学习一组映射关系。

1.1 几个例子

  • 前段时间大火的AlphaGo,增强学习(Reinforcement Learning) 在其中起着重要的作用。而增强学习的实质,就是学习状态空间动作空间的映射。

  • 深度神经网络在近几年获得了巨大发展。特别是在语音识别、计算机视觉等领域,更是获得了巨大成功,一时风光无两。例如,CNN网络用于图像分类,其实质是学习数字图像空间类别空间的映射。

  • 支持向量机(SVM)所代表的统计学习方法,在2010年之前的20年间,一直是机器学习领域的主流。SVM所擅长的小样本分类问题,实质也是学习从样本表示空间类别空间的映射。

  • 回归问题,一维的回归是两个一维实空间之间的映射。

1.2 数学表示

  • 映射是从数学引进的一个概念。用数学的语言表示如下。其中,Ψ<script type="math/tex" id="MathJax-Element-67">\Psi</script>表示要学习的映射,I<script type="math/tex" id="MathJax-Element-68">I</script> 表示输入集合,O<script type="math/tex" id="MathJax-Element-69">O</script> 表示输出集合。

Ψ:I?O
<script type="math/tex; mode=display" id="MathJax-Element-112"> \Psi:I \mapsto O </script>

  • 从这里可以清晰地看到,要素有三个,其中 Ψ<script type="math/tex" id="MathJax-Element-113">\Psi</script> 未知,是要学习的目标。而我们需要获得足够的已知信息,并找到合适的方法,从已知信息拟合出未知的映射。

  • 显然,我们能够获取的已知信息,包括 I<script type="math/tex" id="MathJax-Element-114">I</script> 和 O<script type="math/tex" id="MathJax-Element-115">O</script>。不过,在很多时候,我们也能够通过各种方式,获得一些关于 Ψ<script type="math/tex" id="MathJax-Element-116">\Psi</script> 的信息,这一点经常被人们所忽略。

可以说,机器学习的历史,就是这三个变量之间的一首协奏曲。而乐手就是我们自己。

2. 怎么学?

当我们所获取的 Ψ<script type="math/tex" id="MathJax-Element-136">\Psi</script>、I<script type="math/tex" id="MathJax-Element-137">I</script>、O<script type="math/tex" id="MathJax-Element-138">O</script> 的已知信息量不同时,往往意味着需要不同的学习手段去达到目标。

2.1 特征表示

特征表示理论,是与输入集合死磕的结晶。

  • 难以描述的输入:在机器学习领域中,输入集合中的元素,有可能十分复杂,以致于无法直接用计算机语言描述。即便能用计算机语言描述,根据信息论,一般也没有办法描述出全部的信息。

  • 抽取有用信息:输入元素的信息,可能极为庞大,但有用的信息,只是其中一小部分。

  • 为了解决上述两个主要问题,机器学习理论中,专门独立出来一个分支,特征表示。科学家们将一个输入元素从不同的侧面加以描述,数量化,映射到一个实数空间中。每一个这样的描述,称为一个特征

  • 如何抽取有用特征这个问题上,进展一直十分缓慢,基本都是人工。特别是高维度且维度间不独立的情况(比如图像),一直缺乏有效手段。直到卷积神经网络(CNN)方法提出后,这方面才有了一些进展。到深度学习兴起,这个方向才开始了大踏步前进。

  • 特征表示手段上的进步,也恰恰是深度学习大招之一。

2.2 数学表示的变化

  • 经过特征表示后的数学表示如下。其中,Λ<script type="math/tex" id="MathJax-Element-140">\Lambda</script> 是特征抽取的映射。

Ψ?Λ:I?O
<script type="math/tex; mode=display" id="MathJax-Element-19"> \Psi* \Lambda : I \mapsto O </script>

  • 分化出一个映射有其好处。一方面,人的精力有限,这样可以缩小研究领域,各自独立演进。另一方面,在学习时,可以适当加入人类的智慧。

  • 例如,在CNN深度学习中,特征抽取的网络设计,完全体现着人类的智慧。但参数则是通过训练学习出来的。在公共训练集上学习出来的参数(称为模型),由于其独立的特性,又可以供其它研究人员直接使用,从而节省了大量资源。视觉领域比较著名的模型有 AlexNet Model、VGG Model、GoogleNet Model、ResNet Model等。

2.3 学习的路数

每一种方法,都有它存在的意义。

  • 当已知 I<script type="math/tex" id="MathJax-Element-199">I</script> 中的元素,但不知道对应的 O<script type="math/tex" id="MathJax-Element-200">O</script> 中元素时,即对映射一无所知,此时是无监督学习

  • 当已知一部分 I<script type="math/tex" id="MathJax-Element-201">I</script>和O<script type="math/tex" id="MathJax-Element-202">O</script>元素的对应关系时,即在一些点上知道映射的情况,此时是监督学习

  • 已知映射在某点集上的情况,如果点集足够大,则适用大样本学习技术,如深度学习。如果点集比较小,则适用小样本学习技术,如SVM。

  • 我们可以给 Ψ<script type="math/tex" id="MathJax-Element-203">\Psi</script>加入一些人类智慧。比如限制函数的选择范围(SVM经常干的事儿),增加人为的假定(比如HMM中的马尔可夫性假设)等。

总之,每走一步,你都会发现一个不同的地方,于是你都有希望创造一种新的武器。十八般兵器,各有各的适用场景。

2.4 内力

如果说,各种实用学习技术是兵器,那么计算能力信息收集能力则是驱动这些武器的“内力”。

  • 计算能力主要由两套“秘籍”组成:以芯片为核心的“硬件神功” + 以算法为核心的“软件大法”。信息收集能力则考验的是信息流动的速度和广度,互联网的兴起,给了这项能力以极大的助力。就像金庸小说里一样,内力真的很重要。所以吴恩达才说,计算是引擎,数据是燃料。

  • 硬件上现在是百花齐放的局面,各路厂商分别从不同的侧面向前挺进。有攻石墨烯的,有重新设计架构的,有玩FPGA的,有推GPU的,有搞生物芯片的……就在最近,MIT声称刚刚发明了一种能在手机上运行的深度学习芯片,速度是手机GPU的十倍以上。

  • 在算法上,深度网络的兴起、数据量的不断增长,促使算法也在不断地革新。特别是最优化算法、用于特定任务的快速算法,能够以十倍百倍的级别提高计算效率。例如,新算法使得密集CRF现在能够有效地计算,这在以前是不可想象的;一个简单的快速计算 ex<script type="math/tex" id="MathJax-Element-205">e^x</script> 的算法,能够在这样的低层次提高十倍的效率。

  • 互联网的兴起,使得信息采集能力极大提升。一方面各个大型组织,近年来积累了数以PB计的数据量。另一方面,像ImageNet这种数据集,能够在短时间内得以建立,并且每年都在以不可思议的速度更新着。数据获取成本的降低,又极大推动了各项研究的进步。

3. 学得怎么样了?

我们的目标是星辰大海
我们已经在路上
我们仍然在路上

仅仅机器学习领域,作者就已经很难Hold住,更何况在各行各业各个角落的应用呢。本节,作者也只能是采取一斑窥全豹的笔法,对现状做一个概览。

3.1 视觉

  • 图像分类的正确率,已经超过人类(参见ResNet相关论文)。

  • 人脸识别,已经在很多场合达到商用标准。近期加入了深度学习技术后,精度进一步提高。

  • 物体检测方面,深度学习技术使得检测准确率从之前的50%左右,提高到了70%起。在特殊的场景,甚至能达到90%。

  • 像素级语义分割,Facebook最新的论文展示,已经将精度做到了令人发指的程度。

视觉:在成熟的分类领域,机器已经超越人类。在更复杂的领域,机器正在接近人类。

3.2 语音

  • 国内百度、讯飞等语音识别准确率,都号称已经达到95%这样的级别,并且正在向着99%进军。

  • 智能手机现在如果不支持语音,都不好意思拿出来见人。这从一个侧面说明了语音识别的成熟度。

  • 在语义理解、自动合成、自然语言处理等方面,也在飞速进步。但是作者在这些方面了解有限,就不遗笑大方了。

3.3 综合

  • Alpha Go 今年与李世石对弈,过程几近碾压。

  • 谷歌无人驾驶汽车,实测了N长时间,才在前不久发生了一起大点的事故。事故率已经比人类低了。新加坡则刚刚又另一个无人车上路行驶。

  • 无人机在军事领域应用已久,在民用上方兴未艾。

  • 服务机器人市场呈不断增长态势。

  • 深度学习技术,在医疗、基因、气象等很多领域不断开疆拓土,论文层出不穷,深刻改变着各行各业。

4. 未攻克的堡垒

当我们竭尽全力突破了眼前这一层黑幕,本以为大幕之后是渴望的天堂。然而,我们只发现了更广阔的未知世界。

4.1 哲学

在没有哲学的世界,能走多远,依赖于上帝怎样掷色子。

长久依赖,在这个领域中,无论是研究者,还是使用者,都倾向于实用主义。相对于理论,他们更倾向于有效果。以致于,我们当今使用的大多数理论,在30年前早已全部建立起来了。

对待理论尚且如此,更何况哲学?

但是,机器学习已经发展了半个世纪,在这么长的时间里,它在哲学上的建树屈指可数。我们当今在这个行业里的所有人,几乎都是在同一套哲学体系下教育出来的。

这是一种好的情况,好处在于能够集中力量突破。这也是一种坏的不能再坏的情况,因为系统的正确航向,完全依赖于这个系统的自我纠错能力。纠错能力一旦失效,系统将万劫不复。

甚至,在指导实践时,除了现在的这套方法论,还有没有其它的可能?这个问题几乎没人想过。反而是一些神经科学家,开始了一些类似的尝试,比如《Building Machines That Learn and Think Like People》这篇论文所表达出的思想。

4.2 硬件

新的时代,需要新的哲学;新的哲学,催生新的体系。

我想,任何时候,我们都需要更加高级的硬件。比如,石墨烯是否能够替代硅;比如,生物芯片是否真的可以提高能源使用效率。但是,我现在想说的是,可能这些都不是现在要考虑的重点。

当前我们需要考虑的重点,应该是实现智能我们需要什么样的架构?。在此基础上,我们的硬件才有可能出现重大的突破。否则,变换材料也好,平面变立体也罢,都只是水到渠成的自然而然地发展,算不得什么大不了的事儿。

当年,冯诺伊曼提出了现代计算机体系的基本架构,给计算机的发展奠定了基础。体系体现的是哲学,这本质上是一种特定的哲学在一个特定的时代的胜利。

但是,现在,时代已经前进了。新的时代,需要新的体系。

在未来一段时期内,可编程硬件和特定任务专用硬件(如GPU)可能仍然会占据主流位置,因为我们最新的机器学习技术框架远没有到稳定的程度。在可见范围内能够稳定的,仍然只有向量计算和神经网络方法。

在向量计算方面,Novida代表的GPU厂商和Google代表的字眼TPU在未来一段时间内预计会加强其主流的位置。在可编程方面还没有冒出很牛的厂商,但最终模块化的趋势是可见的。

4.3 算法

理论上的问题都已经被数学家研究光了,我们只需要从他们的库房里找来合适的锤子。

当今机器学习最火的分支是深度学习,而深度深度神经网络最大的未解决问题局部极值问题

在这个方面,深度学习大神Bengio已经开始了一些有益探索。最新论文《Mollifying Networks》引入了最优化理论中的平滑延拓法,结合模拟退火算法,求神经网络的全局极值。

其实对于全局优化来说,可行的路径无非是两个。一是用随机方法,二是使用平滑法,用上下界函数或者平滑函数来替代目标函数。Bengio这篇文章,就是将二者结合使用的例子。

其实,另外一种可能更好的办法,是像SVM一样,通过理论推导,得到一个凸的上界函数,上界函数能够有效逼近全局极值点。但这个路线需要理论上的进一步完善,而理论恰恰是神经网络方法所欠缺的。

5. 结语

回头一看,居然已经写了这么许多。

要写的东西很多,范围很广,而作者能力有限,所以有些地方不免流于表面和务虚。对于不太了解机器学习的读者,可能收获是有限的。

然而,本文的目标,正是给出这样一个务虚的概览。有了概览,才能看清方向。本文的写作过程,也是作者不断总结、不断系统思考的一个过程。借助写作,文中的不少观点都是作者之前没有意识到,也没有总结出的。

不过,作者认为,这些意外到来的不速之客,恰恰是真知灼见所在,也恰恰是本文价值所在。如果读者能够从本文获得一二启发,或赞同,或思考,则作者幸甚。

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    理解机器学习