1.简单描述下BERT的结构
答:BERT是Google在2018年提出的一种基于Transformers的预训练语言模型。BERT的设计理念是通过大规模无标注语料库的预训练,使得模型能够学习到丰富的语言知识,并将其用于下游自然语言处理任务中。
BERT的最大特点是采用了双向编码器(bidirectional encoder)来处理自然语言,因此不同于传统的自然语言处理模型,可以双向预测上下文中的词语。BERT模型采用Transformer作为编码器,具有多层的transformer encoder结构,使其能够处理长文本,并且在各种自然语言处理任务中取得了非常优秀的结果。
BERT的训练过程采用了两种预训练任务,即Masked Language Model和Next Sentence Prediction。Masked Language Model是通过将一些输入的单词随机遮盖掉,然后让模型来预测这些被遮盖的单词,从而使得模型能够学习到上下文相关的单词表示。而Next Sentence Prediction则是通过输入两个句子,并让模型来判断这两个句子是否是连续的,从而使得模型能够学习到句子间的关系。
BERT模型的预训练任务完成之后的作用,可以将其fine-tuning到各种下游自然语言处理任务中,如情感分析、命名实体识别、句子关系判断等。在大量下游任务中,BERT模型取得了领先的效果。
2.BERT的embedding向量是什么?
答:BERT的embedding向量是一种将自然语言中的单词转化为向量表示的方法。在BERT模型中,每个单词都被映射为一个固定长度的向量,这个向量的长度由模型的超参数决定,通常为768维或1024维。BERT的embedding向量是在预训练阶段通过训练模型得到的,其中每个单词的embedding向量被训练出来,使得相似的单词在向量空间中距离更近,而不相似的单词距离更远。
3.BERT的三个Embedding直接相加会对语义有影响吗?
答: BERT的三个Embedding分别是Token Embeddings、Segment Embeddings和Position Embeddings。这三个Embedding的作用是将输入的文本转化为模型可以处理的向量表示。
Token Embeddings是将输入的单词或者词组映射为对应的向量,其中每个单词的向量是从预训练的词表中获取的。Segment Embeddings是用于区分不同的句子,它将不同的句子中的单词赋予不同的标识,以区分它们在不同句子中的位置。Position Embeddings是用于编码单词在序列中的位置信息,以便模型能够学习到单词之间的相对距离和顺序关系。
三者所包含的信息不同,相加不影响后期的解耦,如果向加权或者乘除,后期很难解耦三者所表达的意义。
4.为什么BERT选择mask掉15%这个比例的词,可以是其他的比例吗?
答:在BERT中选择mask掉15%的词是通过经验得出的。具体来说,这个15%的比例是在BERT的开发过程中通过实验得出的最优比例,它能够在模型的训练中取得比较好的效果。在预训练的过程中,BERT随机将输入序列中的一些单词mask掉,即将这些单词用特殊的标记(如"[MASK]")替换掉,然后让模型去预测这些被mask掉的单词。这个预测任务可以让模型学习到单词之间的上下文关系和语义信息,从而提高模型的表现。虽然15%的比例在BERT中表现良好,但是在不同的任务和数据集上,最优的mask比例可能会有所不同。因此,在具体的应用场景中,可以根据实际情况调整mask比例以获得更好的效果。
5.BERT怎么进行mask的呢?
答:随机把一句话中 15% 的 替换成以下内容:
这些 有 80% 的几率被替换成 [mask ];
有 10% 的几率被替换成任意一个其他的 ;
有 10% 的几率原封不动。
6.其mask相对于CBOW有什么异同点?
答:Mask的策略不同:在CBOW中,不会使用Mask的策略。CBOW的训练是基于固定长度的滑动窗口,即将一段长度为m的文本序列划分成若干个长度为n(n < m)的文本片段。对于每个文本片段,模型会将中心单词周围的n个单词作为输入,然后预测中心单词。相比之下,BERT使用的是Mask策略,即将文本序列中随机选取的一部分单词替换为特殊的"[MASK]"标记,然后预测这些被Mask的单词。
输入的信息不同:CBOW的输入是固定长度的文本片段,而BERT的输入是整个文本序列。在CBOW中,由于每个文本片段的长度固定,因此无法捕捉到长距离的语义信息;而在BERT中,由于输入是整个文本序列,因此可以捕捉到更长的语义信息,从而提高模型的表现。
模型的复杂度不同:BERT相比CBOW模型更加复杂。BERT使用了一个双向Transformer模型,其中包含12(或24)个Transformer层,每个层都包含了多头自注意力机制和前馈神经网络等多个子层。相比之下,CBOW只使用了一个浅层神经网络。
7.word2vec到BERT又改进了什么?
答:模型的深度和复杂度:BERT比Word2Vec更加深度和复杂,其中包含12(或24)个Transformer层,每个层都包含了多头自注意力机制和前馈神经网络等多个子层,从而可以处理更复杂的文本信息。
上下文信息的利用:Word2Vec只考虑了单词的局部上下文信息,而BERT使用了Mask策略来随机屏蔽一些单词并预测它们,从而可以同时考虑全局和局部的上下文信息。
多任务学习:BERT使用了多任务学习的方法,在训练时同时进行了掩码语言建模和下游任务的学习,从而可以在不同任务中共享学习到的知识,提高模型的泛化能力和效果。
Pre-training和Fine-tuning两阶段的训练方式:BERT使用了Pre-training和Fine-tuning两阶段的训练方式。在Pre-training阶段,BERT在大规模文本语料库上进行预训练,学习语言的通用知识;在Fine-tuning阶段,BERT将预训练的模型微调到特定的下游任务上,以获得更好的性能和效果。
8.使用BERT预训练模型为什么最多只能输入512个词?
答:BERT模型输入的限制是因为模型架构的设计和计算资源的限制。为了在输入序列中引入位置信息,BERT在输入序列中增加了特殊的[CLS]和[SEP]标记,其中[CLS]标记用于表示整个序列的分类信息,[SEP]标记用于区分不同句子或文本片段。
9.有什么方法可以解决BERT输入长度的限制?
答:截断输入序列:可以通过截断输入序列的方式来减少序列的长度。可以选择截断序列的开始或结尾部分,或者根据序列中的关键信息来选择截断位置。但是需要注意,截断过多可能会导致模型性能下降
分段式输入:可以将长序列划分为多个段落,每个段落都是BERT模型的输入。在输入序列中,每个段落之间使用[SEP]标记来分隔。这种方法可以有效地解决输入长度的限制,但是需要根据任务需求设计合适的分段策略。
10.BERT中的[CLS]有什么用?
答:[CLS]标记可以被看作是整个输入序列的一个摘要或汇总,它可以代表整个输入序列的语义信息。因为,[CLS]一开始没有任何意义,自注意力机制使其关注了到了整个序列的信息。
11.什么任务适合bert,什么任务不适合?
答:适合的有:文本分类、问答系统、命名实体识别、语言生成;不适合:不需要或不侧重于理解自然语言中的语义信息,或者是因为数据量不足或任务本身的限制。(如特定领域、小样本等)
12.BERT的优缺点
答:优点:
预训练:BERT通过大规模无监督语料预训练,可以学习到丰富的语言知识,为下游任务提供更好的特征表示。
可迁移性:BERT在多个下游任务中均取得了优异的性能,说明它的特征表示具有很强的可迁移性。
长文本处理:BERT采用了Transformer结构,可以较好地处理长文本,而且可以并行计算,训练速度更快。
上下文敏感:BERT考虑了上下文信息,可以更好地处理多义词等语言现象,提高了自然语言处理的效果。
缺点:计算资源消耗大:BERT模型较大,需要较高的计算资源,训练时间和成本较高。
数据量需求大:BERT需要大量的无监督语料进行预训练,数据量需求较大。
长度限制:BERT输入长度有限制,只能输入512个词,且只能处理两个句子的关系。
预测效率低:BERT模型较大,需要较长的推理时间,不适合实时应用场景。
13.elmo、GPT、bert三者之间有什么区别?
答:模型结构:Elmo使用的是双向LSTM模型,GPT使用的是单向Transformer模型,而BERT使用的是双向Transformer模型。BERT是目前最先进的模型,它在模型结构上做了一些改进,如使用了双向Transformer模型和Masked Language Modeling和Next Sentence Prediction任务。
预训练任务:Elmo使用的是单向和双向语言模型,GPT使用的是单向语言模型,BERT使用的是Masked Language Modeling和Next Sentence Prediction任务。其中,BERT使用的Masked Language Modeling任务与传统的预测下一个词的语言模型不同,它要求模型从输入文本中掩盖一部分词汇,让模型学会在输入缺失的情况下仍然能够准确预测缺失部分的单词。
文本编码:Elmo将词向量和上下文信息分别进行编码,得到一个表示每个单词的向量和一个表示整个句子的向量。GPT和BERT都采用了基于Transformer的模型,可以将整个句子作为输入,同时考虑单词在上下文中的位置信息和词与词之间的交互作用。
应用场景:Elmo适用于对上下文敏感的自然语言处理任务,如命名实体识别、关键词提取等。GPT适用于自然语言生成和对话系统等任务,BERT适用于各种自然语言处理任务,包括文本分类、问答系统、命名实体识别等。
14.为什么 BERT 比 ELMo 效果好?
答:双向Transformer模型:BERT使用了双向Transformer模型,可以同时考虑上下文中的左侧和右侧信息,而ELMo只使用了双向LSTM模型,只能考虑左侧或右侧的上下文信息。
预训练任务:BERT使用了Masked Language Modeling和Next Sentence Prediction两个任务进行预训练。Masked Language Modeling任务要求模型从输入文本中掩盖一部分词汇,让模型学会在输入缺失的情况下仍然能够准确预测缺失部分的单词。Next Sentence Prediction任务则要求模型判断两个句子是否相邻,以提高模型对上下文信息的理解能力。而ELMo则只使用了单向和双向的语言模型进行预训练。
Fine-tuning的方式:BERT在微调阶段引入了一个分类任务,可以根据具体任务要求,将预训练的模型微调到特定任务上。同时BERT在预处理阶段采用了WordPiece技术,可以将单词分成更小的子词,进一步提高模型的泛化能力。而ELMo则是将预训练的向量表示作为输入特征进行下游任务的微调。
15 BERT 的结构可以用LSTM替换吗?
答:BERT的结构不能简单地用LSTM替换。BERT模型采用的是Transformer结构,而LSTM则是一种递归神经网络结构,二者在结构和运算方式上有很大的不同。
Transformer结构的优点在于其能够并行计算,使得训练速度更快,并且可以处理更长的文本序列。而LSTM则需要按照时间步序列逐步计算,训练速度较慢,并且无法很好地处理长文本序列。
另外,BERT模型中引入了预训练的机制,可以利用大规模无标注数据进行预训练,学习到更丰富的语言知识,使其在下游任务中表现更加出色。而LSTM等传统的神经网络结构则需要更多标注数据进行训练,而且其表示能力也有限。