bert模型

Posted yangyang12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bert模型相关的知识,希望对你有一定的参考价值。

1.概述

  bert是文本生成向量的一种方式,相较于以前的模型,bert将双向 Transformer 用于语言模型。

2.用途

  在分类任务中,例如情感分析等,只需要在 Transformer 的输出之上加一个分类层

  在问答任务(例如SQUAD v1.1)中,问答系统需要接收有关文本序列的 question,并且需要在序列中标记 answer。 可以使用 BERT 学习两个标记 answer 开始和结尾的向量来训练Q&A模型。

  在命名实体识别(NER)中,系统需要接收文本序列,标记文本中的各种类型的实体(人员,组织,日期等)。 可以用 BERT 将每个 token 的输出向量送到预测 NER 标签的分类层。

3.模型

  技术图片

 

首先通过将token,segment,position,进行embedding,然后相加作为输入层,

下一层使用Transformer做encoder,处理方式包括两种

Masked LM(MLM),Next Sentence Prediction (NSP)

 

  1).MLM

    在输入层随机mask掉一部分词,然后模型尝试基于序列中其他未被 mask 的单词的上下文来预测被掩盖的原单词。

      在 encoder 的输出上添加一个分类层

      用嵌入矩阵乘以输出向量,将其转换为词汇的维度

      用 softmax 计算词汇表中每个单词的概率

  技术图片

 

  2.NSP

    

      在 BERT 的训练过程中,模型接收成对的句子作为输入,并且预测其中第二个句子是否在原始文档中也是后续句子。
      在训练期间,50% 的输入对在原始文档中是前后关系,另外 50% 中是从语料库中随机组成的,并且是与第一句断开的。

      为了帮助模型区分开训练中的两个句子,输入在进入模型之前要按以下方式进行处理:

        在第一个句子的开头插入 [CLS] 标记,在每个句子的末尾插入 [SEP] 标记。

        将表示句子 A 或句子 B 的一个句子 embedding 添加到每个 token 上。

        给每个 token 添加一个位置 embedding,来表示它在序列中的位置。

      为了预测第二个句子是否是第一个句子的后续句子,用下面几个步骤来预测:

        整个输入序列输入给 Transformer 模型

        用一个简单的分类层将 [CLS] 标记的输出变换为 2×1 形状的向量

        用 softmax 计算 IsNextSequence 的概率

      在训练 BERT 模型时,Masked LM 和 Next Sentence Prediction 是一起训练的,目标就是要最小化两种策略的组合损失函数。

 

 

 

 

以上是关于bert模型的主要内容,如果未能解决你的问题,请参考以下文章

BERT关系抽取之R-BERT模型

图解BERT模型结构输入输出

如何将微调过的 bert 模型的输出作为输入提供给另一个微调过的 bert 模型?

用Bert模型计算句子的vector

预训练语言模型(GPT,BERT)

[Python人工智能] 三十三.Bert模型 keras-bert库构建Bert模型实现文本分类