恕我直言,你的实验结论可能严重依赖随机数种子!

文 | python
编 | 小轶

God does not play dice with the universe ......
But BERT Does !

包括BERT在内的预训练模型已经是现今NLP工作的标配。但你有没有考虑过,这些工作的实验结论可能都是虚假的?在 Bertology 中,大家从 huggingface 上下载 Google 训好的模型,在精调中结合改进,并应用于下游任务。所有的工作都是基于一组特定的初始化参数,而这个参数严重依赖于预训练时选用的随机数种子(用于参数初始化与预训练数据排序)。这种条件下,你如何知道你取得的提升,是源于模型方法的改进,还是因为你的方法完美配合了训练BERT时的随机数种子?会不会更换了预训练BERT时的随机数种子,基线方法反而能取得更优秀的表现?

为了帮助研究者更好地探究这一问题,Google开源了 MultiBERTs, 一组25个不同随机数种子下BERT预训练的结果。外加部分中间结果,一共有165个储存点(checkpoints)。同时,Google提出了Multi-Bootstrap方法,利用不同种子下的BERT预训练结果,检测实验结论是否源于预训练阶段的模型随机性。

简便起见,后文将“最初Google开源的BERT版本”称为“Google原版BERT”,以显示特指。

论文题目:
The MultiBERTs: BERT Reproductions for Robustness Analysis

论文链接
https://arxiv.org/abs/2106.16163

项目地址
http://goo.gle/multiberts

MultiBERTs

多种子BERT预训练结果

MultiBERTs的本意是提供不同随机数种子下BERT预训练的结果,以供研究者对结论的健壮性与稳定性开展研究。因此,本文作者尽量按照原始BERT训练的参数进行复现,然而作者却无法完美复现BERT论文中的结果,只能尽量去接近。(Google自己都无法复现BERT的结果,你精调时加的魔改真的靠得住么?)

具体而言,相对于原版BERT,本文的主要改动为:

  • 训练的步数为2M步,而非原始BERT中的1M步。

  • 保持序列长度为512 节点,掩码预测的内容为80个节点。而非原始BERT中90%的步数输入128的节点长度,10%的步数输入512的节点长度。

  • 每次训练均采用不同的随机数种子,用以初始化及对训练数据排序。

其它未改动的地方:结构(12层transformers+768隐层节点)、预训练任务(MLM&NSP)、预训练语料(由于BooksCorpus不可获取,本文用的[1]中的版本)、batch size(256)、优化器(Adam,lr=1e-4,10K 热身step)、初始化分布(truncated Normal distribution)

具体的,在GLUE及SQuAD下游任务上的表现如下图所示。每张图为25个格子,分别表示25个不同随机数种子下预训练的模型,在对应任务验证集上的表现。对每个预训练的随机数种子和每个下游任务的组合,均采用五次实验计算均值的方式汇报。虚线表示原始BERT汇报的结果。

作者表示,只优化1M步的话GLUE上的表现比不上BERT,然而2M步的话,GLUE上表现没问题了,但SQuAD上表现又比BERT高了。所以就定成这样了。

小编按:与原始BERT相比,作者采用全长(512节点)的预训练输入序列训练了更多步数。经验表明,SQuAD在预训练序列更长时表现更好,因为SQuAD的输入文本相对较长。所以作者相当于完全复现不出原始BERT的效果,转而用更多的步数及更多的全长预训练来弥补表现上的差距。

作者表明,在预训练阶段采用不同的随机数种子,对模型表现稳定性有较为明显的影响。如下表所示。这里统计的是下游任务中,样例级别(instance-level)的一致率。Same表示采用相同的预训练种子,Diff.表示采用不同的预训练种子。从表中可以看出,预训练时使用相同的随机数种子,模型在下游任务中保持有较高的一致率(90%以上);而如果预训练时采用不同的随机数种子,下游任务的预测一致率会有1%~2%的下降。这一下降在HANS[2] (一个MNLI相关的对抗样本数据集)上表现得更为明显,可以达到 4%~7%

