BERT模型自发布至今已整整两年了,但是其余热仍未消减。从一经问世的轰动,简单应用/微调便可达到某个领域或者任务的SOTA效果;到如今的各种『被吊打』,BERT巨人肩膀上的新宠大致可以分为以下这么几类:

BERT & Beyond:全面整理BERT家族,整理中,敬请期待!

  • Bigger:更大更多的训练数据与参数,效果更佳,暴力美学。例如RoBERT,Turing NLG等;

  • Smaller:追求更快的速度,更少的内存,简单之美。例如TinyBERT,ALBERT等;

  • Smarter:结合更多更丰富的外部知识,集大成者。例如ERNIE,K-BERT等;

  • Tricker:优化模型结构、预训练任务,鬼斧神工。例如XLNet,Performer等

  • Cross Domain:更全能全面的解决方案,跨界出圈。例如LXMERT,ViT等

  • Analyzer对模型底层设计/原理/效果/可解释性等方面的探究

纵观目前为止的大多数预训练模型,一般都是沿用『Pretraining + Finetuning』两个阶段的模式。第一阶段,通过大量的训练数据(一般是无监督样本)与模型参数,从文本中学习到通用的知识;第二阶段,针对下游特定领域以及任务,利用已有的有监督数据,对上一步的通用模型进行微调,获得领域/任务适应的模型会达到更好的效果。

更好的效果?其实并不一定,实际在应用上述两个阶段的过程中,会遇到许多问题。比如,直接使用预训练BERT太泛化,无法精确学习特定任务的知识,而微调又缺乏足够的有监督数据。这时候就需要想别的方案了:

  • 第一种,标微调有监督数据(有钱就请众包,没钱就......)

  • 第二种,把领域/任务相关的无监督数据加入第一阶段预训练,但这样就和初衷有些矛盾了,到底是该学通用的模型呢?还是学领域专注的模型呢?

  • 第三种,稍微调整一下两阶段应用的方式,变成三个阶段。第一阶段仍然是大规模的预训练(pre-trianing),获得一个general model;第二阶段变成特定领域/任务的预训练(post-training),在general model的基础上,利用领域数据再做一次同样的训练;第三阶段,利用少量的有监督数据Finetune。

就上述三种方案来说,第三种无疑是最合理的。目前也有不少这样的研究,下面来看两篇论文~

Do not stop pretraing

这篇ACL2020的论文更像是一份实验报告,探究了我们上面提及的第三种方案的可行性,即将预训练的模型「重新预训练」至目标任务的领域是否有效果提升。重点研究了两块:domain-adaptive pretraining和task-adaptive pretraining,实验在四个领域(生物、CS、新闻、评论)的八个分类任务上发现均能提高性能。

  • 论文:Don't Stop Pretraining: Adapt Language Models to Domains and Tasks

  • 地址:https://arxiv.org/abs/2004.10964

  • 源码:https://github.com/allenai/dont-stop-pretraining

下面来具体看看

Domain-Adaptive PreTraining

Domain-Adaptive PreTraining(DAPT)是指在第一阶段通用预训练模型的基础上,利用领域内未标注文本继续训练。

为了刻画个领域的相似度,对所有领域的 top 10K个高频词(去停用词)做了重合比对分析,如下。这可以预期将ROBERTA适应不同领域的受益程度,与ROBERTA的领域越不相似,DAPT的潜力就越高。

实验结果如下,可以看到,所有领域的DAPT对原始模型均有提升,而且非常明显!

Task-Adaptive PreTraining

Task-Adaptive PreTraining(TAPT)是指在第一阶段通用预训练模型的基础上,利用任务相关未标注文本继续训练。相比于DAPT,TAPT的数据集相对更小。

从上述实验可以看出,DAPT和TAPT相较于原始RoBERTA都有提升,而且两者共同使用效果更佳。这说明文章开篇所提的第三种方案是可行的,针对特定领域的语料继续对预训练模型进行训练可以带来明显的好处。

Train No Evil

