5月25日消息,“2019年未来论坛·深圳技术峰会”(以下简称峰会)在深圳市举行,上海交通大学教授,未来论坛青创联盟成员张娅在峰会上发表题为《资源受限下的机器学习及其在图像理解领域的应用》的演讲。
以下为演讲全文:
今天下午很荣幸能在2019年未来论坛·深圳技术峰会跟大家分享一下我们在资源受限下机器学习方面的一些成果。现在我们站在人工智能的巨大风口上,当我们谈到人工智能的时候,我们自然而然会想到人工智能的四个重要因素,这里面有数据、算法、计算以及最后的应用场景,我们在做人工智能研究的时候,其实这四个要素是缺一不可的,但是我的研究中想重点从数据的纬度展开。
刚才彭总也介绍了,我们人工智能或者说机器学习的研究过程当中,首先我们需要积累大量的训练数据,对每一个具体的任务我们都需要构件一个Dedicated的数据集,它是非常费时费力的,举个例子来说,斯坦福有一个非常著名的数据集ImageNet,这个数据集的构建可能耗时长达四五年之久,最后通过亚马逊的Mechanic Turk完成的,这个数据集被认为是广泛的驱动了这一届人工智能的兴起,在之后我们也看到各个大公司,包括微软,包括Google都开始推出了类似的数据集,这些数据为我们学界的研究也提供了重大的数据资源。大家可以看这个表格,都是以百万级规模的数据集,对于很多行业的应用来说,我们要快速的积累这么大规模的数据集,其实是不可行的,拿一个例子来说,在医疗这个领域,存在很多罕见病,全世界的病人加起来可能也不超过万例,对于这种病的研究,我们怎么依赖少量的数据进行学习呢?所以我们的研究主要聚焦在如何减少数据标注的代价,我们将从三个方面来展开。
第一方面是能不能标注更少的数据,也就是不要标注所有的数据。第二是能不能减少标注的单位成本,也就是说用一个更粗糙的方式进行标注,而不是用非常完美的方式。第三是我们现在在网上其实可以采集大量的数据,这些数据自然而然的就有一些标注信息给到我们,只是这些标注信息是含有大量噪声的,怎么让我们的模型容忍这些噪声,或者从这些噪声当中仍然能够提取出来有效的成分,训练这个模型。这就是我要讲的资源受限下的机器学习。
首先来看一下怎么减少我的标注数量,这里我们采取的是主动采样、主动学习的方式,我们通过选择性的标注,而不是用随机性的方式进行标注,达到节约标注成本的目的。
传统的机器学习通常采用被动学习。一个标准流程是假设我们有大量的数据,我们以一种随机的方式根据数据分布从数据当中选取一些样本,请专业专家或者是请一些有标注能力的人来进行标注。这样建立的模型,相当于我们的数据采集过程是一个比较简单、被动的过程,而主动学习恰恰是在数据采集的过程就开始进行学习,这里我们是在数据采集的时候对每一个数据样本进行评分,我们去评估这个样本是不是对我们的模型训练会有用,当这个样本对模型训练有用的时候,我们才送给人工标注,这样我们可以极大地减少数据标注的代价。但问题又来了,我们还没有模型,还没有训练模型,我们只有一堆数据,我们怎么知道这一堆数据哪些对我们的模型训练是有用的,哪些对我们的模型训练是没用的?挑战在于我们如何定义这个有用性。
在这个方面,我们提出了一个方法,首先我们认为如果一个样本对模型训练有用,它要能够改变当前的模型,如果它和当前的模型融合的非常好,那么它不可能对模型有所改变,也就是说它不可能对我们的模型起到改良和改进的作用。因此我们提出要选择最有可能改变模型参数的这些样本,这样的样本就能够起到改进模型的作用。
所以基于这个思路,我们就设计了基于一种随机梯度下降的方式选择对每一个样本进行评分的方式,随机梯度下降本质上是模拟了模型训练的方式,去评估每一个样本对模型参数改变的能力。我们在刚才讲的斯坦福ImageNet数据集上进行了实验,实验结果用这个曲线图表示。红色曲线是我们通过主动学习所得到的精确率,曲线越高,说明效果越好。下面紫色的线是随机的方式,可以看到通过主动学习,我们可以在相同数据量的情况下显著的提升模型的精确度,或者说在相同精确度的情况下显著的减少标注的数量。
下面来说第二个方面的工作,我们怎么利用更粗糙的标签,这里我们提出的方法是通过一种弱监督的方式。首先我们来看一些具体的应用场景,我们选择的一个应用场景是精细粒度的语义识别,对于这一类的问题,它有一个非常特殊的,或者说非常显著的特性。大家如果看右边这幅图,我们有三个类型的海鸥,这三个类型的海鸥如果我们拍照的时候,他们pose是相同的话,其实看起来它们之间的差异是非常非常小的,同一只海鸥在不同pose的情况下,它的差异性其实是非常大的。也就是说,我们这一类的任务,它的类别与类别之间的差异性有时候会反而小于类别内部的差异性,这就对我们机器学习带来了极大的挑战。
同时,从标注的角度,大家如果不是鸟类的爱好者,当你看到这些照片的时候,你很难区分它到底是哪一类的海鸥,就需要有非常专业的人士,可能是鸟类科学家,可能是专门在这方面有所建树的人士来标注,这个代价就非常高。因为类类之间的差距大于类间的差距,他们之间的区分可能是在一些细节上,而不是在鸟的身体整体上。大家可以看右边这个图,鸟身上有很多小点,每个小点就代表我们需要在局部精细粒度的标注点,我们需要通过这些标注点知道鸟的眼睛在哪里,嘴巴在哪里等等,这些标注的代价是非常高的,平均来说标注一张照片要花1分钟甚至更多的时间。
所以在这个工作里我们提出了一种弱监督的方式进行标注,我们不需要你告诉我鸟的头在哪里,鸟的身体在哪里,所有细粒度的标注我们都没有,我们只有一个图片级的标注,告诉我们这个鸟是哪一类的鸟。在这个框架上我们利用了刚才说到的类间之间的相似性,当我们要定位这只鸟的时候,本质上不同类别的鸟其实是非常相似的,所以我们可以利用它之间的相似性进行前景和背景的区分,当我们早定位到了鸟的位置的时候,我们再把两类不同的鸟作为敌人来进行对抗学习,这样的方式我们就可以达到一个实现区分不同类别鸟的目的。
所以当它们是在朋友阶段的时候,相当于我们要通过联合不同类别的鸟共同学习,来达到一个更好定位的目的。当它们成为敌人的时候,我们是通过用一个多分类任务的来区分它到底是哪一类的鸟,这里面因为还是弱监督的问题,我们不知道它到底是哪一个特性导致了这个分类,所以这里我们用了Multiple Instance Learning的方法来进行实现。
这是我们最终的实验结果,可以看到我们的方法最终取得了在弱监督精细粒度分类上最好的结果,用了三个数据集,前两个是斯坦福鸟的数据集,后面一个是不同亚类的狗的数据集,我们没有用到框级的标注信息,所以我们弱化了标注信息,达到了节约训练成本的目的。
对于用更弱的这种标签,还可以用一些网络的数据来进行提升。假如说我们是一个很小量的,但是是强标注的数据集。这些数据可以帮助我们提供一些专家的知识,同时我们可以是非常便宜、非常廉价的弱标注的数据集,它的弱点在于没有精细粒度的标注,它的标注在图象集的标注噪声是非常高的,会导致大量的噪声存在。
所以在这里我们设计了一个基于Transfer Learning的思路,设计了一个强监督+弱监督数据协同的学习框架,在这个框架下,基于小量的强监督数据,我们构建一个模型,这个模型包括了有特征提取、检测器等,我们可以用这些构建的模型把这些信息转移到网络数据集上,对网络信息进行一些标注,我们通过设计噪声消除模型把网络数据的噪声给扔掉,我们可以不断地进行迭代,把这类高置信度的样本加入到强监督的数据集,通过这种自学习的方式,最后达到一个模型提升的效果。这还是在斯坦福鸟类数据集的效果,有10个点的提升,这个提升是非常显著的。
我们这里也比较了一下,当我们不断地增加网络数据集的时候,是不是可以不断地有更多的增益。在上面这个曲线图里面,这个红色的代表了我们用强监督和弱监督的数据共同学习的结果。可以看到当我们在不断地增加每一类网络图象数目的时候,这个曲线是在不断上升的,证明我们加入的强数据是有效的。这里绿线是用了包围框的标注,蓝线是只用了弱监督的标注。可以看到,哪怕我们只用了弱监督的数据,当我们的数据量足够高的时候,其实我们也会超过只用少量强监督的数据,这证明了弱监督学习是非常有用的。
这里我们反过来,我们想证明如果我们使用非常非常少的强监督数据,是不是还能达到有效学习的目的。在这里我们用了两类参数,第一个是用了每一类有30个强监督的数据,第二个实验当中,每一类只用5个强监督数据,每一类的鸟我们只有5张照片,可以看到其实到最后的结果,这两个的差异已经并不是特别大。如果在资源受限的情况下,我们不能有非常大的、海量标注的时候,其实这个实验结果也还是可以接受的。
我们第三个研究的弱监督,我们希望通过一种协同学习的机制来提升弱监督的学习效果,这里简单介绍一下应用场景,研究一个弱监督的物体检测的场景,在物体检测的时候,通常来说我们也是要对物体检测场景做包围框的标注,这是我们的训练数据。这里强监督的算法,都是用原始包围框来进行标注,它的好处是这个模型会非常快,因为它的模型是一个非常快的结构。
对于提出的弱监督的模型,其实它的性能跟强监督有一个比较大的差异,其次在运行速度方面,因为它有迭代推理机制,所以会比较慢。在我们的工作当中,我们希望通过一些方式在弱监督和强监督学习的算法中架一座桥,我们希望把他们两个同时进行训练,我们用一个协同学习的机制同时训练一个强监督模型和弱监督模型,并且在训练当中用某种机制让这个强监督模型和弱监督模型互相增强。这就是我们在训练弱监督模型的时候可以用图片集的分类损失函数来进行训练,来优化它。但是因为我们没有,我们通过模型让强监督模型得到的预测结果和弱监督模型预测得到的结果这么一个条件来训练整个模型、整个网络。同时我们假设不管是强监督模型还是弱监督模型,它需要一定的一致性,所以我们又设计了部分特征共享的网络结构,通过这两个,也就是我们预测一致性的损失函数以及网络参数部分共享的机制设计,来达到协同训练的目的。
这是网络结构,我就不细讲了,这是最后的损失函数,所以我们有一个分类的损失函数,有一个一致性的损失函数,在一致性损失函数当中又分为两部分,一部分是他们的分类要一致,其次是它们的定位结果要一致,所以我们要两个一致,由两部分组成。
我们来看结果,蓝色那条线是弱监督的模型学到的精确度,红色这条线是强监督模型学到的精确度,我们可以看到非常有意思的,首先两个模型在训练过程当中都在协同爬升,都有比较大的提升,但是强监督模型是远远高于弱监督的,强监督比弱监督高出近10个点的准确率。
同时我们用这个表格来对比一下其他的,我们如果只用弱监督进行训练,当我们加入强监督这个协同训练机制的时候,我们不但提升了强监督,我们对弱监督本身也有提升。
这是我们的结果,可以看到通过这个协同学习的机制,我们学到的这个模型可以学到更紧密的包围框,同时识别检测出来的物品数量也更加多。
在一些标准的Benchmark上面进行了实验,实验结果也表明我们通过这种协同学习得到的结果达到了当时的表现。这是在VOC2012上的数据集,这两个都是目标预测数据集。
最后一个就是刚才讲了网络数据学习是一个方向,但是网络数据天然有大量的噪声,所以我们怎么进行噪声的建模,所以我们这里重点研究了噪声迁移的模型。我们现在从更多的研究医疗影象的角度来说,有数据表明同一张影像、同一个医生在不同时间去读片,正确率只能到15%,如果是两个医生,可以到25%,所以可以看到这种标注噪声其实是广泛存在的。这是我们提出的噪声迁移模型的例子,假设我们有一系列的,这个图像其实有一个标签,这个标签是我们想学的东西,我们希望通过这个图模型,我们最后观察到的这个标签是Y,我们相当于想学X到Y之间的,就是Z。
这里我们提出的,因为我们直接从X到Z到Y这个学习过程是很难的,因为有一个传递性存在。其实我们可以提出来关于标签的Quality Embedding,就是下面这个图,当我们有一个机制的时候,我们就可以通过Quality Embedding,这样我们就可以学会真正的clean标签是什么。
在这个数据集上,也是用刚才的数据集进行训练,这个数据集是一个非常干净的数据集,所以我们在这个数据集里面标注信息,这样的数据集我们可以控制噪声的比例,大家可以看到表上,第一列Pnoise,我们可以看到尽管到0.6,也就是说其实绝大多数的标签都含有噪声,最终我们的模型还可以学到63.2%的精确度,这其实是非常有意思的,照理说所有的标签都被Reverse了,应该很难学习到真实标签。档标签噪声从0.2到0.4,我们看到结果会有一个显著性的提升。
这是雅虎Flicker的一个数据集上进行的测试,这是2007年VOC的结果,可以看到是非常Consistent的,在绝大多数的数据集上我们的结果。这张图,刚才讲了,我们有一个噪声嵌入模型,相当于我们有一个标注的,左边是说假如说我这个Quality是可信的,那么我们来看我的标签是怎么转移的,从Z到Y的转移可以想象成行是Z,列是Y,可以看到这时候大量的激活其实是沿着对角线,说明它的标签信息是一致的,Y等于Z,才在对角线上进行激活。当表明它的是很高的时候,迁移就在对角线上进行。右边是说这些是不可信的,标签质量很差的时候,可以看到我们的迁移可以在任何两类之间发生。
这是我们最终训练得到的结果,上面这两行代表了我们的Correction。它的数据集标签,它被标定为一个瓶子,但其实大家可以看到它其实是一个飞机。我们通过这个模型可以非常好的把这个正确的标签给恢复出来,这个模型其实也面临一个问题,有些时候其实是难样本,大家看最后一列,最后一列是非常有趣的,基本上都是一些狗的例子,这些狗的亚类,我们人是很难区分的,我也不知道它是分对了还是分错了,我们的模型其实本质上把这些难样本也发掘出来了。
总结一下,到今天为止其实AI是一个大潮流,第三次潮流,在这个在落地的过程当中我们也意识到一个巨大的问题,每一个AI产品的落地都需要重新采集数据集,都需要从零开始训练模型,这其实对AI的落地应用是有很大限制的。我们希望通过这种资源受限的机器学习研究,来得以使这方面得到一定的突破,当然其实现在从学术角度的研究,我们还有更多的方向在做,比如说自监督学习等等,我认为这些都是未来AI能够真正从一个行业或者说领域人工智能走向真正通用人工智能的必经之路。
谢谢大家!
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。