Bert Model 训练遇到的问题描述

本文介绍了在训练Bert模型过程中tokenizer.encode()和tokenizer.tokenize()的区别,前者返回字典ID,后者返回token。此外,讨论了TensorFlow 2.0中模型保存的两种形式:.pb格式包含了模型参数、结构和计算过程,适合直接部署;.ckpt格式仅保存模型参数,恢复时需重新定义网络结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. tokenizer.encode() 方法 与 tokenizer.tokenize() 之间的区别:
(1) tokenizer.encode() 返回其在字典中的id

(2) tokenizer.tokenize() 返回 token

def bert_():
    model_name = 'bert-base-chinese'
    MODEL_PATH = 'F:/models/bert-base-chinese/'

    # a.通过词典导入分词器
    tokenizer = BertTokenizer.from_pretrained(model_name)
    # b. 导入配置文件
    model_config = BertConfig.from_pretrained(model_name)
    # 修改配置
    model_config.output_hidden_states = True
    model_config.output_attentions = True
    # 通过配置和路径导入模型
    bert_model = BertModel.from_pretrained(MODEL_PATH, config=model_config)
    # tokenizer.encode()
    sen_code_encode = tokenizer.encode("自然语")
    print("sen_code_encode",sen_code)
    # tokenizer.tokenize
    sen_code_tokenizer = tokenizer.tokenize("自然语")
    print("sen_code_tokenizer", sen_code0)

if __name__ == '__main__':
    bert_()
### BERT模型的数学公式解析 #### 1. Transformer架构下的BERT公式化描述 BERT基于Transformer编码器构建,其核心在于自注意力机制。对于输入序列$X=\{x_1,x_2,...,x_n\}$,其中$x_i \in R^{d_{model}}$代表第$i$个token对应的$d_{model}$维向量,在单层Transformer中计算过程如下: - **Query、Key和Value矩阵变换** 为了实现多头自注意机制,首先将输入序列分别投影成查询(Q)、键(K)以及值(V),这一步骤可以通过线性变换完成: \[ Q=W_Q X,\ K=W_K X,\ V=W_V X \] 这里$W_Q,W_K,W_V \in R^{d_{model}×d_k}$分别是权重参数矩阵[^3]。 - **缩放点积注意力函数** 接着定义缩放点积注意力(Scaled Dot-product Attention)作为基本单元来衡量任意一对tokens之间的重要性程度: \[Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V\] 该操作可以看作是对原始attention score做了标准化处理以稳定梯度传播,并且乘上了$\frac{1}{\sqrt{d_k}}$因子防止内积过大引起数值不稳定问题- **多头自注意力** 为了让模型能够在不同子空间里关注不同的信息维度,引入了多个并行运行上述公式的分支——即所谓的“heads”。最终输出则是这些head的结果拼接后再做一次线性转换获得统一尺寸表示形式: \[ MultiHead(Q,K,V)=Concat(head_1, head_2, ..., head_h) W_O \] 其中每个单独的head都遵循相同模式:$head_i=Attention(QW_i^K ,KW_i^K , VW_i^V)$;而$W_O∈R^{hd_v×d_{model}}$负责最后融合各路特征的作用。 #### 2. Masked Language Model (MLM) 在预训练期间,BERT采用了masked language modeling策略,即随机掩盖掉一定比例(通常为15%)的单词,然后尝试恢复它们。设$P(x_t|x_{t−k},...,x_{t+k})$为目标分布,则优化目标可表述为最大化似然估计: \[ L=-\sum_{i=1}^{n}\log P(w'_i|w'_{1:i-1}, w'_{i+1:n}) \] 这里的$w'$指代经过mask后的版本[$^4]$。 #### 3. Next Sentence Prediction (NSP) 除了MLM外,另一个重要的预训练任务就是next sentence prediction。假设存在两个连续或不连续的句子A和B组成的pair $(a,b)$,则二分类交叉熵损失函数定义如下: \[ J(\theta )=-y*\log p+(1-y)*\log (1-p)\] 其中$p=sigmoid(f([CLS];θ))$表示预测结果,$f()$对应整个网络结构运算流程;$y∈\{0,1\}$标记实际标签关系是否成立; $[CLS]$特定位用来承载整句话语义信息[$^4]$。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值