BERT等预训练模型实践浅析

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: ##1.背景 近期,在NLP领域预训练模型受到了越来越多的关注。从ELMo到BERT,预训练模型在不同的NLP问题取得了很好的效果。本文参考To Tune or Not to Tune? Adapting Pretrained Representations to Diverse Tasks论文, 针对预训练模型BERT/EMLo,分析其在实际问题中的使用方式。 ##2.怎么用BERT

1.背景

近期,在NLP领域预训练模型受到了越来越多的关注。从ELMo到BERT,预训练模型在不同的NLP问题取得了很好的效果。本文参考To Tune or Not to Tune? Adapting Pretrained Representations to Diverse Tasks论文, 针对预训练模型BERT/EMLo,分析其在实际问题中的使用方式。

2.怎么用BERT/ELMo解决问题

对于预训练模型一般有两种使用方式:

1) Feature extraction:

此方法模型的权重被固定的给下游任务使用,优势在于模型的权重只训练了一次,计算量较小。

2) Fine-tuning:

此方法模型的权重重新被下游任务重新更新,优势在于针对特定任务进行了微调,模型对特定任务表现效果较好。

3.实验设置

3.1Feature extraction

对于ELMo和BERT,从所有层中提取单词的上下文表示。 在下游任务训练过程中,学习层的线性加权组合,它被用作任务特定模型的输入。 对于情感分析,采用双向分类网络。 对于句子对匹配任务,我们使用ESIM模型。 对于NER,使用LSTM+CRF模型。

3.2 Finetune ELMo

对LM状态进行max-pool并添加softmax图层进行文本分类。 对于句子对匹配任务,计算LM状态之间的跨句子双重注意力并使用池化,然后添加softmax层。 对于NER,使用LSTM+CRF模型。

3.3 Finetune BERT

将句子表示提供给softmax层,用于文本分类和句子对匹配任务。 对于NER,提取每个标记的第一个单词的表示输入给softmax。

4.实验结果

4.1 BERT vs ELMo

ELMo和BERT都比传统的表示学习方法如Skip-thoughts好,不同任务的Feature extraction vs Finetune效果对比不一样。ELMo来说,句对任务(MNLI )Feature extraction效果远比Finetune好,对BERT来说,句子对任务 (STS-B)Finteune效果比Feature extraction好。原因:参考CV领域,原始任务和目标任务越接近,迁移学习效果越好,BERT预训练中有预测下一句的任务,因此理所当然效果会好。然而为什么ELMo Fiinetune后效果会差呢?

20190504201202.jpg

这要从句子对任务本身和ELMo的模型结构说起,EMLo使用的是双向LSTM,并不擅长捕捉句子之间的交互信息,而基于attention的Tranformer就不一样了,比较擅长捕捉句子间的交互信息,事实上在文本匹配领域,交互模型一般都比孪生网络效果好。下图从连个实验验证了原生的EMLo本身不擅长句子对任务和BERT擅长句子对任务。

20190504210843.jpg

如上图所示,EMLo增加了交互的attention之后句子对任务效果提升明显,证明LSTM不擅长捕捉句子交互信息。BERT对不同句子进行分别编码后准确率下降,也证明BERT原生擅长捕捉句子之间交互信息。

4.2 如何更好的Finetune

既然Finetune之后效果还会变差,有没有办法解决这个问题呢。针对NER任务 (句子对任务暂时无解),有两种解决方法:1) 增加模型复杂度, 比如增加CRF层,如下图所示,效果蹭蹭蹭上去了。2) 复杂的Finetune技巧如三角学习率 (slanted triangular learning rates) 、 discriminative fine-tuning、 gradual unfreezing。 这些技巧在BERT paper也都介绍过,实为海量模型Finetune的大杀器。

20190504201211.jpg

4.3不同层对任务影响

在实际的下游任务中,NLP和CV有一个很大的区别。NLP不同任务可能需要的是上游任务的某些层,比如BERT和ELMo论文所述,靠近输入的层捕捉到词法信息擅长做POS等任务,靠近输出的层捕捉到语义信息。下图的实验结果进一步证明了这个结论。

20190504201133.jpg

实验中使用不同层的向量求均值作为下游任务输入,可以看出需要语义理解的任务,越接近输出的层表征效果越好。

6.结论

1.实际业务问题和Pretrain任务越接近,取得的效果越好

2.实际使用BERT 如有足够训练数据,Finetune效果会较好,反之,使用Feature extraction

3.实际使用ELMo, 一般情况下使用Feature extraction 效果较好

4.BERT比较擅长做句子对任务

5.不论Finetune 还是pretrained 模型,取特征的层数取决于任务类型,一般语义相关的取接近输出层,词法相关的取接近输入层,特殊情况可取多层加权平均。

参考文献

  1. To Tune or Not to Tune? Adapting Pretrained Representations to Diverse Tasks
  2. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  3. Deep contextualized word representations
相关文章
|
4月前
|
机器学习/深度学习 人工智能 开发工具
如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face
Hugging Face是一个机器学习(ML)和数据科学平台和社区,帮助用户构建、部署和训练机器学习模型。它提供基础设施,用于在实时应用中演示、运行和部署人工智能(AI)。用户还可以浏览其他用户上传的模型和数据集。Hugging Face通常被称为机器学习界的GitHub,因为它让开发人员公开分享和测试他们所训练的模型。 本次分享如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face。
如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face
|
4月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
65 0
|
4月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
55 0
|
16天前
|
算法 异构计算
自研分布式训练框架EPL问题之帮助加速Bert Large模型的训练如何解决
自研分布式训练框架EPL问题之帮助加速Bert Large模型的训练如何解决
|
1月前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
32 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
114 9
|
1月前
|
数据采集 人工智能 数据挖掘
2021 第五届“达观杯” 基于大规模预训练模型的风险事件标签识别】3 Bert和Nezha方案
2021第五届“达观杯”基于大规模预训练模型的风险事件标签识别比赛中使用的NEZHA和Bert方案,包括预训练、微调、模型融合、TTA测试集数据增强以及总结和反思。
24 0
|
2月前
|
数据采集 自然语言处理 PyTorch
AIGC之BERT模型
7月更文挑战第5天
|
3月前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:BERT模型教程
使用Python实现深度学习模型:BERT模型教程
115 0
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
74 0