知行编程网知行编程网  2022-02-01 16:00 知行编程网 隐藏边栏 |   抢沙发  5 
文章评分 0 次,平均分 0.0
数据有偏差,照样能学对!20年前就有这么强的算法了?

数据有偏差,照样能学对!20年前就有这么强的算法了?背景数据有偏差,照样能学对!20年前就有这么强的算法了?

“每个人都依赖自己的知识和认知,同时又为之束缚,还将此称为现实;但知识和认识是非常暧昧的东西,现实也许不过是镜花水月——人们都是活在偏见之中的,你不这样认为吗?这双眼睛,又能看多远呢?”

机器学习,作为模仿人类思维方法进行建模的过程,虽然从数据中抽取模型的水平还不如人类,但是在获取偏见(bias)的方面,已经青出于蓝而胜于蓝了。关于机器学习模型偏见产生的机理谷歌花了59页,从自然语言、图像处理和生物医疗领域进行了详细的分析。结论是,不论数据集多大,必然存在采样偏差,因此模型或多或少总会学到假特征,扩大数据集不是修正模型偏见的终极解决方案。遗憾的是,谷歌并没在文中提出有创见性的改进意见,只是建议大家多做测试。

数据有偏差,照样能学对!20年前就有这么强的算法了?

不过,谷歌没搞大新闻也没关系。Hugging Face表示:即使不去显式地定位模型的偏差,即使只有有偏的数据集,他们照样有办法炼出鲁棒性高的模型,能从容应对与训练测试集分布不同的真实场景。这是怎么做到的呢?下面就让我们一起来看看吧~

论文题目:

Learning from Others' Mistakes: Avoiding Dataset Biases Without Modeling Them

论文链接:

https://arxiv.org/abs/2012.01300

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0125】 下载论文PDF~

数据有偏差,照样能学对!20年前就有这么强的算法了?核心思想数据有偏差,照样能学对!20年前就有这么强的算法了?

“盲人摸象”是现在很多模型的生动写照:大象(真实场景中数据量)体积庞大,盲人仅凭双手难以触及全貌(采样无法覆盖所有场景)。即使一群盲人摸同一头象,每个人也只知道部分内容,容易以偏概全(假特征)。如果让每个盲人独立判断自己摸到的是什么,就会把非决定性特征视作决定性特征,从而出现不同的预测错误。

但是,如果允许盲人们交流讨论,他们就可以分析各自判断错误的原因。以此为依据去调整每个特征导向正确结果的概率,甚至归纳出新的隐藏特征。这篇论文的工作,就是在探究 “盲人”(弱学习器,weak learners)之间如何进行有效地“讨论”Products of Experts),并分析每个弱学习器至少需要掌握多少信息,才能对正确的预测结果有所帮助

数据有偏差,照样能学对!20年前就有这么强的算法了?方法数据有偏差,照样能学对!20年前就有这么强的算法了?

从一个“古老”的方法说起

看到Product of Experts (PoE)的第一眼,白鹡鸰是懵逼的。这个名字很自然地令人联想到专家系统的某种变体。然而,这都2021年了,莫非是要文艺复兴的节奏?仔细一查,PoE的作用确实是总结多个模型包含的知识,基于特定算法和总结的先验知识进行预测,妥妥的一个专家系统,在2002年由Hinton大神提出 [1]。顾名思义,PoE在基于个专家模型构建最终的预测模型时,公式中充斥着累乘:

 

 

其中是可能出现的事件,是模型中所有的参数,是模型预测事件出现的概率,是事件的状态空间。当状态空间是连续的时候,需要将分母上的累加改为积分。这个公式符号有些复杂,但实质就是在先验信息是联合分布的情况下,求一个事件发生的概率

这个方法的优点在于:即使每个专家模型都只关心特定的事件,而对其他情况预测表现不佳,综合下来,PoE对事件的预测都能达到一个较好的结果。

具体应用过程

在Hugging Face提出的方法中,需要一个弱学习器 和一个主学习器。记和输出的logits vector(即未经归一化的概率分布)分别为和。数据集和标签记作,最终预测结果有类。

首先,用标准化交叉熵作为损失函数,预训练。然后挑选出预测错误的样本集

接着,将作为输入,得到两个学习器的输出,构造合并后的logits vector:

 

 

