Bert训练过程

本文探讨了word2vec在训练词向量时的不足,引出了ELMo的出现。重点介绍了Bert的预训练过程,包括输入结构、损失函数,并阐述了Bert作为预训练模型的两种主要应用方式,既可以用cls层输出做句子向量进行分类任务,也可作为更精准的词向量提升下游任务表现。

word2vec存在问题:

语言模型如rnn、lstm最后输出的是整个句子的向量,而我们需要预测的是其中某个词的向量,所以用其做为词向量训练不合适,

有了双向lstm,即ELMo。

 

Bert的预训练过程: 

bert:两个句子如果相连则输出0,不相连则输出1,然后将所有句子两两组合输入模型,开头加【cls】第一句【sep】第二句【sep】损失函数为mask单词和句子间关系损失之和。 

bert作为预训练模型的使用:两种

将cls层输出的向量作为句子的向量,外接一个分类器进行情感分析,主题分类等任务。

### BERT 预训练过程详解 BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer 的双向编码器表示模型,其预训练过程主要包括两个核心目标:Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)[^1]。 #### Masked Language Model (MLM) 为了使模型能够学习到上下文中的词关系,BERT 使用 MLM 方法随机掩盖输入序列中的一些单词,并让模型预测这些被掩盖的单词。具体来说: - 输入序列中有大约 15% 的 token 被随机选择进行掩码操作。 - 这些选中的 token 中有 80% 被替换为特殊标记 `[MASK]`,10% 被替换为其他随机 token,剩余 10% 则保持不变[^2]。 - 模型通过最大化似然函数来优化这些被掩盖 token 的预测概率。 #### Next Sentence Prediction (NSP) 除了 MLM 外,BERT 还引入了 NSP 来捕捉句子间的关联性。这一任务旨在判断一对连续的句子是否实际相邻于原始文档中。具体实现方式如下: - 训练数据由两句话组成,其中一半的情况这两句确实来自同一段落,另一半情况则是从不同段落随机抽取。 - 输出层会附加一个二分类器用于区分这两种情形,即“是”或“否”。 #### 参数配置与训练细节 以下是 BERT预训练阶段采用的主要参数设定及其意义说明: - **层数**:标准版 BERT 包含 12 层 Transformer 编码器;而扩展版本如 BERT-Large 增加至 24 层[^4]。 - **隐藏单元数**:每层神经网络宽度设定了不同的维度大小,默认情况下基础型号拥有 768 维向量空间表达能力。 - **注意力头数量**:多头机制允许模型关注更多样化的子特征组合,通常取值范围在 8 至 16 不等。 - **激活函数**:选用 GELU 函数作为非线性变换组件之一。 - **Dropout比率**:防止过拟合现象发生时所使用的正则化技术比例一般维持在较低水平约等于 0.1 左右。 此外值得注意的是 RoBERTa 对传统 BERT 实现进行了改进,取消了 NSP 并调整了一些超参使得整体表现更优。 ```python import torch from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') text = "[CLS] Who was Jim Henson ? [SEP]" tokenized_text = tokenizer.tokenize(text) indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text) segments_ids = [0] * len(indexed_tokens) tokens_tensor = torch.tensor([indexed_tokens]) segments_tensors = torch.tensor([segments_ids]) with torch.no_grad(): outputs = model(tokens_tensor, segments_tensors) last_hidden_states = outputs[0] ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值