来自清华刘知远老师组的EMNLP2020工作,同样探究了目前NLP预训练模型的新范式。

  • 论文:Train No Evil: Selective Masking for Task-Guided Pre-Training

  • 地址:https://arxiv.org/abs/2004.09733

  • 源码:https://github.com/thunlp/SelectiveMasking

整体思路与"Do not stop pretraing"论文相同,不同的是,这里非常丝滑地利用「Selective Masking」将DAPT和TAPT结合在了一起。

同样是三阶段:

  • 「通用预训练(GenePT)」:即传统的第一阶段,大规模无监督通用泛化数据 + 随机MASK预训练,数据集 大约包括「1000M」单词

  • 「任务主导预训练(TaskPT)」:这一阶段的目的是加入任务和领域相关信息,使用mid-scale 领域相关的无监督数据,数据集 大约包含「10M」

  • 「微调阶段(Fine-tuneing)」:don't say so much,数据集 大约包含「10K」

任务主导预训练(TaskPT)

其实需要看看的就是上面的第二阶段,如何加入任务以及领域信息。前面提及,领域信息可以通过数据集来引入,那么任务相关信息呢?

其实,在文本中,「不同的词对不同任务的贡献是不一样的」,而这些词通常不同。举个栗子,『like』、『hate』之类的词对情感分类任务比较关键,而在关系抽取任务中,谓语和动词相对而言会更重要。于是,在预训练的随机MASK那一步,我们就可以选择mask这些任务相关的词(Selective Masking),使得模型学习到任务信息。

那下一步就是如何去找到这些「任务关键词」了。这里可能有点绕,我们下面通过QA问答的形式来梳理一下

1、如何判断哪些词是更重要的?

假设一个序列 个词组成, ,词的重要度用 表示。设计一个辅助序列  , 每次按顺序扔进一个词,比如当前是 第 步, 此时辅助序列为 ,那么当前词 的打分便可以通过下式计算,

其中, 表示任务t的标签, 表示给定原始序列能得出正确标签的置信度。 表示给定包含在内的部分序列能得出正确标签的置信度,这一项越大表明 越重要。所以 越小表明 越重要,即加上 后的辅助序列与原始序列对任务的贡献越相近。

2、置信度 如何的得到?

利用在特定任务上微调后的BERT模型产出置信度

3、 如何给无监督的领域数据标记任务关键词?

可以看到,上面两步获取重要度词是需要标记数据的,那么 是无监督的,怎么办呢?这时候可以利用上述方法在 数据集上标注一票数据,标签为词语是否为任务关键;然后用这一票标注数据去训练一个模型 ,学习任务关键词语的信息,最后用这个模型 在 数据集 上标注并 MASK 任务关键词。这样处理完的 就可以用于 『任务主导预训练(TaskPT)』了。

实验

Sem14-Rest 和 MR 表示两个任务,Yelp和 Amazon表示两个领域数据集。可以看到,在四组实验中,额外进行再一次预训练均会提升模型效果,且对比了 『Random Mask』与『Selective Mask』,发现『Selective Mask』效果更好。关于更详细的实验说明,大家可以转到原论文观摩~

尾巴

感谢英雄联盟的「辣鸡更新」,以及肥猫主子的「不踩键盘」,让我有空整理下笔记

