语⾔表示模型 BERT 详解(0基础)

0 前言

        对AI知识储备量为0的我,突然意识到有个任务“BERT详解”还未完成,匆匆忙忙地上网查找资料,结果根本没有一篇是完完全全0基础可以看懂的,故写下这篇文章。

0.1 阅读技巧

        对于本篇文章中,我会以两种方式去解释出现过的专业名词,一种是自己理解的大概模型,另一种是比较严谨的说明。同时,在阅读前我列出各名词之间的相互关系,确定好解读BERT的顺序。

0.2 产生背景

        ①此时GPT1利用Transformer结构,取得了很好的效果(但是不如后面的BERT)

        ②Transformer是一种基于attention机制的神经网络结构

        ③一些传统的语言模型在理解上下文信息时可能存在一些局限,所以能理解上下文的BERT必会诞生

1 什么是BERT呢?

        ①以0基础的视角看,BERT可以理解为一种解读工具。考虑一下怎么让机器理解语言文字,首先,机器无法直接读懂语言,所以我们要把语言文字转化成一个机器可以理解的东西,比如由许多数字组成的向量。

        为什么是向量呢?,因为词语的意义之间是有关联的,距离可以表示成为词与词之间的关系。比如:小猫、小狗、苹果,很显然我们知道,小猫和小狗之间的关系很近,因为都是动物,而小猫和苹果、小狗和苹果的关系相比较之下就远了。

        那怎么得到这些向量呢?如果我们一一为其手动附加向量,会发现这几乎是做不到。而随着机器学习的出现,我们可以把收集好的句子、文章等数据交给模型,然后让它为词找到最合适的向量,而BERT就是满足要求的模型之一。

        ②BERT(Bidirectional Encoder Representations from Transformers)是一种自然语言处理模型,它基于Transformer模型,具有双向编码能力,可以更好地理解自然语言文本的语境

 2 BERT长啥样(结构)?

            作为一个理解工具,那么肯定就要有输入数据的输入端,还有处理数据的body,还有输出的输出端。这里我介绍它的主要部分(encoder),输入端。

2.1.0 Transformer

       ①这里之所以介绍Transformer,用通俗易懂的话来说,就是因为BERT用到它身上的零件了。BERT有两种类型,一种是BERT-base,它叠加了12层encoder,另一种是BERT-large,它叠加了24层encoder,显然叠加的越多,处理文本的效果就越好。

那Transformer可以理解为一种翻译模型,但区别于逐字的根据单词翻译,Transformer是先理解,理解之后再转化输出。相当于Transformer有两个零件,一个是用于理解(称呼它为encoder),另一个是用于输出(decoder),结合刚才所说的BERT是一种理解工具,那么显然BERT就是用到了Transformer的encoder零件了

        ②Transformer是一种基于注意力机制(attention mechanism)的神经网络模型,由Vaswani等人在2017年提出。Transformer模型主要包括Encoder和Decoder两部分,主要应用于序列到序列(sequence-to-sequence)任务,如机器翻译、文本生成等。

