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的主要内容,如果未能解决你的问题,请参考以下文章