【论文笔记】Multi-task Learning with Sample Re-weighting for Machine Reading Comprehension(2019,NAACL)
这篇论文主要提出了一种多任务学习(Muti-Task Learning, MTL)运用于MRC技术时,以“给辅助数据集添加权重”的方式来衡量数据可能的贡献,以此也防止非领域数据对模型的污染,其中自动添加权重的思路非常巧妙,值得学习。
1.介绍
作者认为相对于模型庞大的参数量,数据集还是太小了。
实际上已经不算小了,但对于一些领域特定的数据集,确实还是没有足够的数据量。
因此,作者把目光头像了MTL,这个概念已经被机器学习广泛地应用了,在不同的但相似的任务上对同一个模型进行训练被认为是可以提高模型的泛化能力,作者认为这也算是一种隐式的数据增强。
但是,作者发现仅简单地添加更多的任务并不能带来更显著的提升。猜想这可能是由于不同任务的领域知识发生了冲突和污染,因此作者提出了两种策略,一种是通过一个参数来控制从辅助任务中随机采样数据协助训练,另一种是通过一种利用语言模型的方法来自动为每条数据附加一个权重,这两种方式都会在下面详细介绍。
最可贵的是,这种策略是一种数据选择策略,而与具体模型无关,可以被简单地应用在各种模型上。
2.策略介绍
作者使用了SAN作为基线模型 (Liu et al.Stochastic answer networks for machine reading comprehension)。由于这篇文章最大的贡献在于训练策略,模型这不算是这篇文章的重点,就不详细描述了。
值得一提的是作者在原模型的基础上,几乎在每个步骤后面都添加了highway network,这在单模型单任务上也带来了相对于原模型的提升,而针对于多任务场景,我猜想作者是利用了highway network的“数据路由”作用(参考之前的笔记),从而让网络也学习到了不同任务数据的处理方式,这一点也很关键。
另外,作者的Highway Network在论文中和在具体代码实现里都非常迷惑,在论文中他估计是笔误,转换门和携带门是同一个值;而在代码中就更迷惑了,没有携带门,直接加上了x。我寻思这更像是带了个转换门的ResNet组件吧。
针对于MTL,作者提出以下三种策略(作者直接叫算法1,2,3,标题的名字是我加的):
2.1 简单结合
顾名思义,将辅助任务的格式与目标任务统一,直接将所有样本shuffle,一起进batch进行学习,所有模型共享参数。即使是这样,模型也比单任务有了一定的提升。
2.2 比例混合
使用一个超参数来代表从辅助任务中采样的样本比例。
在每一个batch中,有比例的样本来自于辅助任务。
优点是相较于简单结合这确实带来了提升,容易实现,在只有两个数据集时可以尝试。缺点是这个超参数必须用网格查找的方式得到,费时费力。
2.3 语言模型权重
重点来了。
这个方法的核心思路是:对每一条来自于辅助任务的数据,依据其对于目标任务数据集的相似度进行一个打分,用这个分数作为该条数据的权重,直觉上,越相似的数据带来的帮助越大,因为不会污染领域知识。
如何去衡量“相似度”这个概念呢?作者提出的方法非常巧妙,他利用了语言模型来判断。
首先,我们有来源于个任务的数据集,用来描述某个任务,是目标任务。
作者认为文章通常超过1000词,评判文章相似度难度很大。因此只使用问题和答案来进行评价。
-
对于问题,为每个任务建立语言模型,其中。 它表示一个词出现的概率。
-
而对于答案,由于数据集中答案的长度一般很短(例如SQuAD 1.0数据集中答案平均长度为3.5),很难建立有效的语言模型,因此只用长度作为一个特征进行评价。
用代表任务 中的一条数据,分别表示文章、问题和答案。
对于问题:
表示任务中的一个问题对于任务的一个初步的相似度评价。
之后,对这个分数进行一个归一化:
其中和是所有任务中的问题与任务的评价的最大值和最小值。
对于答案:
其中,表示答案样本的长度,表示该答案长度在任务中的频率估计。
同样的,也要进行归一化:
可以看出,较低的值表示样本与任务相似,反之亦然。作者认为有价值的样本,应该与目标任务即更相似,而与任务中的其他样本不相似(这一点是TF-IDF的思路,但我觉得值得商榷)。
因此我们可以通过下式计算得分:
因为这个得分越低相似度越高,因此取负并归一化:
最终得到了这个相似度指标。这个计算是对于辅助任务中的样本的,而对于所有目标任务样本直接恒等于1.
3. 分析
实验结果如下:
对这三个策略的消融分析如下所示:
作者同样在DrQA模型进行了实验,得到了一定的提升。