正文
3 预训练和微调
在 BERT提出后,预训练和微调 ( pre-training and fine-tuning ) 这个训练范式逐渐流行起来
所谓预训练,就是让模型在大规模无标注数据集上针对预设任务进行训练,使模型获得某些基础能力
所谓的微调,就是让模型在特定的有标注数据集上针对下游任务继续训练,使模型适应不同下游任务
在预训练后,BERT 能够得到输入文本中每个词元的向量表示,这些向量表示是融合上下文信息的
在微调时候,BERT 使用预训练好的模型参数进行初始化,添加额外的预测层在不同下游任务继续训练
只要预训练得到的向量表示足够的好,那么预测层很容易就可以适应各种下游任务
就目前来说,预训练通常是在大规模的数据集上进行的,因此需要花费大量的计算资源
这一般都是由大公司主导并把预训练好的模型开源出来,大家去下载这些模型并在各自下游任务进行微调
进行微调的优点在于:针对不同下游任务,模型架构无需修改,只要添加不同的预测层继续训练即可
3.2 微调
经过预训练阶段后,我们就可以得到一个具备语言表征能力的 BERT模型
然后,我们可以用该模型在特定数据集与下游任务继续训练,从而使得模型能够适应各种下游任务
这就是微调的作用
具体来说,就是在预训练好的 BERT模型的基础上,针对不同下游任务添加对应的预测层就可以
然后,我们会以下游任务作为目标同时优化 BERT和预测层的参数
通常,BERT的参数只需要微调,而预测层的参数则需要重新学习
BERT可完成的下游任务基本能够涵盖所有自然语言处理领域中的问题,具体可以分为以下几类:
单句子分类:输入单句子,输出该句子的类别
单句子标注:输入单句子,输出句子中每个词的类别
句子对分类:输入句子对,输出句子对的类别
抽取式问答:输入问题以及段落,输出答案在段落中的位置
前三个任务很容易理解,这里主要解释一下最后一个任务
所谓抽取式问答,就是说给定问题及对应的段落,问题的答案就是段落中某段连续的词元序列
这意味着,只要能识别出这个序列的开始位置和结束位置,就能找到答案所在的位置
因此模型对段落中的每个词元有两个预测层,一个用于预测开始位置,一个用于预测结束位置
此时预测层的作用是计算词元作为开始位置或作为结束位置的置信度
最后段落中所有词元作为开始位置的置信度最大的作为预测值,结束位置也用同样的方式得到
好啦,本文到此结束,感谢您的阅读!
如果你觉得这篇文章有阐述不够清晰的地方,欢迎在评论区留下你宝贵的意见或者建议
如果你觉得这篇文章还不错的话,欢迎点赞、收藏、关注,你的支持是对我最大的鼓励 (/ω\)