BERT等预训练模型实践浅析

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: ##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
相关文章
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
87 0
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
65 0
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
60 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
35 1
|
27天前
|
机器学习/深度学习 自然语言处理 知识图谱
|
20天前
|
机器学习/深度学习 自然语言处理 算法
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
66 0
|
2月前
|
搜索推荐 算法
模型小,还高效!港大最新推荐系统EasyRec:零样本文本推荐能力超越OpenAI、Bert
【9月更文挑战第21天】香港大学研究者开发了一种名为EasyRec的新推荐系统,利用语言模型的强大文本理解和生成能力,解决了传统推荐算法在零样本学习场景中的局限。EasyRec通过文本-行为对齐框架,结合对比学习和协同语言模型调优,提升了推荐准确性。实验表明,EasyRec在多个真实世界数据集上的表现优于现有模型,但其性能依赖高质量文本数据且计算复杂度较高。论文详见:http://arxiv.org/abs/2408.08821
57 7
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
|
3月前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
60 1
|
3月前
|
算法 异构计算
自研分布式训练框架EPL问题之帮助加速Bert Large模型的训练如何解决
自研分布式训练框架EPL问题之帮助加速Bert Large模型的训练如何解决

热门文章

最新文章