有读者私我有关 active learning
的问题,很抱歉,我很早的时候就弃坑了。我去年12
月调研过 active learning
的有关文献,主要是精读了本篇文章和 CVPR2017
的一篇 poster
(论文地址)。
读了这两篇文章后,我就心生退意了,以下完全是我的个人看法,可能比较 偏激 吧 (真的十分抱歉),在一次组会上作报告时,我当众说了下面这些话,导师面露愠色。。。。(当时真是愣头青啊, 心中默念 love & peace
)所以想要继续研究 active learning
的同学请忽视,请坚定你们的科研方向,千万别被我整歪了。
-
【1】
active learning
对于减少训练deep model
的标注成本没有太大的意义,典型的 为研究而研究,它仍然依赖专家的精确标注,其应用价值不及弱监督算法、无监督算法等。 -
【2】
Dirty work
太多,两篇顶会的文章都声称只用了一半数量的训练样本。当样本数不多时,我觉得完全可以随机组合出一个近似最优解,而且咋就那么巧呢,每次都只用一半成本的样本呢,手动狗头。 -
【3】算法稳定性太差。在
cvpr2017
的那篇文章中尤其明显,提出的N
种算法在不同数据集上的表现参差不齐. 在某个数据集上表现最优的算法,换了一个数据集,其性能甚至不如随机采样的baseline
。我们无法在确定使用一个方法前,就知道这个方法和baseline
性能的差异。 如果做实验发paper
还好,对每一个任务,我们把这些方法都跑一遍。但是在实际应用中,我们该怎么做呢,这些做法是不是有一点 马后炮 的味道呢 -
【4】
active learning
与deep learning
的结合更多集中在一类套路上:训练N
个网络对一个样本进行预测,根据预测结果的分歧度大小判断其标注价值。这就带来两个问题: 1) 深度网络训一个就够呛了,龟龟这每一轮还要训N
个,训练和测试成本太高了; 2) 最终得到的预测器是N
个深度网络的组合,那么最终效果的提升该归功于active learning
呢 ,还是ensemble learning
呢? -
【5】交互过程可能不协调,比如
avtive learning
一次只能挑选出1
待标注个样本,但是你可能请了三个标注专家。或者一次挑选样本的时间较长,十几分钟才出来几张,专家傻傻地等待标注会显得很愚蠢,还不如珍惜时间自己多标注一些样本。或者干脆,专家自己挑样本进行标注。都请到专家了,就好好利用人家的专业知识。
上面就是我的 个人看法,请谨慎参考。本文是我的第一次组会报告(以前发布时遗漏了几张 ppt
, 已补充 ),今天来看,里面还是有一些小错的,不准备改了,留作纪念。
要准备后天的报告会了,花了一天时间做 PPT
,准备发言稿,希望到时一切顺利。
大家好,我是研一的张立峰。我九月在失眠,十月在调研,十一月在初恋又失恋,十二月又在失眠,至今还是一事无成。但是我今天还是要坚强又厚脸皮地站在这里向大家分享这篇文章,希望大家会喜欢。
好,趁大家脑子最清醒的时候,我先简单介绍一下这篇文章的工作。否则听个老半天,都不晓得人家在干啥。
任务背景是: 用语义分割网络 FCN
对病理组织图片进行细胞分割
遇到的困难是 :有标注训练数据的难以获取,原因包括标注过程依赖专家知识,标注时间长
Motivation
是: 在标注成本一定的条件下,为达到最佳训练效果,我们需要判断出哪一个未标注样本是对模型训练贡献最大的,然后我们去标注它。
解决方案是: 结合 FCN
和主动学习算法。
我去搜 active learning
的中文资料时,发现并不多,这个方向并不热,搜到的都是些“孩子要主动学习” 之类的文章。接下里我们不妨引入教育领域的相关概念,来慢慢解释这篇文章的思想。确保在场的每个人都能听懂,听不懂算我输。
提醒一下大家,看 ppt
的过程中请注意我的标题啊。
众所周知,深度学习机器通过海量数据的训练来学习某项技能或知识。如果将他们比作一群智障的话,就是需要依靠题海战术来学习知识。
在我们需要依靠刷题来学习时,我们经常碰到下列情形中的问题:
1)我有题目,但是没答案.。
2)我有题目,但是答案很简单,很粗糙,甚至有错误
3)最惨的是,连题目都没得刷。就像期末考时找不到往年卷子练手。
第一种情况恰好对应到这篇文章面临的问题,我有大量未标注的数据。怎么办呢,我们这些学渣怎么办呢?
诶~~我们可以花钱请家教啊。我们希望老师怎么帮我们呢:
首先作为老师,他必须能做题,这点毋庸置疑,而且给出的答案是相当靠谱的,这相当于医学专家能对样本进行可靠标注。
更重要的是,他能指导我们学习,能根据我们的学习情况挑一些值得做的好题目。而 active learning
就是这样一类算法,能挑出对 FCN
训练贡献最大的样本。
好,我们现在明确一点,ACTIVE learning
+ 标注专家 相当于为智障学生FCN
请的一位家庭教师,这个教师有双重功能,能做题,能挑题。如果你们了解半监督学习,你会领会到我将ACTIVE LEARNING
与教师联系在一起的别有用心了。
好,有了“学生”和“教师”两个智能体我们可以设计出我们的学习框架。
先从学生和老师的角度看,中间的大圆代表没有参考答案的习题,上面的绿色圆则代表有参考答案的习题。学生通过刷绿色圆内的习题进行学习,黄色圆内的习题则做为测试题。老师通过学生们的考试情况,进行学习情况的评估,再从黄色圆内挑出一些好的例题,自己把它做了,给出参考答案,扔到绿色圆里,供学生刷题练习。
从 FCN
和 active learning
的角度看,中间圆圈代表未标注样本,绿色圆则代表已标注样本。FCN
通过标注样本进行训练。Active learning
则根据 FCN
在未标注数据集上的分割效果,来筛选出下一批标注的样本,扔给医学专家进行标注,标注完成后,扔到训练集里去。以此循环。
接下来我们分别从学生和老师的角度,对他们提出相应的要求。我们先来看学生,一个学生如果笨到一定程度,请再好的老师,做最好的题也没用,就是我们常说的朽木不可雕也。一个好学生通常具有两个优点。第一点就是吸收知识快,学东西快。不像有些学生,老师叫他复现一篇文章,结果慢慢悠悠拖拖拉拉屁事都没干成,光失恋失眠去了。还有一个原因就是,如果你做一道题需要花上一天,这个老师怎么等得住呢?就算等得住,这个老师是花钱请来的啊,现在家教一小时都好几百吧。第二点就是悟性高,举一反三的能力强。一个学生光会做训练题,一到考试就血崩,肯定不行啊。最夸张的就是,这种学生很可能只会背答案,把所有练习题的答案都背下来了,这是极端情况下的“过拟合”。
相应地,我们对传统 FCN
做出了一些改进。第一它的训练速度要快,这样两个标注过程的时间间隔可以让人接受。我们采用了批量正则化和残差网络技术。第二,它的泛化性能高。我们采用瓶颈设计技术。这些都是神经网络里的炼金术,我们先做一个心中有数的了解即可,因为我没去跑过网络,没有发言权。在 PPT
最后一页我会放出整个网络细节,供各位大佬讨论。我们接下来谈谈更有意思的东西,也就是从老师的角度考虑问题。
我前面说过老师要会挑题。联系实际,我们老师通常会讲解那些题目呢?我相信在座的各位对这个情形并不陌生:老师在讲台上问: 这道单选题你们选什么啊? 有人说选 A
,又有人说选B
,选C
,还有傻吊说老师这不是单选题,我选A,B,C,D
.老师心里肯定想:卧槽 你们瞎几把猜的吧,好,那我们就来看看这道题。这就给了我们一些启发。
我们采用一种自举设计的算法,该算法的基本思想跟前面的情形很像.
我们训练一批FCN
, 就是前面的讲的学生,然后我们计算这些FCN
对同一个像素点的分类分歧度,如第一个FCN
判断某个像素为细胞的概率为0.9
,第二个fcn
则判为0.5
,第三个则为0.1
……文献中是使用概率方差来衡量这个分歧度。最后将一幅图像的所有像素分歧度相加,结果作为当前FCN
对这张图像的不确定性度量。然后我们从中挑选出不确定性最高的几幅样本进行标注。
老师挑出一些学生乱猜的 题目后,一瞧,豁,有几道题很类似嘛。我就讲解其中一道典型题目就好了。
同样地,我们根据 fcn
的分割结果,挑出一些不确定性最高的样本后,发现部分样本具有很高的相似度,直觉上告诉我们标注成本还可以进一步降低。对一批相似度高的样本,我们挑出一个最具代表性的样本进行标注即可。那么我们如何衡量样本之间的相似度呢?
我们联系到一些歌单推荐算法,比方说网易云的每日推荐。我们将两个人的个人歌单视作一个稀疏向量,这个向量的每一位代表一首歌,按照用户对这首歌的不同操作,如听过、喜欢、收藏、分享、抛弃等,置不同的分数,然后用余弦距离度量两个歌单向量的相似度,估计出两个人听歌口味的相似性,如果很相似,那就将两人的歌单做交叉推荐。解释一下,余弦距离就是两个向量的夹角余弦值。
所以我们只要将这些样本转出成一个合适的描述向量,也即特征向量,利用余弦距离度量它们之间的相似性,是不是就可以了呢。我们如何将一幅图像转化成一个特征向量呢? 方法有很多,最简单的就是直接将整幅图像的灰度值作为特征向量。我们也可以用CNN
,因为CNN
的强大之处之一就是无需人为设计特征,可以自动生成图像的特征描述子。好,那是不是意味着我们要额外训练一个图像特征生成网络CNN
呢?
并不是的。我们来观察最原始的 FCN
网络结构。我们发现 FCN
其实包含了CNN
结构,只不过将全连接层改成了卷积层。我们只要将 FCN
中的编码部分最后一层卷积层的输出作为特征描述子即可。也就是说,这个 FCN
有两个任务,它既做分割,也做图像特征向量的生成。
好,我们见到了第一个公式。如前所述,我们将一幅图像送进FCN
,取FCN
编码部分( Encoder
)的最后一层卷积层生成一个特征向量。然后用余弦距离度量两个不同特征向量的相似度即可即可
到目前为止,我们已经设计好了两个样本挑选标准: 不确定性,典型性(代表性)。
我们的样本选择过程可以相应地划分为两个步骤:
第一步,我们从Su
: 下标 u
代表 unannotated
,所有未标注样本集合,根据不确定性度量的高低从中挑选出K张(K
为超参,实验中设为16)组成候选集Sc
,下标 c
代表 candidate
。这一步还是相对来说还是很简单的。
第二步, 我们从候选集 Sc
中基于相似度信息,从中挑选出最具代表性的k张图片组成标注集合Sa
,下标 a
代表 annotated
. 这是一个组合优化领域中的“最大子集覆盖”问题,是一个NP_hard
问题。怎么办呢?
我们采用逆向思维,假设已经找到了,看看这个 Sa
应该满足什么性质。
我们从 Su
中挑出一个样本 Ix
,然后从 Sa
中挑选出与之最相似的样本,它们之间的余弦距离值作为 Sa
对 Ix
的代表性估计。
我们遍历 Su
中的所有样本 Ix
,每次都从 Sa
挑选出与之最相似的样本,计算两者之间的余弦距离,最后求和相加,我们就得到了 Sa
对 Su
的代表性度量。显然,Sa
应该是使该和值取最大的集合。
大家消化一下。
一下子找出 Sa
中的全部元素,使它们构成的集合满足 该优化目标函数是很困难的。我们利用贪心策略从 Sa=空集
开始,一步步构建出这个最优或者近似最优集合。
我们初始化 Sa=空集
,Sa
对 Su
的代表性为 0
,然后每次都从 Sc
中挑选出一个样本,使它和当前集合 Sa
组成一个的新的集合,使之最能代表Su
.直到 Sa
包含了 k
张样本。
第一次接触贪心算法可能还有点难度。这部分的算法原论文用了大半的篇幅解释。我们可以考虑一个比较直观的例子,我当初就是想到这个例子,然后结合前面讲的老师学生结构的学习框架,就把这篇文章的意思猜的差不多了。
假设我们的候选集是十个手指头和十个脚趾头,问题是如何寻找出一个最能代表这些指头的子集合呢?
很显然,我们应该找出 5
个指头,包含拇指,食指,中指,无名指,小拇指等,我们是如何找到这个解的呢?。这个例子大家私下里可以动动自己手指和脚趾,来更好地理解我前面讲的贪心策略。出于学术的严肃性,我就不在这个报告会上继续展开了。
这是实验用的数据。
这是实验结果,两次标注间隔需要 10
分钟。使用 50%
的数据集号称达到了state of the art
。
谢谢 !!!
作 者: 月牙眼的楼下小黑
联 系: zhanglf_tmac (Wechat)
声 明: 欢迎转载本文中的图片或文字,请说明出处
网友评论