文 | 白鹡鸰给小铁比了个心
编 | 小轶
背景
“每个人都依赖自己的知识和认知,同时又为之束缚,还将此称为现实;但知识和认识是非常暧昧的东西,现实也许不过是镜花水月——人们都是活在偏见之中的,你不这样认为吗?这双眼睛,又能看多远呢?”
机器学习,作为模仿人类思维方法进行建模的过程,虽然从数据中抽取模型的水平还不如人类,但是在获取偏见(bias)的方面,已经青出于蓝而胜于蓝了。关于机器学习模型偏见产生的机理,谷歌花了59页,从自然语言、图像处理和生物医疗领域进行了详细的分析。结论是,不论数据集多大,必然存在采样偏差,因此模型或多或少总会学到假特征,扩大数据集不是修正模型偏见的终极解决方案。遗憾的是,谷歌并没在文中提出有创见性的改进意见,只是建议大家多做测试。
不过,谷歌没搞大新闻也没关系。Hugging Face表示:即使不去显式地定位模型的偏差,即使只有有偏的数据集,他们照样有办法炼出鲁棒性高的模型,能从容应对与训练测试集分布不同的真实场景。这是怎么做到的呢?下面就让我们一起来看看吧~
论文题目:
Learning from Others' Mistakes: Avoiding Dataset Biases Without Modeling Them
论文链接:
https://arxiv.org/abs/2012.01300
Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0125】 下载论文PDF~
核心思想
“盲人摸象”是现在很多模型的生动写照:大象(真实场景中数据量)体积庞大,盲人仅凭双手难以触及全貌(采样无法覆盖所有场景)。即使一群盲人摸同一头象,每个人也只知道部分内容,容易以偏概全(假特征)。如果让每个盲人独立判断自己摸到的是什么,就会把非决定性特征视作决定性特征,从而出现不同的预测错误。
但是,如果允许盲人们交流讨论,他们就可以分析各自判断错误的原因。以此为依据去调整每个特征导向正确结果的概率,甚至归纳出新的隐藏特征。这篇论文的工作,就是在探究 “盲人”(弱学习器,weak learners)之间如何进行有效地“讨论”(Products of Experts),并分析每个弱学习器至少需要掌握多少信息,才能对正确的预测结果有所帮助。
方法
从一个“古老”的方法说起
看到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与普通交叉熵损失之和,只用来更新 。训练完成后, 即为最终的预测模型。这样就达到了令 向 “学习” 的效果。但与知识蒸馏不同之处在于,这里的“学习”并非以“模仿”为目的,而是从 的错误中进行学习。
实验设计与结果
这种去偏差方法无疑设计得很巧妙:一方面,它省去了显性定位模型偏差的功夫,节约大量人力资源;另一方面,损失函数的计算较为简便,节约大量计算资源。不过,再怎么吹,没看到结果之前,都是空的。
首先是在自然语言推断(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的优化导致的。
然后是在QA(Question Answering)任务上的验证。学习器和上文设置一样,用SQuAD数据集训练,在Adversarial SQuAD数据集上检验。结果如图2所示。这一任务上,PoE的采用对预测器鲁棒性的优化十分显著。
上述测试以外,文章还探讨了弱学习器的参数量和主学习器的鲁棒性的关联。由图三可以看出,弱学习器的正确率不会随着参数量的增加获得很大提升。而主学习器在in-distribution数据上性能显著下降,在out-distribution数据上则性能提升。
总结和感想
除了对模型本身的理解,写这篇文章更深层的动机是想说明:处理数据不均衡/模型有偏正在成为机器学习中共同的研究热点。其实在任何基于统计原理的建模方法上,这都是一个无法回避的挑战,只不过说之前因为数据量不够、基本模型不够完善所以热度没有起来。而现在时机已经逐渐成熟,2021年,恐怕这个难点上大新闻会此起彼伏,真是令人期待。
标签:20,预测,模型,abs,学习,算法,能学,PoE,数据 From: https://blog.51cto.com/xixiaoyao/6238756
萌屋作者:白鹡鸰白鹡鸰(jí líng)是一种候鸟,天性决定了会横跨很多领域。已在上海交大栖息四年,进入了名为博士的换毛期。目前以图像语义为食,但私下也对自然语言很感兴趣,喜欢在卖萌屋轻松不失严谨的氛围里浪~~形~~飞~~翔~~
[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