特别地,25个预训练随机数种子下,BERT模型在HANS(neg)[2]上的表现,如下图所示。可以看到,随着预训练中随机数种子的变化,模型在下游任务上的准确率可以有超过20%的波动。远大于同预训练种子的10%以内的准确率波动。因此,你的论文的实验结论可能仅在一个BERT的随机种子下成立。更换预训练种子之后,结论可能不再成立。我们也可以由此看到,利用不同随机数种子下BERT预训练的结果,对探究实验结论的鲁棒性十分必要。

Multi-Bootstrap

基于多种子结果的自举评估方法

有了不同的种子下训练的BERT结果:MultiBERTs,作者进一步提出了 Multi-Bootstrap 方法,以自举(Bootstrap)策略对模型的鲁棒性与结论的随机性做非参数估计。

自举(Bootstrap)听上去很玄幻。据小编的理解,这种方法就是一个对数据进行采样均值的过程。具体而言,我们先从预训练随机数种子中,有放回地采样个种子。然后,同样有放回地,从测试数据中,采样个测试点:为种子下的模型映射,为打分函数,于是模型表现的估计量为:

通过多次采样,我们可以得到的期望及标准差的估计(estimation),并用这个估计对实验结论的鲁棒性进行评估。

如果评估还涉及到下游任务的随机数种子,在上面的采样均值过程中,再加一层对下游任务的随机数种子采样均值即可。

具体的应用形式,可以分成以下4种:

  • 对比基线:将基于MultiBERTs的结果同固定基线进行对比。这里的固定基线可以是随机结果、人类表现、或原版BERT没有对随机数种子做采样的结果等。

  • 成对采样:对比同一组预训练结果之下的结果,比如均是基于MultiBERTs,探究添加的某个魔改结构是否有帮助。在这种采样中,对待对比的两个模型的随机数种子部分采用同样的采样策略。

  • 不成对采样:一般用于不可成对采样的场景。如对比MultiBERTs及某个类似的“MultiRoBERTas”之间的性能差异。因为两种模型并不共享预训练结果的检查点(checkpoints),采样时分别对两边的种子进行采样。

  • 假设检验(P-Values):可以去计算有多大比例的采样结果,得到的表现估计量超过基线水平。

实战示例

作者在实现MultiBERTs时观察到两个现象:更多的预训练步数普遍带来更好的表现;MultiBERTs 的表现在SQuAD上比原始BERT要好。作者将Multi-Bootstrap应用在对这两个问题的探究上,以体现该方法的有效性。

更多的预训练步数可以取得更好的效果吗?(成对采样)

一般人们认为预训练模型迭代步数越多,模型的表现就越好。作者在训练MultiBERTs时也发现了类似的现象。那这一结论是否具有统计学意义?作者这里采用成对采样策略的Multi-Bootstrap方法,对比迭代2M步和1M步预训练的BERT模型,在下游GLUE任务上的表现。

对比如下图,可以看到,对于MNLI任务而言,更多的迭代步数会显著带来性能提升,p-value<0.001。而对于MRPC、RTE等任务而言,更多的预训练步数对下游任务的提升就值得怀疑了,p-value分别只有0.564和0.141。

利用成对采样的策略可以进一步看出,虽然MNLI任务上,1M和2M迭代步数的预训练模型性能分布有较为明显的重叠。但两者具有较为明显的相关性,即在同一随机种子下,2M迭代的模型表现有很大概率高于1M迭代的模型。这导致了极高的显著性。

MultiBERTs 的表现在SQuAD上比原始BERT要好?(对比基线)

类似地,作者也对比了MultiBERTs和原版BERT在SQuAD2.0任务上的性能差异。结果表明,MultiBERTs性能超过原版BERT的p-value<0.001,具有极高的显著性。

因为原版BERT没有提供随机种子,所以作者建议在这种模型下,同时汇报性能差异的95%置信区间。MultiBERTs比原版BERT在SQuAD2.0任务上的性能提升量的95%置信区间为提升1.9%~2.9%。

开放问题