BERT微调效果不佳?不如试试这种大规模预训练模型新范式相关推荐

  1. 优化模型实验报告_BERT微调效果不佳?试试这种大规模预训练模型新范式

    BERT模型自发布至今已整整两年了,但是其余热仍未消减.从一经问世的轰动,简单应用/微调便可达到某个领域或者任务的SOTA效果:到如今的各种『被吊打』,BERT巨人肩膀上的新宠大致可以分为以下这么几类 ...

  2. 跟顶会审稿人聊了聊预训练模型新范式。。

    最近刷朋友圈,很多童鞋的状态都是,不是在搞科研,就是在搞科研的路上,每日为了科研废寝忘食-- 每天的生活日常,除了下文献.读文献,就是做实验.写论文,debug,二十多岁的自己看着像三四十-- 然而, ...

  3. 200+页综述!阐述大规模预训练模型机遇与风险

    来源 | 机器之心 在一篇 200 多页的论文中,Percy Liang.李飞飞等斯坦福研究者系统阐述了大规模预训练模型背后的机遇与风险.他们还给这些模型取了一个统一的名字-- Foundation ...

  4. 2021 第五届“达观杯” 基于大规模预训练模型的风险事件标签识别】3 Bert和Nezha方案

    目录 相关链接 1 引言 2 NEZHA方案 2.1 预训练 2.2 微调 3 Bert 方案 3.1 预训练 3.2 微调 3 模型融合和TTA测试集数据增强 4 总结和反思 5 参考资料 相关链接 ...

  5. 【2021 第五届“达观杯” 基于大规模预训练模型的风险事件标签识别】1 初赛Rank12的总结与分析

    目录 相关链接 1 赛题分析 2 引言 3 方案 3.1 传统DL方案 3.2 预训练方案 4 提分技巧 5 加快训练 6 总结和反思 7 参考资料 相关链接 [2021 第五届"达观杯&q ...

  6. 中文版GPT-3来了?智源研究院发布清源 CPM —— 以中文为核心的大规模预训练模型...

    清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文为核心的大规模预训练模型.首期开源内容包 ...

  7. 中文版GPT-3来了?智源、清华发布清源 CPM——以中文为核心的大规模预训练模型

    2020-11-18 23:43:21 清源 CPM(Chinese Pretrained Models)是北京智源人工智能研究院和清华大学研究团队合作开展的大规模预训练模型开源计划,清源计划是以中文 ...

  8. 谷歌开源预训练新范式BiT,准确率提高近25%!网友评价:CV界的BERT

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI BERT在NLP界无往不利,大大提高了自然语言模型的性能,那么,在计算机视觉领域,有没有可能一个CNN打天下? 现在,谷歌大脑给出了一个答案 ...

  9. 达摩院李雅亮:大规模预训练模型的压缩和蒸馏

    作者 | 李雅亮博士 阿里巴巴 来源 | DataFunTalk 导读:本次分享的主题为大规模预训练模型的压缩和蒸馏,主要是从自动机器学习的角度,介绍大规模预训练模型的压缩和蒸馏.将介绍阿里巴巴达摩院 ...

最新文章

  1. VINS-mono详细解读与实现
  2. python 代码-代码的重试机制(python简单实现)
  3. Promise 上手
  4. 数据结构与算法 | 用队列实现栈
  5. 互联网公司Java面试总结
  6. JS调用打印机打印Web页面
  7. jboss相关的术语
  8. mysql substring函数截取值后赋给一个declare变量
  9. 拓端tecdat|R语言中自编基尼系数的CART回归决策树的实现
  10. 我设计的目录结构如此清楚,你为什么也会错
  11. 用pe做2012服务器系统教程,微软WDS网络启动PE做系统的服务器配置和PE修改教程...
  12. AspCms程序PC端生成静态,手机端动态运行
  13. Mac系统升级后导致AS不能使用SVN
  14. https://developer.aliyun.com/group/cloud?aly_as=stGCd_wh?_k=g6zacxsource=5176.11533457userCode=9fo
  15. 不错嘛(lsp专用)
  16. Incognito CTF 3.0部分WP及赛后复现
  17. 神经网络和模糊控制区别,什么是模糊神经网络
  18. 计算机数学基础教案,大学计算机基础教案51.doc
  19. 渤海大潮_2020年云大潮–为什么这么多小型企业采用云
  20. java这么火,现在学还有前途吗?

热门文章

  1. 赛锐信息:SAP 程序优化
  2. 这是一段有毒的js代码,求大神解释!!!
  3. EasyUI Combobox 设置默认值
  4. 【iCore1S 双核心板_ARM】例程十三:SDIO实验——读取SD卡信息
  5. 转 java synchronized详解
  6. 使用PowerShell创建Azure Storage的SAS Token访问Azure Blob文件
  7. ios中navigationItem的titleView如何居中
  8. 数据结构课程设计--平衡二叉树
  9. LeetCode-260 Single Number III
  10. Java实现蛇形矩阵