本文是结合 B 站李沐老师的视频对 BERT 的理解,主要介绍了 BERT 的 overview、预训练和微调三个部分,相比于原视频,本文更加简洁和通俗。视频地址: https://www.bilibili.com/video/BV1PL411M7eQ/?spm_id_from=333.999.0.0&vd_source=2e0bed8f939119c48817ce61f4f75bdd
Overview of BERT
BERT(Bidirectional Encoder Representations from Transformers)是一个预训练的、基于 Transformer 的、双向的、深层的语言模型,论文题目为 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(https://arxiv.org/pdf/1810.04805),正如论文标题所言,它是一个语言理解模型。
BERT 是基于 Transformer 构建的,但是它只保留了 Transformer 的编码器。Transformer 的编码器是使用 self-attention 双向理解句子的,所以 BERT 是双向理解句子的。对于标准的 Transformer,由于解码器的输入是一个一个往右移动的(shifted right),所以其主要用途为生成式任务。
BERT VS Transformer:
-
BERT 可以理解句子上下文,用于句子分类、特殊词识别、问题回答等任务,不能用于语言生成、机器翻译等生成式任务; -
Transformer 是生成式模型,用于语言生成、机器翻译等生成式任务。
BERT 的预训练
-
训练集:在由多伦多图书语料库和维基百科组成的大型语料库 -
输入: 每个样本都是句子对,表示为:[CLS]...句子1...[SEP]...句子2...[SEP] -
预训练任务1:将输入的样本的 token 以 15% 的比例进行随机掩码处理(标记为 mask),然后预测这些 mask 对应的 token。 -
预训练任务2:预测输入的句子对儿是不是相邻的句子。
BERT 的微调
BERT 是第一个用于微调(fine-tune)的预训练模型,可以说是为微调而生。我们不会直接使用 BERT 模型,而是根据特定的任务对 BERT 进行微调,包括:
-
更新预训练模型的参数; -
在模型中增加一个实现任务的输出层。
在 BERT 之前,通过迁移学习使用预训练好的大模型时,通常都是直接使用,不更新预训练模型的参数。在自然语言处理领域,当然是微调的表现更好。
微调模型的好处:先在一个大的数据集上,预训练一个大模型,预训练的大模型已经包含了足够多的、通用的信息;然后我们在一些具体的 NLP 任务中,使用自己的小数据集对大模型进行微调,就得到了针对特定任务表现很好的模型。既简化了训练,又提升了性能。
写在文末
人工智能技术日新月异,逐渐渗透进了各行各业。人工智能技术在生物领域有非常大的应用潜力,让我们一起学习,致力于人工智能推动生物发展。
为了促进交流,我创建了 AI in Bio 微信交流群,可以点击公众号主页底部进交流群一栏,获取交流群二维码,如果二维码失效,请给我留言,我会尽快更新。也可以先加我微信(微信ID:AIinbio),备注进交流群,然后我拉你进群。
感谢大家的支持与帮助!
本文由 mdnice 多平台发布