NLP学习————实现一个BERT(简记)

NLP学习—实现一个BERT(简记)

本文主要内容是介绍了BERT的代码结构、具体实现与原理,对BERT的一些简记

内容包括以下几个部分:

  1. BERT Tokenization 分词模型(BertTokenizer)
  2. BERT Model 本体模型(BertModel)
    • BertEmbeddings
    • BertEncoder
      • BertLayer
        • BertAttention
        • BertIntermediate
        • BertOutput
    • BertPooler
本文内容的结构图如下:

在这里插入图片描述

具体的内容如下

1. BERT Tokenization 分词模型(BertTokenizer)

1)Tokenization分词-BertTokenizer:基于BasicTokenizer和WordPieceTokenizer的分词器
a)BasicTokenizer负责处理的第一步——按标点、空格等分割句子,并处理是否统一小写,以
及清理非法字符。
(1)对于中文字符,通过预处理(加空格)来按字分割;
(2)同时可以通过never_split指定对某些词不进行分割;
(3)这一步是可选的(默认执行)。
b)WordPieceTokenizer在词的基础上,进一步将词分解为子词(subword)。
(1)subword 介于 char 和 word 之间,既在一定程度保留了词的含义,又能够照顾到英
文中单复数、时态导致的词表爆炸和未登录词的 OOV(Out-Of-Vocabulary)问题,将词根
与时态词缀等分割出来,从而减小词表,也降低了训练难度;
(2)例如,tokenizer 这个词就可以拆解为“token”和“##izer”两部分,注意后面一个词的
“##”表示接在前一个词后面。
2. BERT Model 本体模型(BertModel)
组成:
1. embeddings,即BertEmbeddings类的实体,根据单词符号获取对应的向量表示;
2. encoder,即BertEncoder类的实体;
3. pooler,即BertPooler类的实体,这一部分是可选的。
补充: 剪枝是一个复杂的操作,需要将保留的注意力头部分的 Wq、Kq、Vq
和拼接后全连接部分的权重拷贝到一个新的较小的权重矩阵(注意先禁止 grad
再拷贝),并实时记录被剪掉的头以防下标出错。具体参考BertAttention部分
的prune_heads方法.**

2.1 BertEmbeddings
	组成:包含三个部分求和得到:

1) word_embeddings,上文中 subword 对应的嵌入。
2) token_type_embeddings,用于表示当前词所在的句子,辅助区别句子与
padding、句子对间的差异。
3) position_embeddings,句子中每个词的位置嵌入,用于区别词的顺序。和
transformer 论文中的设计不同,这一块是训练出来的,而不是通过 Sinusoidal
函数计算得到的固定嵌入。一般认为这种实现不利于拓展性(难以直接迁移到更长
的句子中)。
->>> 三个 embedding 不带权重相加,并通过一层 LayerNorm+dropout 后输出,其大小
为(batch_size, sequence_length, hidden_size)。
2.2 BertEncoder
组成:包含多层 BertLayer,这一块本身没有特别需要说明的地方,不过有一个细节值
得参考:利用 gradient checkpointing 技术以降低训练时的显存占用。
- BertLayer
- BertAttention
- BertSelfAttention
- BertSelfOutput
- BertIntermediate
- BertOutput
2.3 BertPooler
这一层只是简单地取出了句子的第一个token,即[CLS]对应的向量,然后过一个全连接层
和一个激活函数后输出:(这一部分是可选的,因为pooling有很多不同的操作)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!对于BERT情感分类实战,您可以按照以下步骤进行: 1. 数据准备: - 收集和整理情感分类的训练数据集,一般包含文本和对应的情感类别(如正面、负面、中性等)。 - 划分数据集为训练集和测试集,确保数据集的均衡性和随机性。 2. BERT模型介绍: - BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,通过双向Transformer编码器学习语义表示。 - 可以选择使用基于TensorFlow或PyTorch实现BERT模型,或者直接使用已经训练好的BERT模型进行微调。 3. 模型微调: - 使用训练集对BERT模型进行微调,即在预训练的BERT模型基础上,通过训练集进行进一步的学习。 - 这里的微调过程包括输入数据的预处理、构建分类任务的模型结构、定义损失函数和优化算法等。 4. 模型评估: - 使用测试集对训练好的BERT模型进行评估,计算分类准确率、精确率、召回率等指标,评估模型在情感分类任务上的性能。 5. 预测与应用: - 使用训练好的BERT模型对新的文本进行情感分类预测,得到情感类别的预测结果。 - 可以将该模型应用于各种情感分析任务,如舆情监测、评论情感分析等。 以上是BERT情感分类实战的一般流程,您可以根据具体需求和数据特点进行相应调整和优化。希望能对您有所帮助!如有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值