Chapter 1. The Story

这是一个起源于数据的故事。
“Data are not created equal.”   — Jennifer Prendki
我们都知道现在大数据越来越容易获得了,但更多的数据等于更大的信息量吗?
No。
现实中大多数数据脏乱差而且冗余。
虽然你可能没有接触过机器学习,但是这件事你保证体验过,比如搜索“人工智能”,第一页可能全是广告(脏数据);搜索“感冒怎么治”,前三页结果没有本质区别(冗余数据)。
v2-52abf848592a987f1e985532f1ee56ec_720w.jpg 这是个信息爆炸的时代,但充斥着脏数据和冗余数据,“更多数据”不等于“更多信息”
这种特点在很多机器学习落地的场景里都存在。自动驾驶车载摄像头一秒采集10帧照片,但很可能10帧照片里的内容是非常相似的,其中真正有信息量的可能不过2-3张。我们希望从海量数据里挑选出那些真正有信息量的数据,因为否则就会面临巨额标注成本的问题。
做一个简单的估算。一辆自动驾驶汽车上的摄像头一天可以搜集1TB以上的图像数据。假设一张图100kb,而每张图的标注价格在国内市场5分钱左右。全部标注需要花费1TB/100kb*0.05 = 50w人民币。这只是一天的数据量,还没考虑自动驾驶常用的激光雷达的标注(比图像标注要贵的多)。
高昂的标注成本是新时代的大数据危机(Big Data Crisis)。尤其对于那些需要不断收集、标注新数据进行模型迭代的公司来说压力尤甚。
然而很遗憾,传统的机器学习范式在这件事上并不能帮到我们什么。

“Computers are useless. They can only give answers.” — Pablo Picasso, (1881-1973)
“电脑都是铁憨憨,他们只知道回答问题”
毕加索对于新科技的评价一语中的。在他老人家仙去四十多年后,我们用着花哨的机器学习、人工智能算法,然而基本上依然停留在“give answers”的阶段:在限定的场景里学习限定的数据进而完成限定的任务。
这种传统也是最常见的机器学习范式叫做被动学习(passive learning),它糟糕的地方在于对大数据危机毫无帮助甚至助纣为虐。一个机器学习算法需要学习一百万张照片才能分得清猫猫狗狗花花草草,然而一个智商正常的小孩见过一两次就可以。小孩会问你,这是啥那是啥,这是为什么那又是为什么:我们终生活在各种无用的、冗余的信息之中,但我们懂得在不明白、不确定的时候通过合适的提问来找到真正有用的信息,增进对世界的认知。
提问是人类高效学习的重要手段。
“A prudent question is one-half of wisdom.” — Francis Bacon, (1561 - 1626)
机器可以像人一样提问吗?机器自己可以从脏乱、冗余的大数据里挑选那些有价值的数据去学习吗?Well,从大方向来说是可以的。
这就是即将为大家介绍的一种很有潜力的机器学习范式:主动学习(active learning)。

