BERT等预训练模型实践浅析

简介: ##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
相关文章
|
3月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
33 0
|
3月前
|
机器学习/深度学习 人工智能 开发工具
如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face
Hugging Face是一个机器学习(ML)和数据科学平台和社区,帮助用户构建、部署和训练机器学习模型。它提供基础设施,用于在实时应用中演示、运行和部署人工智能(AI)。用户还可以浏览其他用户上传的模型和数据集。Hugging Face通常被称为机器学习界的GitHub,因为它让开发人员公开分享和测试他们所训练的模型。 本次分享如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face。
如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face
|
3月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
27 0
|
4月前
|
机器学习/深度学习 缓存 自然语言处理
义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)
Bert-vits2更新了版本V210,修正了日/英的bert对齐问题,效果进一步优化;对底模使用的数据进行优化和加量,减少finetune失败以及电音的可能性;日语bert更换了模型,完善了多语言推理。
义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)
|
5月前
lda模型和bert模型的文本主题情感分类实战
lda模型和bert模型的文本主题情感分类实战
110 0
|
4月前
|
JavaScript
Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)
近日,Bert-vits2-v2.2如约更新,该新版本v2.2主要把Emotion 模型换用CLAP多模态模型,推理支持输入text prompt提示词和audio prompt提示语音来进行引导风格化合成,让推理音色更具情感特色,并且推出了新的预处理webuI,操作上更加亲民和接地气。
Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)
|
5月前
|
并行计算 API C++
又欲又撩人,基于新版Bert-vits2V2.0.2音色模型雷电将军八重神子一键推理整合包分享
Bert-vits2项目近期炸裂更新,放出了v2.0.2版本的代码,修正了存在于2.0先前版本的重大bug,并且重炼了底模,本次更新是即1.1.1版本后最重大的更新,支持了三语言训练及混合合成,并且做到向下兼容,可以推理老版本的模型,本次我们基于新版V2.0.2来本地推理原神小姐姐们的音色模型。
又欲又撩人,基于新版Bert-vits2V2.0.2音色模型雷电将军八重神子一键推理整合包分享
|
4月前
|
机器学习/深度学习 异构计算 AI芯片
云端开炉,线上训练,Bert-vits2-v2.2云端线上训练和推理实践(基于GoogleColab)
对于笔者这样的穷哥们来讲,GoogleColab就是黑暗中的一道光,就算有训练时长限制,也能凑合用了,要啥自行车?要饭咱也就别嫌饭馊了,本次我们基于GoogleColab在云端训练和推理Bert-vits2-v2.2项目,复刻那黑破坏神角色莉莉丝(lilith)。
云端开炉,线上训练,Bert-vits2-v2.2云端线上训练和推理实践(基于GoogleColab)
|
4月前
|
人工智能 语音技术
Bert-vits2新版本V2.1英文模型本地训练以及中英文混合推理(mix)
中英文混合输出是文本转语音(TTS)项目中很常见的需求场景,尤其在技术文章或者技术视频领域里,其中文文本中一定会夹杂着海量的英文单词,我们当然不希望AI口播只会念中文,Bert-vits2老版本(2.0以下版本)并不支持英文训练和推理,但更新了底模之后,V2.0以上版本支持了中英文混合推理(mix)模式。
Bert-vits2新版本V2.1英文模型本地训练以及中英文混合推理(mix)
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
栩栩如生,音色克隆,Bert-vits2文字转语音打造鬼畜视频实践(Python3.10)
诸公可知目前最牛逼的TTS免费开源项目是哪一个?没错,是Bert-vits2,没有之一。它是在本来已经极其强大的Vits项目中融入了Bert大模型,基本上解决了VITS的语气韵律问题,在效果非常出色的情况下训练的成本开销普通人也完全可以接受。
栩栩如生,音色克隆,Bert-vits2文字转语音打造鬼畜视频实践(Python3.10)

热门文章

最新文章