BERT 模型是 Google 发表的论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》而提出的模型。它一种 Transformer 的双向编码器。
BERT 的输入是由三个 Embedding 相加而成的,分别是 Token Embeddings,Segment Embeddings,Position Embeddings。
- Token Embeddings:把输入句子中每个字通过查询字向量表的方式转换为一维向量,作为模型的输入。在 Tokenization 之前,先把特殊标记符 [CLS] 和 [SEP] 额外添加到句首和句尾。在 BERT 中,Tokenization 是用 WordPiece 来完成的
- Segment Embeddings:用于区分两个不同句子的,第一个句子是 0,第二个句子是 1。如果只有一个句子,那就都使用索引 0
- Position Embeddings:Position Embeddings 用于给模型提供序列顺序信息的。与 Transformer 中 Positional Encoding 不同,Positional Encoding 通过三角函数计算得到的,而 Position Embeddings 是通过模型训练学习得到的。BERT 使用 Position Embeddings 是因为 BERT 作为通用预训练模型,下游任务通常对词序特征要求比较高,所以选了 Postion Embeddings 这种因通过模型训练学习而潜能比较大的方式