2.1.1 Transformer Encoder

        ①一开始的翻译模型采用了RNN模型(对于0基础来说可以不必理解是什么,对于Transformer Encoder ,只需知道它是基于一个叫Self-Attention机制的模型,后面讲述的是它的由来),但是,首先翻译要解决的是输入输出字数不对等问题,对于这个问题呢,考虑到可以把输入的整个句子,用一个数据保存这个句子的意义,然后根据这个意义输出,这样就解决了。但是,新的问题出现了,如果输入的句子太长的话,原本句子的意义就很丰富,难以通过有限数据保存完整意义,就是会掉精度,那怎么解决呢?人们找到了Attention机制,在生成单词时,都有意识的从原始句子中提取生成该单词时最需要的信息,这样就拜托了输入序列的长度限制,但是这样计算会很慢,每一个信息都得等前面算完后才能继续。所以人们进一步找到了Self-Attention机制先提取每个单词的意义,再依据生成顺序选取所需要的信息。  

     ②Transformer Encoder的主要组成部分:

  1. 自注意力机制(Self-Attention):Transformer Encoder的核心是自注意力机制,它在每个位置计算该位置与序列中其他位置的相关性权重。通过自注意力机制,模型能够同时考虑整个序列的信息,更好地捕捉长距离依赖关系。自注意力机制的输入包括查询(Query)、键(Key)和值(Value),计算时将查询与所有位置的键和值进行加权求和,从而产生新的向量表示。

  2. 多头注意力机制(Multi-Head Attention):为了增加模型的表示能力,Transformer Encoder使用了多个并行计算的注意力头。每个注意力头学习不同的查询、键和值的映射,然后将它们的输出进行拼接和线性变换,得到最终的输出。

  3. 前馈神经网络(Feedforward Neural Network):在每个注意力层之后,Transformer Encoder还包含一个全连接的前馈神经网络,用于对每个位置进行独立的非线性变换。

  4. 残差连接(Residual Connection)和层归一化(Layer Normalization):为了解决深层网络训练时的梯度消失和梯度爆炸问题,Transformer Encoder引入了残差连接和层归一化技术。残差连接将输入与输出相加,使得梯度可以更容易地传播,层归一化则有助于加速模型的训练。

        

 2.2 Bert 输入端      

        Input Embedding主要包含以下三个部分:

  1. Token Embeddings(Token嵌入):Token Embeddings是针对输入文本中的每个单词或者子词生成的词嵌入(Word Embedding)。在BERT中,对于每个单词或者子词,会使用预训练的嵌入表(Embedding Table)来获取其相应的嵌入向量。这些Token Embeddings包含了单词或者子词的语义信息。

  2. Segment Embeddings(段嵌入):Segment Embeddings用于标识输入文本中不同句子或段落的界限。在BERT中,如果输入文本是由两个或以上独立的句子组成时,需要使用额外的Segment Embeddings来区分这些句子或段落。Segment Embeddings通常是一个二进制向量,用于区分不同句子或段落之间的关系。

  3. Position Embeddings(位置嵌入):Position Embeddings用于为输入文本中的每个单词或者子词加入位置信息。由于BERT模型是基于Transformer结构,不具备处理序列的顺序信息,因此需要通过加入Position Embeddings来标识单词在输入序列中的位置关系。Position Embeddings通常是一个特定的位置编码向量,用于表示单词在序列中的位置。

  

        我们观察上面的一个例子,对于上面的输入的单词,我们重点关注两个部分,一个是正常的词汇(如 my dog),另一个是特殊词汇,图中([CLS]和[SEP]),之所以区别transformer中特有的特殊字符,是因为BERT的预训练中有一个NSP任务(后面会讲到预训练,可以理解为处理两个句子之间的关系),所以需要有一个符号[SEP]来告诉模型,在这之前是一个句子,在这之后是另一个句子。而[CLS]的作用则是将[CLS]输出的向量接一个二分类器。

        然后,我们看一下token emb,Token emb其实很简单,就是对input中的所有词汇,做一般的emb(比如随机初始化)。第二部分,Segment emb,这里是因为我们处理的是两个句子,所以要对两个句子进行区别啦,比如这样赋值

        第三部分,也是BERT的输入部分和Transformer的输入部分的一个很大的区别。Transformer中,它用的是正余弦函数,而这里使用的是随机初始化然后让模型自己去学出来。

3 BERT 的预训练

        常见的两种训练是

        MLM(Masked Language Model),在MLM中,输入文本中的一部分词语会被随机遮蔽掉,然后模型需要预测这些被遮蔽的词语。

        NSP(Next Sentence Prediction),在NSP中,输入文本由两个句子组成,模型需要判断这两个句子是否是相邻的。

        在MLM中,说一下为什么不是把所有选定的Token全部遮蔽,而是有的遮蔽,有的替换成其他Token,有的不变。这个在BERT作者文章中说过,如果都替换的话,那在接下来的微调阶段,输入序列不存在“[MASK]”这样的Token,因此这将导致pre-training和fine-tuning之间存在不匹配的问题。同时作者还给出不同掩盖策略下的对比结果,如下图。

4 BERT 的微调

       在完成不同的自然语言处理任务时,需要将已经训练好的BERT依据任务目标,增加不同功能的输出层联合训练,通过微调模型参数来满足任务需求,比如文本分类就增加了分类器,阅读理解增加了一个全链接层。

5 BERT的应用场景

  1. 文本分类:BERT在文本分类任务中取得了很好的效果,可以应用于情感分析、垃圾邮件过滤、新闻分类等领域。

  2. 问答系统:BERT在问答系统中有广泛应用,可以帮助机器理解问题和找到答案,从而提升问答系统的效果。

  3. 命名实体识别:BERT在命名实体识别、实体关系抽取等任务上表现优异,可以帮助识别文本中的实体名词和关系。

  4. 语义搜索:BERT可以提升搜索引擎的语义理解能力,使搜索结果更加准确和相关。

  5. 语言生成:BERT可以用于文本生成任务,如机器翻译、对话生成等,生成的文本更加通顺和自然。

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值