Chapter 2. The Loop
主动学习是毅种一种循环(loop)的框架,和传统的被动学习不同,模型通过“提问”(query)的方式主动参与训练集的选择。
v2-4b9b314f937c48f2746c41d0c91ad017_720w.jpg 主动学习框架[1],一种循环工作主动筛选最有价值数据的过程
具体来说,假设我们已有一个预训练的初始机器学习模型(machine learning model)和一个没有标注的大数据池(unlabeled pool)。模型首先通过信息熵或者方差之类的方法估计数据池里每一个样本的信息量。一般来说,我们认为,如果模型的输出不确定性越高,那么对应的输入样本的信息量就越大。模型在非监督的状态下挑选那些最不确定(也是有价值)的数据(select queries)去问所谓的“先知”(oracle,通常是人类标注员)。“先知”把这些模型主动挑选出来的数据(query data)标注之后加入到训练集里用以重新训练模型(learn a model)。更新后的模型在剩余的未标注数据池里继续挑选,重复之前步骤,直到模型性能迭代到满意的程度[1]
以上这种模式叫做Pool-based Sampling,是主动学习的一种,也是学界研究最多的一种。此外还有Membership Query Synthesis和Stream-based Selective Sampling。前者的未标注数据通常是通过模拟的方式自动生成而不是采集真实数据的结果。后者强调未标注数据的收集是一个源源不断(streaming data)并且成本极低的过程。在这两种场景下,主动筛选最有信息量的数据进行标注的思想和Pool-based Sampling是一样的,不多赘述。
主动学习的常见结果如下图所示:
v2-12022b9bf4a4375d31516a2b75abcc74_720w.jpg 主动/被动学习的学习曲线。横坐标:标注的数据量,纵坐标:模型的准确度。灰色为被动学习,蓝色为主动学习,后者显著提高了学习效率。图片来源于网络。
可以看到,使用同样数量的标注数据,主动学习模型可以取得更好的性能。或者说,为达到同样的性能,主动学习需要的标注数据更少。
总标注数据量有限的时候,主动和被动学习曲线大多数情况下会收敛到同样的准确度。而模型长期迭代,标注数据源源不断时(亦即横轴无限延长),理想结果是主动比被动学习曲线永远好那么一点。

主动学习为降低海量数据标注成本,缓解机器学习的大数据危机提供了一个潜在的解决之道,在工业应用中有深刻意义。深度学习三巨头之一,2018年图灵奖得主Yoshua Bengio在今年6月接受Synced采访时也表示,2019年机器学习最重要的趋势之一是从被动学习转向主动[2]
然而,这个转变的过程并不会一帆风顺。因为尽管有很多研究证明了主动学习是一种更高效的学习范式,但不论是在研究还是应用领域,主动学习依然面临着很多挑战。

Chapter 3. The Challenges
从研究的角度来说,主动学习还需要更强大的理论支撑。
比如,如何准确估计数据信息量尚缺共识。对于一些传统机器学习算法,例如SVM,已有成熟的理论体系告诉你该如何估计,行之有效且解释性很强。然而,如何估计样本对于深度神经网络的不确定性和信息量,学界还处在百家争鸣的状态。有很多自圆其说的算法,并且在不同场景下被证明work,但质疑的声音也从不间断。
再比如,挑选、标注好了数据,如何在这新数据上重新训练模型而不损失性能依然是一个很有挑战的问题。这涉及到Incremental Learning,Continual Learning甚至Transfer Learning。每个方向都值得深耕。

从工业应用角度来说,主动学习还没形成一套标准化的解决方案。

主要体现在三个方面:
首先,针对不同的机器学习模型和任务,最优的主动学习框架的具体参数和策略是不同的。一般需要大量实验才可以确定,开发成本很高,有点类似于神经网络调参的过程。
其次,很难用归纳法以外的方法“证明”主动学习有效,从而对工业应用来说是一个潜在的风险点。例如,我们想证明主动学习节省了一半的标注数据,但除非真正标注了所有的数据并且做实验对比传统和主动学习方法,否则就只能通过归纳法“推断”机器学习是有用的。
最后,主动学习缺少足够的可解释性和鲁棒性。主动学习所挑选的数据有可能是反直觉的,我们无法理解为什么会挑选这样那样的数据去标注。并且,框架中的机器学习模型的鲁棒性直接影响主动学习的鲁棒性。一个不成熟的模型会导致数据筛选有很大的随机或倾向性。所以在主动学习的实际应用中,往往要根据具体模型和任务辅以其他数据处理和训练的算法。
面对大数据危机,主动学习对传统被动学习范式的颠覆或许是这黑暗里希望的微光。任何技术都有自己发展的轨迹,主动学习在取得非常promising的结果之后还有自己的坡要爬,山要翻,路要走。

来源:小鹏汽车