论文作者指出,有了MultiBERTs,研究者还可以在替换预训练过程中的随机数种子的前提下,进一步探索下面这些结论:

  • 是否仅有Google原版BERT能编码句法信息、世界知识?

  • 是否仅有Google原版BERT包含了社会偏见(social stereotypes)?

  • RoBERTa等模型,是否只超过了Google原版的BERT?

  • 引入NLI等中间训练任务,是否可以对下游任务带来稳定提升?

  • 减少attention头的数量,是否稳定影响下游任务表现?

  • BERT中引入语义角色信息是否可以稳定提升下游任务效果?

坑挖好了,工具也有了,问题也提出了,小伙伴们还等什么?还不赶紧把代码跑上,灌上一波?(ง •̀_•́)ง

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] Iulia Turc, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. Well-read students learn better: On the importance of pre-training compact models. arXiv preprint arXiv:1908.08962.

[2] Tom McCoy, Ellie Pavlick, and Tal Linzen. 2019. Right for the wrong reasons: Diagnosing syntactic heuristics in natural language inference. In Proceed- ings of the 57th Annual Meeting of the Association for Computational Linguistics, pages 3428–3448, Florence, Italy. Association for Computational Lin- guistics.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC注解故障追踪记

Spring MVC是美团点评很多团队使用的Web框架。在基于Spring MVC的项目里&#xff0c;注解的使用几乎遍布在项目中的各个模块&#xff0c;有Java提供的注解&#xff0c;如&#xff1a;Override、Deprecated等&#xff1b;也有Spring提供的注解&#xff0c;如&#xff1a;Control…

LeetCode 951. 翻转等价二叉树(递归)

文章目录1. 题目2. 递归解题1. 题目 我们可以为二叉树 T 定义一个翻转操作&#xff0c;如下所示&#xff1a;选择任意节点&#xff0c;然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后&#xff0c;能使 X 等于 Y&#xff0c;我们就称二叉树 X 翻转等价于二叉树 Y…

