BERT的三个Embedding详解

BERT将输入文本中的每一个词(token)送入token embedding层从而将每一个词转换成向量形式

两个嵌入层,segment embeddings和 position embeddings

token embedding

token embedding 层是要将各个词转换成固定维度的向量。在BERT中,每个词会被转换成768维的向量表示

假设输入文本是 “I like strawberries”。下面这个图展示了 Token Embeddings 层的实现过程:

输入文本在送入token embeddings 层之前要先进行tokenization处理。此外,两个特殊的token会被插入到tokenization的结果的开头 ([CLS])和结尾 ([SEP]) 。它们视为后面的分类任务和划分句子对服务的

tokenization使用的方法是WordPiece tokenization. 这是一个数据驱动式的tokenization方法,旨在权衡词典大小和oov词的个数。这种方法把例子中的“strawberries”切分成了“straw” 和“berries”。这种方法的详细内容不在本文的范围内

Token Embeddings 层会将每一个wordpiece token转换成768维的向量。这样,例子中的6个token就被转换成了一个(6, 768) 的矩阵或者是(1, 6, 768)的张量(如果

### BERT 模型结构详解 #### 1. 总体架构 BERT 的总体架构由输入模块、特征提取模块以及任务处理模块组成。输入模块负责对原始文字进行信息提取,包括字信息、位置信息和句信息[^3]。这些信息通过嵌入操作被转化为向量表示。 #### 2. 输入模块 在 BERT 中,输入部分分为三类嵌入:Token Embedding (token emb),Segment Embedding (segment emb),以及 Position Embedding (position emb)[^4]。 - **Token Embedding**: 将每个单词映射到一个高维空间中的向量表示。这可以通过预训练的词向量或者随机初始化的方式完成。 - **Segment Embedding**: 表示当前文本片段所属的句子编号(A 或者 B),用于区分两句话之间的关系,在下游任务如问答系统中有重要作用。 - **Position Embedding**: 提供序列中词语的位置信息,帮助模型理解上下文顺序。需要注意的是,BERT 使用固定长度的位置编码方式,不同于 Transformer 中基于正余弦函数动态计算的方法。 以上三种嵌入会被相加得到最终的输入表示,并送入后续网络层进一步加工。 #### 3. 特征提取模块 该模块采用多层 Transformer Encoder 构建而成。具体而言,BERT Base 版本包含 12 层 Encoders 而 Large 则扩展至 24 层。每一层都执行自注意力机制(Self-Attention Mechanism) 和前馈神经网络(Feed Forward Neural Network),从而捕捉全局依赖性和局部特性。经过层层叠加后的隐藏状态能够很好地表征给定语料库内的语法与语义规律。 #### 4. 任务处理模块 最后一个组件即为任务特定适配器——Task-Specific Layers。此阶段依据实际应用场景调整输出形式以匹配不同类型的 NLP 子任务需求,比如分类问题可能只需要取 [CLS] token 对应的状态作为整个句子的表现;而对于命名实体识别则需逐 token 进行预测等等。 ```python import torch from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') text = "Replace me by any text you'd like." encoded_input = tokenizer(text, return_tensors='pt') output = model(**encoded_input) print(output.last_hidden_state.shape) ``` 上述代码展示了如何加载并运行一个标准版的小规模 BERT 模型实例化过程及其基本调用方法。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值