BERT 结构与原理(1)--Embedding

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BERT 结构与原理(1)--Embedding相关的知识,希望对你有一定的参考价值。

参考技术A   BERT主要是多个Transformer的Encoder作为主题,主要包含Embedding层,Encoder层。

  BERT中的Embedding主要有3种:

  Token Embedding 是对词向量进行编码。原始的输入是[batch,seq_len]。经过 Token Embedding 后数据的维度为[batch,seq_len,d_model]。
  在BERT中Token Embedding的内部计算流程是初始化一个二维数组,大小为[vocab_size,d_model],然后将输入的数据进行one-hot编码,维度为[batch,seq_len,vocab_size],进行tensor的乘法。验证如下:

可以看见两者的结果是一样的,所以猜测embedding内部就是先将句子中每个词的索引表示转化为one-hot表示,然后对编码后的数据进行矩阵的变换,其中参数开始是输出化的,后面训练的时候可以用来学习。编码后的输出为[batch,seq_len,d_model]

  BERT中的Position Embedding和Transformer不一样,transormer中式直接利用公式,计算出对用维度的值。在BERT中是要学习的。比如说d_model的大小为512,那么每个句子就会生成一个[0,1,2,...511]的一维数组,然后重复batch次,因此实际的输入为[batch,d_model],将其送到one_hot中进行编码,具体的编码过程和Token Embedding一样,然后最后的输出为[batch,seq_len,d_model]。和Token Embedding输出的维度一样。

一般是不用的,只在句子对的时候采用。其编码后的维度也是[batch,seq_len,d_model]。

以上是关于BERT 结构与原理(1)--Embedding的主要内容,如果未能解决你的问题,请参考以下文章

BERT模型结构可视化与模块维度转换剖析

BERT模型结构可视化与模块维度转换剖析

BERT模型结构可视化与模块维度转换剖析

图解BERT模型结构输入输出

文本信息抽取与结构化详聊如何用BERT实现关系抽取

预训练模型-从BERT原理到BERT调包和微调