关于网站开发人员的薪资,深圳市工程交易中心,做网站需要关注哪些重要问题,互联网推广和互联网营销BERT#xff0c;全称Bidirectional Encoder Representation from Transformers#xff0c;是google在2018年提出的一个预训练语言模型#xff0c;它的推出#xff0c;一举刷新了当年多项NLP任务值的新高。前期我在零、自然语言处理开篇-CSDN博客 的符号向量化一文中简单介绍…BERT全称Bidirectional Encoder Representation from Transformers是google在2018年提出的一个预训练语言模型它的推出一举刷新了当年多项NLP任务值的新高。前期我在零、自然语言处理开篇-CSDN博客 的符号向量化一文中简单介绍过其原理今天我将更加详细的介绍下其工作流程。 零、BERT模型架构
当前的语言模型主要分为两种
一种是自回归Auto-Regressive语言模型Aotoregressive Lanuage Modeling自回归语言模型根据前面(或后面)出现的token来预测当前时刻的token代表模型有ELMO、GTPtransformer中的decode解码器结构等,它一般采用生成类任务做预训练类似于我们写一篇文章自回归语言模型更擅长做生成类任务Natural Language GeneratingNLG例如文章生成等。
另一种是自编码Auto-Encoding语言模型Autoencoding Language Modeling自编码语言模型通过上下文信息来预测当前被mask的token代表有BERT、Word2Vec(CBOW)等.它使用MLM做预训练任务自编码预训模型往往更擅长做判别类任务或者叫做自然语言理解Natural Language UnderstandingNLU任务例如文本分类NER等。训练过程类似于做完形填空下面会介绍到。
BERT模型采用的是transformer里的encode编码器的结构它的模型总体结构如下 每一个transformer encode结构如下 一、BERT的训练流程
1.0 BERT的输入
BERT的输入是一个长度为n的输入序列n表示词组个数token数一般是512通常包含下面三个部分
1Token Embeddings采用wordpiece对文本进行切割成一个个子词经过embedding后每一个子词输出为768维的向量 (1, n, 768)。此层的tokenization使用的方法是WordPiece tokenization将词转换为one hot编码再经过embedding层转换成768维向量。
2Segment Embeddings切割句子用的(1, n, 768)相比transformer这个是新增的。
3Position Embeddings用于标记词在句子中的位置(1, n, 768)使用的是cos和sin的固定位置标记法。
整个输入是一个1*512*768的张量。 对于输入的句子将进行以下两个预训练任务。
1.1 BERT主要包含两个训练任务
1、 随机掩码训练任务
1随机地将一句话里的某个单词替换成mask输入到N层的transformer encode编码器里。
2将mask的隐层状态输入到softmax中进行预测输出预测的单词结果。
3将预测得到的单词结果和原始数据中单词计算交叉熵更新参数。 通过上面3步可以学习到“研究生”这个单词单独的语义又能学习到它的上下文的语义关系。是不是很像完形填空~。
2、下一个句子预测任务
这个任务主要学习句子间的关系它的训练过程如下
1将数据集中连续两个句子A和B进行拼接负例的构建就是随机组合句子就行。
2在拼接的句子前端加入cls标签代表句子是否连续在两个句子间加入seg标签输入到N层的transformer encode里。
3将cls的隐层状态输入softmax进行预测。
4将预测结果和实际结果计算交叉熵更新参数。 二、BERT应用时的微调方法
BERT微调时采用少量的标注数据进行少量轮次的迭代即可将模型微调为一个特定领域的任务模型比如句子相似性匹配句子分类问答对匹配、序列标注等。