则显然有(因为公式的分母都是常数)

 

 

换言之,

 

 

(其中是向量中对应元素相乘的运算符号)

再把上式右边再归一化处理一下,就有

 

 

(这里是指将向量的每一维累加)

如果将 看作PoE中子模型的预测输出,可以发现看似简单的构造中其实蕴涵着PoE的思想。感兴趣的朋友们可以参考Hugging Face的原文和[2]自行推导。

当用逻辑回归进行二元分类任务时,和可以视作标量(即预测为正样本的概率), 上式中的softmax也退化为sigmoid。则针对单个正样本的损失函数为

 

 

此时冻结的参数,只更新的参数。损失函数是上述PoE loss与普通交叉熵损失之和,只用来更新。训练完成后,即为最终的预测模型。这样就达到了令向“学习” 的效果。但与知识蒸馏不同之处在于,这里的“学习”并非以“模仿”为目的,而是从的错误中进行学习

数据有偏差,照样能学对!20年前就有这么强的算法了?实验设计与结果数据有偏差,照样能学对!20年前就有这么强的算法了?

这种去偏差方法无疑设计得很巧妙:一方面,它省去了显性定位模型偏差的功夫,节约大量人力资源;另一方面,损失函数的计算较为简便,节约大量计算资源。不过,再怎么吹,没看到结果之前,都是空的。

首先是在自然语言推断(Natural Language Inference)任务上的验证。研究者们在MNLI数据集上,采用基于TinyBERT的弱学习器和基于BERT的主学习器进行训练。模型的任务是基于前提(premise statement),将假设(hypothesis statement)分类为真(entailment),假(contradiction)或不确定(neurtral)。训练完成后,不仅在MNLI数据集上检测分类的准确性,还在与MNLI数据分布不同的HANS上检验了模型,结果如图1所示。在heuristic-non-entailment的样本上,PoE将主学习器的正确率提高了将近24%;但是在与in-distribution accuracy上,预测效果不升反降,这可能是因为文章提出的模型过于关注弱学习器犯的错误,而没有关注in-distribution prediction的优化导致的。

数据有偏差,照样能学对!20年前就有这么强的算法了?

然后是在QA(Question Answering)任务上的验证。学习器和上文设置一样,用SQuAD数据集训练,在Adversarial SQuAD数据集上检验。结果如图2所示。这一任务上,PoE的采用对预测器鲁棒性的优化十分显著。

数据有偏差,照样能学对!20年前就有这么强的算法了?

上述测试以外,文章还探讨了弱学习器的参数量和主学习器的鲁棒性的关联。由图三可以看出,弱学习器的正确率不会随着参数量的增加获得很大提升。而主学习器在in-distribution数据上性能显著下降,在out-distribution数据上则性能提升。数据有偏差,照样能学对!20年前就有这么强的算法了?

数据有偏差,照样能学对!20年前就有这么强的算法了?总结和感想数据有偏差,照样能学对!20年前就有这么强的算法了?

除了对模型本身的理解,写这篇文章更深层的动机是想说明:处理数据不均衡/模型有偏正在成为机器学习中共同的研究热点。其实在任何基于统计原理的建模方法上,这都是一个无法回避的挑战,只不过说之前因为数据量不够、基本模型不够完善所以热度没有起来。而现在时机已经逐渐成熟,2021年,恐怕这个难点上大新闻会此起彼伏,真是令人期待。 

数据有偏差,照样能学对!20年前就有这么强的算法了?

[1] Hinton, Geoffrey E. "Training products of experts by minimizing contrastive divergence." Neural computation 14.8 (2002): 1771-1800.

[2] Mahabadi, Rabeeh Karimi, Yonatan Belinkov, and James Henderson. “End-to-End Bias Mitigation by Modelling Biases in Corpora.” ACL,(2020). https://arxiv.org/abs/1909.06321

[3] Utama, Prasetya Ajie, Nafise Sadat Moosavi, and Iryna Gurevych. "Towards debiasing NLU models from unknown biases." arXiv preprint arXiv:2009.12303 (2020). https://arxiv.org/abs/2009.12303

[4] He, He, Sheng Zha, and Haohan Wang. "Unlearn dataset bias in natural language inference by fitting the residual." arXiv preprint arXiv:1908.10763 (2019). https://arxiv.org/abs/1908.10763

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享