本地建站软件有哪些,1688网站登录,数商云工作怎么样,建设工程招标专业网站来自Transformers的双向编码器表示#xff08;BERT#xff09; 目录 1. 从上下文无关到上下文敏感2. 从特定于任务到不可知任务3. BERT#xff1a;把两个最好的结合起来4. BERT的输入表示5. 掩蔽语言模型#xff08;Masked Language Modeling#xff09;6. 下一句预测BERT 目录 1. 从上下文无关到上下文敏感2. 从特定于任务到不可知任务3. BERT把两个最好的结合起来4. BERT的输入表示5. 掩蔽语言模型Masked Language Modeling6. 下一句预测Next Sentence Prediction, NSP 1. 从上下文无关到上下文敏感
早期的词嵌入模型如word2vec和GloVe会将同一个词在不同上下文中的表示设定为相同。这就导致了一个问题当同一个词在不同的句子中有不同的意思时这些模型无法区分。例如“crane”在“a crane is flying”一只鹤在飞和“a crane driver came”一名吊车司机来了中的意思是完全不同的。
为了克服这个问题出现了“上下文敏感”词嵌入模型。这些模型会根据词的上下文来调整词的表示使得相同的词在不同句子中的表示可以有所不同。比如ELMo模型会根据句子的整体结构来调整每个词的表示使其更加贴合具体的语境。
2. 从特定于任务到不可知任务
ELMo虽然改进了词嵌入使其上下文敏感但它仍然需要为每个具体的自然语言处理任务设计一个特定的模型架构。这就意味着在解决不同的任务时仍然需要大量的定制化工作。
为了简化这一过程GPT生成式预训练模型被提出。GPT使用了通用的模型架构可以应用于各种自然语言处理任务而不需要为每个任务设计一个特定的模型。这种模型在预训练阶段学习了大量的语言知识在应用于具体任务时只需要做少量的调整即可。
然而GPT有一个缺点它只能从左到右进行语言建模无法同时考虑词的左右上下文。
3. BERT把两个最好的结合起来
BERT模型结合了ELMo和GPT的优点既能够进行上下文敏感的双向编码又不需要为每个任务设计特定的模型架构。BERT使用了Transformer编码器可以同时考虑词的左右上下文从而获得更准确的词表示。在应用于具体任务时BERT模型只需要做少量的架构调整并且可以微调所有的参数以适应不同的任务需求。
BERT的出现大大简化了自然语言处理任务的模型设计过程并且在多个任务上都取得了显著的性能提升。
BERT的贡献与任务分类 BERT提升了自然语言处理中的11种任务水平这些任务可以归类为四大类
单文本分类例如情感分析就是判断一段文本是正面的还是负面的。文本对分类例如自然语言推断就是判断两段文本之间的关系。问答例如从一段文本中找出问题的答案。文本标记例如命名实体识别就是识别文本中的人名、地名等特定信息。
BERT与ELMo和GPT一样都是2018年提出的。这些模型通过预训练一种强大的语言表示方式彻底改变了自然语言处理的解决方案。它们的概念虽然简单但在实际应用中效果非常强大。
4. BERT的输入表示
在自然语言处理中有的任务如情感分析只需要输入一段文本而有的任务如自然语言推断需要输入两段文本。BERT对这两种输入方式进行了明确的表示 单文本输入BERT输入序列包含一个特殊标记cls然后是文本序列的标记最后是一个特殊分隔标记sep。例如对于“Hello, world!”输入序列为cls Hello , world ! sep。 文本对输入BERT输入序列包含一个特殊标记cls然后是第一个文本序列的标记接着是一个分隔标记sep再接着是第二个文本序列的标记最后再加一个分隔标记sep。例如对于“Hello, world!”和“How are you?”输入序列为cls Hello , world ! sep How are you ? sep。
为了区分文本对BERT使用了片段嵌入。对于第一个文本序列使用片段嵌入\mathbf{e}_A对于第二个文本序列使用片段嵌入\mathbf{e}_B。如果只有一个文本输入就只使用\mathbf{e}_A。
在BERT的预训练中有两个主要任务掩蔽语言模型Masked Language ModelingMLM和下一句预测Next Sentence Prediction。我们先来详细解释掩蔽语言模型任务。
5. 掩蔽语言模型Masked Language Modeling
基本概念
语言模型通常使用前面的词左侧上下文来预测下一个词元。BERT的掩蔽语言模型任务的目标是为了实现双向编码同时利用左侧和右侧的上下文来预测每个词元。为此BERT会随机选择一些词元进行掩蔽并尝试通过双向上下文来预测这些掩蔽的词元。
掩蔽策略
在BERT的预训练过程中15%的词元会被随机选择进行掩蔽。为了确保模型在微调时能够适应真实情况BERT在预训练中采用了三种不同的方法来处理这些被掩蔽的词元
80%的时间用特殊的“”词元替换。例如句子“this movie is great”会变成“this movie is ”。10%的时间用随机词元替换。例如句子“this movie is great”会变成“this movie is drink”。10%的时间词元保持不变。例如句子“this movie is great”依然是“this movie is great”。
这种处理方式有两个好处
减少偏差模型不会仅仅依赖掩蔽词元来进行训练因为并不是所有的掩蔽词元都用“”替换。增强鲁棒性在训练中引入噪声例如用随机词元替换可以使模型在实际应用中更加稳健。
预测掩蔽词元
为了预测被掩蔽的词元BERT使用了一个单隐藏层的多层感知机MLP。这个MLP接收BERT编码器的输出和需要预测的词元位置并输出这些位置上的预测结果。具体来说
输入来自BERT编码器的表示和掩蔽词元的位置。输出这些位置上预测的词元。
计算损失
通过预测的结果即每个掩蔽位置上的预测词元和真实标签我们可以计算交叉熵损失。交叉熵损失衡量了预测值与实际标签之间的差距是训练语言模型时常用的损失函数。
掩蔽语言模型任务通过随机掩蔽部分词元并利用双向上下文来预测这些掩蔽的词元从而使BERT模型能够更好地理解和生成自然语言。通过多种掩蔽策略模型在训练中引入了一定的噪声增强了模型的泛化能力使其在处理实际任务时更加稳健。
6. 下一句预测Next Sentence Prediction, NSP
尽管掩蔽语言建模Masked Language Modeling, MLM可以帮助模型理解每个单词的上下文但它不能直接帮助模型理解两个句子之间的逻辑关系。为了解决这个问题BERT在预训练过程中还引入了一个二分类任务——下一句预测NSP。
NSP 任务的原理
在NSP任务中模型需要判断两个给定的句子是否是连续的。具体来说
标签为“真”的句子对有一半的句子对确实是连续的即第二个句子是第一个句子的直接后续。标签为“假”的句子对另一半的句子对是随机生成的第二个句子是从语料库中随机抽取的与第一个句子没有直接关系。
NSP 类的实现
为了实现NSP任务BERT使用了一个简单的多层感知机MLP来进行二分类。NSP类的核心部分是一个线性层它接受输入并输出两个值分别表示两个句子是连续的标签为“真”和不是连续的标签为“假”。
特殊词元 cls 的作用
在BERT模型中特殊词元cls被用于总结两个输入句子的整体信息。通过自注意力机制cls词元的表示已经编码了输入的两个句子的所有信息。因此我们可以直接使用编码后的cls词元的表示作为输入来进行下一句预测。
计算二分类交叉熵损失
为了评估NSP任务的表现我们使用二分类交叉熵损失函数来计算预测结果与真实标签之间的差距。这种损失函数会计算每个预测结果与对应真实标签之间的误差然后对这些误差进行平均以获得整体的损失值。
预训练语料库
BERT的预训练是在两个大规模的语料库上进行的
图书语料库包含大约8亿个单词。英文维基百科包含大约25亿个单词。
这些庞大的语料库为BERT模型提供了丰富的训练数据使得模型在处理各种自然语言处理任务时具备强大的理解能力。
通过结合MLM和NSP两个预训练任务BERT模型能够同时理解单词的上下文信息和句子之间的逻辑关系。这种双重训练方式使得BERT在许多自然语言处理任务中表现出色。MLM任务帮助模型更好地理解单词的含义而NSP任务则帮助模型理解句子之间的关系。这两种任务的结合使得BERT在语言理解方面达到了前所未有的高度。