BERT系列-浅谈

BERT的输入输出

BERT的输入

BERT模型将字向量(token embedding)、文本向量(segment embedding)、和位置向量(position embedding)的加和作为模型输入(word embedding)
输入:word embedding = token embedding + segment embedding + position embedding

  1. token embedding:表示文本中各个字/词的原始词向量,该向量可以随机初始化,也可以利用word2vector等算法进行预训练以作为初始值。
  2. segment embedding:文本向量,该向量的取值在模型训练过程中自动学习,用于刻画文本的全局语义信息,并与单字/词的语义信息相结合。
  3. position embedding:位置向量**,由于出现在文本不同位置的字/词携带的语义信息存在差异**(比如“我爱你”和“你爱我”),因此BERT模型对不同位置的字/词分别附加一个不同的向量以作区分,即解决一词多义。
    在BERT模型中,还可以将英文词汇作进一步切割(子词切分类似BPE),划分为更细粒度的语义单位(wordpiece),例如 将playing分割为play和ing。

BERT的输出

输出是文本中各个字/词融合了全文语义信息后的向量表示。

BERT选择mask掉15%比例的原因

BERT采用的是Masked LM,会选取语料中所有词的15%进行随机mask,论文中表示是收到完形填空的启发,类似CBOW中华东窗口的中心词,从CBOW的角度看10%-20%的比例都是可行的。

BERT中3中情况mask的作用

  1. 预训练在句子编码的时候将部分词mask,作用是用被mask词前后的词猜测mask掉的词是什么,因为是认为mask的,所以计算机知道mask词的正确值,所以可以判断模型猜测的词是否准确
  2. Transformer模型的decoder层存在,ask,例如在翻译任务中,翻译我爱你为i love you,模型在预测love的时候不知道you的信息,所以需要把后面you的信息mask掉。但是BERT只有encoder层,所以这个是transformer模型的特征。
  3. attention模块有一个可选择的mask操作,主要是句子可能存在填0的操作,attention模块不需要把填0的无意义信息算进来,所以使用mask

BERT最多输入512的原因

因为BERT预训练模型设置config的max_position_embeddings为512和type_vocab_size为2,所以最多输入512,最多两个句子合成一句。硬件条件允许的情况下可以更改config重新预训练。

  1. 这是初始值设置的原因,前者对应position embedding,后者对应segment embedding
  2. 在BERT中,token、position、segment embedding 都是通过学习得到的
  3. 因此在直接使用google的BERT预训练模型时,输入最多512个词(还要除掉[CLS]和[SEP]),最多两个句子合成一句。之外的词和句子没有对应的embedding。

BERT为什么要在第一句前加[CLS]标志

因为与文本中已有的其他词相比,这个无明显语义信息的符号会更公平的融合文本中各个词的语义信息,从而更好的表示整句话的意义

  1. BErt在第一句前会加一个[CLS]标志,最后一层该位对应向量可以作为整句话的语义表示,从而用于下游分类任务等。
  2. self-attention是用文本中的其他词来增强目标词的语义表示,但是目标词本身的语义还是会占主要部分,因此经过BERT的12层,每次词的embedding融合了所有词的信息,可以去更好的表示自己的语义。
  3. [CLS]位本身没有语义,经过12层,得到的是attention后所有词的加权平均,相比其他正常词,可以更好的表征句子语义。
  4. 也可以通过最后一层所有词的embedding作pooling去表征句子语义

BERT的非线性来源于哪里

前馈层的gelu激活函数和self-attention,self-attention是非线性的。

BERT的三个embedding直接相加会对语义有影响吗

BERT的三个embedding相加,本质上可以看做是一个特征的融合,BERT还有Layer Norm,会把embedding结果统一到相同的分布,所以BERT可以学到融合后特征的语义信息

  1. embedding数学的本质,就是以one hot为输入的单层全连接
  2. word embedding = token embedding + position embeddin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值