本文作者 张玉宏
博士毕业于电子科技大学,美国西北大学访问学者,现执教于河南工业大学。中国计算机协会(CCF)会员,CCF YOCSEF郑州2018—2019年度副主席,ACM/IEEE会员。《品味大数据》一书作者。主要研究方向为大数据、人工智能、技术哲学。发表学术论文20余篇,国内外学术作品7部。阿里云云栖社区专栏作家,博文累计阅读逾百万次。
王国维先生在《人间词话》里提到,人生有三重境界。第一重境界是“立”、第二重境界是“守”、第三重境界是“得”。对应的,“机器学习”也有三大类算法:监督学习、非监督学习和半监督学习。而有着“中庸之道”的半监督学习很有可能成为未来机器学习的大趋势。
监督学习
用数据挖掘领域大家韩家炜教授的观点来说,所有的监督学习(Supervised Learning)基本上都是“分类(Classification)”的代名词。它从有标签的训练数据中学习模型,然后给定某个新数据,利用模型预测它的标签。这里的标签,其实就是某个事物的分类。
比如,小时候父母告诉我们某个动物是猫、是狗或是猪,我们的大脑里就会形成或猫或狗或猪的印象(相当于模型构建),然后面前来了一条“新”小狗,如果你能叫出来“这是一只小狗”,那么恭喜你,标签分类成功!但如果你回答说“这是一头小猪”。这时父母就会纠正你的偏差,“不对,这是一只小狗”,这样一来二去地进行训练,不断更新你大脑的认知体系,下次再遇到这类新的“猫、狗、猪”等,你就会天才般地给出正确的“预测”分类,如下图所示。
监督学习
事实上,整个机器学习的过程就是在干一件事,即通过训练,学习得到某个模型,然后期望这个模型也能很好地适用于“新样本”。这种模型适用于新样本的能力,也称为“泛化能力”,它是机器学习算法非常重要的性质。
在学习过程中,需要使用训练数据,而训练数据往往是人工给出的。在这个训练集合中,系统的预期输出(即标签信息)已经给出,如果模型的实际输出与预期不符(二者有差距),那么预期输出就有责任“监督”学习系统,重新调整模型参数,直至二者的误差在可容忍的范围之内。因此,预期输出(标签信息)也被称为“教师信号”。
监督学习的流程框架大致下图所示。首先,准备输入数据,这些数据可以是文本、图片,也可以是音频、视频等;然后,再从数据中抽取所需的特征,形成特征向量;接下来,把这些特征向量和输入数据的标签信息送入学习模型(具体来说是某个学习算法),经过反复训练,“打磨”出一个可用的预测模型;再采用同样的特征抽取方法作用于新样本,得到新样本的特征向量;最后,把这些新样本的特征向量作为输入,使用预测模型实施预测,并给出新样本的预测标签信息。
监督学习的基本流程
非监督学习
与监督学习相反的是,非监督学习(Unsupervised Learning)所处的学习环境,都是非标签的数据。非监督学习,本质上就是“聚类(Cluster)”的近义词。
如果说分类是指,根据数据的特征或属性,划分到已有的类别当中。那么,聚类一开始并不知道数据会分为几类,而是通过聚类分析将数据聚成几个群。简单来说,给定数据,聚类从数据中学习,能学到什么,就看数据本身具备什么特性了,所谓“归哪类,像哪类。像哪类,归哪类。”
但这里的“类”也好,“群”也罢,事先我们是并不知情的。一旦归纳出一系列“类”或“群”的特征,如果再来一个新数据,我们就根据它距离哪个“类”或“群”较近,就预测它属于哪个“类”或“群”,从而完成新数据的“分类”或“分群”功能,如下图所示。
非监督学习
比较有名的非监督学习算法有K均值聚类(K-Means Clustering)、关联规则分析(Association Rule,如Apriori算法等)、主成分分析(Principal ComponentsAnalysis,PCA)、随机森林(Random Forests)、受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)等。目前用在深度学习里,最有前景的无监督学习算法是Ian Goodfellow提出来的“生成对抗网络(Generative Adversarial Networks)”。
半监督学习
半监督学习(Semi-supervised Learning)的方式,既用到了标签数据,又用到了非标签数据
有一句骂人的话,说某个人“有妈生,没妈教”,说的是一种“无监督学习”。但我们绝大多数人,不仅“有妈教”,还有学校教,有人告诉我们事物的对与错(即对事物打了标签),然后我们可据此改善自己的性情,慢慢把自己调教得更有教养,这自然就属于“监督学习”。
但总有那么一天,我们会长大、自立。远离父母、走出校园后,没有人告诉你对与错,一切都要基于自己早期已获取的知识,从社会中学习,扩大并更新自己的认知体系。从这个角度来看,现代人类成长学习的最佳方式当属“半监督学习”!它既不是纯粹的“监督学习”,也不属于完全的“非监督学习”。
那么到底什么是“半监督学习”呢?下面我们给出它的形式化定义,其示意图如下。
半监督学习
下面我们列举一个现实生活中的例子来辅助说明这个概念。假设我们已经学习到:
(a)马晓云同学(数据1)是一个牛人(标签:牛人)。 (b)马晓腾同学(数据2)是一个牛人(标签:牛人)。 (c)假设我们并不知道李晓宏同学(数据3)是谁,也不知道他牛不牛,但考虑他经常和二马同学共同出入高规格大会,都经常会被达官贵人接见,我们很容易根据“物以类聚,人以群分”的思想,把李晓宏同学打上标签:他也是一个很牛的人!
这样一来,我们的已知领域(标签数据)就扩大了(由两个扩大到三个),这也就完成了半监督学习。事实上,半监督学习就是以“已知之认知(标签化的分类信息)”,扩大“未知之领域(通过聚类思想将未知事物归类为已知事物)”。但这里隐含了一个基本假设—聚类假设(Cluster Assumption),其核心要义就是:相似的样本,拥有相似的输出。
常见的半监督学习算法有生成式方法、半监督支持向量机、图半监督学习、半监督聚类等。
从“中庸之道”看机器学习
说到“中庸之道”,很多人立刻想到的就是“平庸之道”,把它的含义理解为“不偏不倚、不上不下、不左不右、不前不后”。其实,这是一个很大的误解!
“中”非常重要,以至于只有少数人才能使用。在“铁马金戈风沙腾”的战场上,军旗飘飘,唯有一人高高站在战车上,手握其“中”,其他将士都视其“中”而进退有方(见下图第二行第一字),而手握其“中”的人称之为“史”(见下图第一行第一字)。
中庸之道,寓意为何
再后来,“中”有了各种各样的引申含义。比如,“中”还有中心、核心的含义,此外,“中”的外形也很有意思,它有点像“0和1”的串联组合。其实,“中”还有一个读音叫“中(zhòng)”,含义是恰到好处,不偏离原则,坚守关键点。
下面再来说说“庸”。“庸”的上半部是“庚”,“庚”同音于“更”,即“变化”之意(见上图第四行第一字)。而“庸”的下半部是“用”(见上图第三行第一个字),“用”的本意为“变化中的不变”,即为“常”。在编程语言中,“常量”即指不变的量。所以,“庸”的最佳解释应该是“富有弹性的坚定”。
那么“中庸”放在一起是什么意思呢?它告诉我们“在变化中保持不变”。其中,所谓“变化”,就是我们所处的环境变化多端,所以也需要我们“随机应变,伺机而动”。而所谓“不变”就是我们要“守住底线,中心原则不变”。二者合在一起,“中庸之道”就是告诉我们要在灵活性(变)和原则性(不变)之间,保持一个最佳的平衡。
那“中庸之道”和机器学习有什么关系呢?其实这就是一个方法论问题。“监督学习”,就是告诉你“正误之道”,即有“不变”之原则。而“非监督学习”,保持开放性,但就有点“随心所欲,变化多端”,不易收敛,很易“无根”。
那“中庸之道”的机器学习应该是怎样的呢?自然就是“半监督学习”,做有弹性的坚定学习。这里的“坚定”自然就是“监督学习”,而“有弹性”自然就是“非监督学习”。
“有弹性”的变化,不是简单的加加减减,而是要求导数(变化),而且还可能是导数的导数(变化中的变化)。只有这样,我们才能达到学习最本质的需求—性能的提升。在机器学习中,我们不正是以提高性能为原则,常用梯度(导数)递减的方式来完成的吗?
所以,祖先的方法论其实是很牛的。只不过历时太久远了,其宝贵的内涵被时间的尘埃蒙蔽了而已。
————
本文节选自博文视点新书《深度学习之美:AI时代的数据处理与最佳实践》。