🌸个人主页:Yang-ai-cao
📕系列专栏:深度学习
🍍 博学而日参省乎己,知明而行无过矣
目录
目录
4.1 MLM(Masked Language Model)
4.2 NSP(Next Sentence Prediction)
1.BERT介绍
BERT的全称为Bidirectional Encoder Representation from Transformers,是一个预训练的语言 表征模型,它强调不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练。它旨在通过在所有层中对左右上下文进行联合调节,采用新的masked language model(MLM),用于语言理解的深度双向转换器的预训练,从未标记的文本中预训练深度双向表示。因此,只需一个额外的输出层即可对预训练的 BERT 模型进行微调,从而为各种任务(例如问答和语言推理)创建较为先进的模型,而无需对特定于任务的架构进行大量修改。
· BERT在 11 项自然语言处理任务上获得了最先进的新结果,包括将 GLUE 分数提高到 80.5% (绝对提高 7.7%),将 MultiNLI 准确率提高到 86.7%(绝对提高 4.6%),将 SQuAD v1.1 问答测试 F1 提高到 93.2(绝对提高 1.5 分),将 SQuAD v2.0 测试 F1 提高到 83.1(绝对提高5.1 分)。
· BERT的网络架构主要使用的是《Attention is all you need》中提出的多层Transformer结构,Transformer结构在NLP领域中已经得到了广泛应用,其最大的特点是抛弃了传统的RNN和CNN。通过Self-Attention机制将任意位置的两个单词的距离进行特定转换,有效的解决了NLP 中棘手的长期依赖问题。
2.BERT结构
BERT利用MLM进行预训练并且采用深层的双向Transformer组件进行构建模型,总体结构是将多个Transformer Encoder一层一层地堆叠起来。在论文中,作者分别用12层和24层Transformer Encoder组装出两套BERT模型,两套模型的参数总计分别为110M和340M。(Transformer模型详解(图解最完整版) - 知乎 (zhihu.com))

图2.1 Transformer整体结构
隐藏Transformer详细结构,表示如下:

图2.2 Transformer黑箱图
Transformer结构进行堆叠,形成更深的神经网络(可理解为将Transformer encoder进行堆叠):

图2.3 多层堆叠Transformer
经过多层Transformer结构的堆叠后,形成BERT的主体结构(可视化:大雄007):

图2.4 Bert整体结构

图2.5 BERT的总体预训练和微调程序
3.输入表示

图3.1 token表征的组成
输入向量由三层组合:
3.1.Token Embeddings 即词向量。
· 要将各个词转换成固定维度的向量。中文目前尚未对输入文本进行分词,而是直接对单子构成为本的输入单位。特别的,英文词汇会做更细粒度的切分,比如上图中的playing 切割成 play 和 ##ing;将词切割成更细粒度的 Word Piece 是为了解决未登录词的常见方法。
· [CLS] 表示开始标志,同时[CLS]表示该特征用于分类模型,对非分类模型,该符号可以省去。[SEP]表示分句符号,用于断开输入语料中的多个句子。
· Bert 在处理英文文本时只需 30522 个词,Token Embeddings 层会将每个词转换成 768 维向量,例如:‘I like dog’ ,3个Token 会被转换成一个 (5, 768) 的矩阵或 (1, 5, 768) 的张量。
3.2. Segment Embeddings 段落向量。
· BERT 能够处理对输入句子对的分类任务,这类任务就像判断两个文本是否语义相似。句子对中的两个句子被简单的拼接在一起后送入到模型中,BERT通过segment embeddings去区分一个句子对中的两个句子,因为预训练不单单做LM,还得做以两个句子为输入的分类任务。
· Segement Embeddings 层有两种向量表示,前一个向量是把 0 赋值给第一个句子的各个 Token,后一个向量是把1赋值给各个 Token,问答系统等任务要预测下一句,因此输入是有关联的句子。而文本分类只有一个句子,那么 Segement embeddings 就全部是 0。
3.3. Position Embeddings 位置向量。
· 一般认为,Transformers无法编码输入的序列的顺序性,加入position embeddings会让BERT理解不同位置的words,Bert的位置向量不使用三角函数,而是需要进行训练学习。
· 例如:出现在文本不同位置的字/词所携带的语义信息存在差异(如 ”你爱爸爸“ 和 ”爸爸爱你“),你、爸爸虽然都和爱字很接近,但是位置不同,表示的含义不同。
· BERT 中处理的最长序列是 512 个 Token,长度超过 512 会被截取,BERT 在各个位置上学习一个向量来表示序列顺序的信息编码进来,这意味着 Position Embeddings 实际上是一个 (512, 768) 的 lookup 表,表第一行是代表第一个序列的每个位置,第二行代表序列第二个位置。
最后,BERT 模型将 Token Embeddings (1, n, 768) + Segment Embeddings(1, n, 768) + Position Embeddings(1, n, 768) 求和的方式得到一个 Embedding(1, n, 768) 作为模型的输入。

这篇博客详细介绍了BERT模型的结构、预训练任务,包括MLM和NSP,并提供了BERT模型在情感分析任务上的实现步骤,包括数据处理、模型微调、训练和保存模型。博主分享了完整的Python代码示例,适用于初学者实践。
&spm=1001.2101.3001.5002&articleId=136094167&d=1&t=3&u=4df029f687c247fe85811714f0125f74)
6322

被折叠的 条评论
为什么被折叠?