开源开放 | 开源大学在线实践数据集及知识图谱MOOPer(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/mooper头歌平台&#xff1a;https://www.educoder.net/ch/rest开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;湖南智擎科技有限公司&#xff08;黄井泉&#xff09;&#xff0…

python实现文件传输

发送者&#xff1a; send_file.py def send_file(filename: str "mytext.txt", testing: bool False) -> None:import socketport 12312 # Reserve a port for your service.sock socket.socket() # Create a socket objecthost socket.gethostname() # …

不同于NLP,数据驱动、机器学习无法攻克NLU,原因有三

文 | Walid S. Saba源 | 机器之心自然语言理解&#xff08;NLU&#xff09;是人工智能的核心课题之一&#xff0c;也被广泛认为是最困难和最具标志性的任务。近年来&#xff0c;机器学习虽然被广泛使用&#xff0c;但是却不能很好的解决自然语言理解问题&#xff0c;其中可能涉…

分布式系统互斥性与幂等性问题的分析与解决

随着互联网信息技术的飞速发展&#xff0c;数据量不断增大&#xff0c;业务逻辑也日趋复杂&#xff0c;对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题&#xff0c;系统架构也…

开源开放 | 多模态实体链接数据集MELBench(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/melbenchGitHub地址&#xff1a;https://github.com/seukgcode/MELBench开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;东南大学&#xff08;汪鹏、周星辰、邓臻凯、李国正、谢…

LeetCode 1219. 黄金矿工(回溯)

文章目录1. 题目2. 回溯DFS解题1. 题目 你要开发一座金矿&#xff0c;地质勘测学家已经探明了这座金矿中的资源分布&#xff0c;并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量&#xff1b;如果该单元格是空的&#xff0c;那么就是…

发现一篇专门吐槽 NLP 内卷现状的 ACL 论文 ...

文 | Severus编 | 小轶随着大模型的发展&#xff0c;NLP领域的榜单可说是内卷到了无以复加&#xff0c;现在去浏览各大公开榜单&#xff0c;以至于各个比赛&#xff0c;随处可见BERT、RoBERTa的身影&#xff0c;甚至榜单中见到各大large模型的集成版也并非偶然。在发论文的时候…

大促活动前团购系统流量预算和容量评估

本文整理自美团点评技术沙龙第11期&#xff1a;移动端测试分享。 美团点评技术沙龙由美团点评技术团队主办&#xff0c;每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验&#xff0c;覆盖各主要技术领域。 目前沙龙会分别在北京、上海和厦门等…

论文浅尝 | 融合多层次领域知识的分子图对比学习

笔记整理 | 方尹&#xff0c;浙江大学在读博士&#xff0c;研究方向&#xff1a;图表示学习论文地址&#xff1a;https://arxiv.org/pdf/2106.04509.pdf动机目前基于图的对比学习有以下几个问题&#xff1a;不同领域的图&#xff0c;&#xff08;比如social network和分子图&am…

LeetCode 1028. 从先序遍历还原二叉树(栈)

文章目录1. 题目2. 栈解题1. 题目 我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其…

python 怎么将列表中的字典安照某一个key输出到csv,python如何把字典数据存储进csv文件

示例代码 import csv fieldnames["A","B","C"]#数据列名dicts[{A: 1, B: 2, C:3},{A: 2, B: 3, C:4},{A: 3, B: 4, C:5},{A: 4, B: 5, C:6},{A: 5, B: 6, C:7},{A: 9, B: 7, C:8},]with open(test.csv, a, newline,encodingutf_8_sig) as f: wr…

基于深度学习方法的图像分割,差距不止一点点

图像分割&#xff08;image segmentation&#xff09;技术是计算机视觉领域的一个重要的研究方向&#xff0c;图像分割是计算机视觉中的一个关键过程。它包括将视觉输入分割成片段以简化图像分析。片段表示目标或目标的一部分&#xff0c;并由像素集或“超像素”组成。图像分割…

Java Hotspot G1 GC的一些关键技术

前言 G1 GC&#xff0c;全称Garbage-First Garbage Collector&#xff0c;通过-XX:UseG1GC参数来启用&#xff0c;作为体验版随着JDK 6u14版本面世&#xff0c;在JDK 7u4版本发行时被正式推出&#xff0c;相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中&#xff0c;G1被提议…

论文浅尝 | AutoETER: 用于知识图谱嵌入的自动实体类型表示

论文链接&#xff1a;https://arxiv.org/pdf/2009.12030.pdf动机传统的KGE使用附加的类型信息改善实体的表示&#xff0c;但是这些方法完全依赖于显式类型&#xff0c;或者忽略了特定于各种关系的不同类型表示&#xff0c;并且这些方法目前都不能同时推断出对称性、反演和组成的…

LeetCode 1029. 两地调度(贪心)

文章目录1. 题目2. 贪心1. 题目 公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0]&#xff0c;飞往 B 市的费用为 costs[i][1]。 返回将每个人都飞到某座城市的最低费用&#xff0c;要求每个城市都有 N 人抵达。 示例&#xff1a; 输入&#xff1a;[[10,20],[30,2…

百面机器学习-第一章特征工程

原文链接&#xff1a;https://www.jianshu.com/p/355c4001ca42 前言 如果你能找到这里&#xff0c;真是我的幸运~这里是蓝白绛的学习笔记&#xff0c;本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点&#xff0c;希望对大家有帮助。…

推荐几个NLP出论文的好方向!!

如果你准备发NLP方向的论文&#xff0c;或准备从事科研工作或已在企业中担任NLP算法岗的工作。那么我真诚的向大家推荐&#xff0c;贪心学院《自然语言处理高阶研修班》&#xff0c;目前全网上应该找不到类似体系化的课程。课程精选了四大主题进行深入的剖析讲解&#xff0c;四…

Android热更新方案Robust

美团是中国最大的O2O交易平台&#xff0c;目前已拥有近6亿用户&#xff0c;合作各类商户达432万&#xff0c;订单峰值突破1150万单。美团App是平台主要的入口之一&#xff0c;O2O交易场景的复杂性决定了App稳定性要达到近乎苛刻的要求。用户到店消费买优惠券时死活下不了单&…