论文:https://arxiv.org/abs/1810.04805

 参考文献:自然语言处理中的Transformer和BERT - 知乎 (zhihu.com)

定义:

BERT(Bidirectional Encoder Representations from Transformers)是一种自然语言处理(NLP)中的预训练模型,由Google在2018年提出。

BERT的关键创新是使用双向(bidirectional)的Transformer编码器来学习上下文中的单词表示,而不是传统的单向模型(从左到右)。这使得BERT能够更好地理解语境,从而在各种NLP任务中取得了显著的性能提升

BERT模型的训练分为两个阶段:预训练(Pre-training)和微调(Fine-Tuning)。

在预训练阶段,BERT模型通过大规模的无标签文本数据,学习单词的上下文表示。

在微调阶段,使用有标签的任务特定数据对模型进行微调,以适应特定的NLP任务,如文本分类、命名实体识别、问答等

双向的bidirectional怎么实现的?

通过掩码语言模型(Masked Language Model, MLM)。在这个预训练任务中,模型的目标是预测随机掩盖的词(tokens):

  • 掩蔽(Masking)词汇:在训练过程中,BERT随机选择输入序列中的词汇并将其替换为一个特殊的掩码标记([MASK])。例如,句子“the quick brown fox jumps over the lazy dog”中的“brown”和“lazy”可能被替换成“the quick [MASK] fox jumps over the [MASK] dog”。

  • 双向上下文:为了正确预测这些掩蔽词汇,BERT必须学习使用词汇左侧和右侧的上下文。这与传统的语言模型不同,后者要么从左到右(正向),要么从右到左(逆向)单独地处理文本。

  • 全序列编码:由于Transformer架构的自注意力机制,BERT在处理任何给定词汇时都考虑了整个输入序列的信息。这意味着,在预测每个掩码标记时,模型同时考虑前面和后面的词汇

训练的数据

 

如何训练

 

模型训练过程

图中分为两个主要部分:预训练(Pre-training)和微调(Fine-Tuning)

 翻译:BERT的整体预训练和微调程序。除了输出层之外,在预训练和微调中也使用了相同的架构。使用相同的预训练模型参数来初始化不同下游任务的模型。在微调期间,对所有参数进行微调。[CLS]是添加在每个输入示例前面的特殊符号,[SEP]是一个特殊的分隔符(例如分隔ques问题/答案)。

概念

[CLS]是添加在每个输入示例前面的特殊符号,[SEP]是一个特殊的分隔符(例如分隔ques问题/答案)。

在“预训练”阶段

目标:就是实现对输入数据的理解。

模型使用两个任务来学习语言表示:

  1. 掩码语言模型(Mask LM):随机掩盖句子中的一些词(例如,使用[Tok1]、[TokN]等代替),然后模型尝试预测这些被掩盖的词。这帮助模型学习语言的上下文关系。
  2. 下一句预测(NSP,Next Sentence Prediction):模型接收成对的句子作为输入,并预测第二句是否为第一句的下一句。这帮助模型理解句子间的关系。

在“微调”阶段

模型通过训练特定的下游任务(例如情感分析、问答等)来调整其参数。

图中显示的是用于问答任务的微调,其中模型学习预测给定段落中问题的答案的位置。例如,使用SQuAD(斯坦福问答数据集)来训练模型识别文中答案的起始和结束位置。

模型的输入表示方式的图解【生成嵌入】

 输入数据首先被转换为一系列的嵌入(embeddings),这些嵌入包括

  • 1.Token Embeddings(标记嵌入): 对于输入文本中的每个单词或子词,BERT使用嵌入向量来表示。这些嵌入向量捕捉了单词在语义空间中的表示,通常是通过预训练的词嵌入模型(如Word2Vec、GloVe)得到的。
  • 2.Segmentation Embeddings(分割嵌入): BERT的输入可能包含来自不同句子或段落的文本。为了区分这些不同的文本段,BERT引入了分割嵌入。对于每个单词的嵌入向量,都会加上一个分割嵌入,以指示该单词属于哪个句子或段落。
  • 3.Position Embeddings(位置嵌入): Transformer模型本身不考虑单词的位置信息,因此BERT引入了位置嵌入来表示单词在句子中的位置。这是通过将每个单词的位置信息嵌入到向量中实现的。这是因为在Transformer中,输入序列的位置信息是被忽略的,而BERT通过添加位置嵌入来纠正这一不足。

 每个词的最终嵌入向量是这三种嵌入的和。例如,“my”这个词的最终嵌入是 E_my + E_A + E_1。这样做可以让模型同时了解词本身的含义、它在哪个句子中、以及它在句子中的位置。生成的嵌入,也可以用来其他的地方使用。

 

模型的结果

 

与其他模型对比:

 

  1. BERT(Bidirectional Encoder Representations from Transformers):

     ·  BERT使用双向Transformer结构进行预训练。这意味着在处理每个单词时,模型考虑其左侧和右侧的上下文信息。在所有层级中,BERT的表示都是对左右上下文的联合条件表示。

  1. OpenAI GPT(Generative Pre-trained Transformer):

      OpenAI GPT使用的是单向的(left-to-right)Transformer结构。在处理每个单词时,模型只考虑其左侧的上下文信息。GPT在每个层级都将左侧上下文信息传递给下一层,但不考虑右侧信息。

  1. ELMo(Embeddings from Language Models):

      ELMo使用了双向的长短时记忆网络(LSTM),分别从左到右和从右到左训练。在使用ELMo表示时,对于每个单词,将左向和右向的LSTM表示拼接在一起。这种方法使得模型能够利用单词在双向上下文中的信息。

posted on 2023-11-12 23:31  黑逍逍  阅读(53)  评论(0编辑  收藏  举报