当前位置:   article > 正文

自编码器BERT基本知识_bert份子编码器

bert份子编码器

自编码器BERT基本知识

本文将以本科学生的视角详解介绍自编码器模型

​1.以BERT模型作为介绍对象
2. 贴近实战,能做项目
3. 阅读本节内容通用于自编码器类模型

1.BERT提出

Bert模型是Google在2018年10月发布的语言表示模型,Bert在NLP领域横扫了11项任务的最优结果,可以说是18年NLP中最重要的突破。Bert模型的全称是Bidirectional Encoder Representations from Transformers,是通过训练Masked Language Model和预测下一句任务得到的模型。

关于BERT的具体细节和原理,建议去看原论文。首先要去阅读Transformer原论文,再去阅读BERT的原论文。如果阅读起来比较吃力,可以观看李沐的论文精度视频进行学习。

论文链接:

  • Transformers:https://arxiv.org/abs/1706.03762
  • BERT: https://arxiv.org/abs/1810.04805
  • 李沐B站链接:https://space.bilibili.com/1567748478/dynamic)

2.BERT为什么是自编码器

直观的理解

  1. BERT模型只采用Transformer的encoder作为堆叠的block,这种encoder采用注意力机制,因此每个词可以看到其位置前面的以及 后面的词,在这种注意力机制下,BERT的训练是将句子中mask掉的词还原,因此对句子的语义特征学习的较好;(与GPT这种自回归模 型形成鲜明的对比)
  2. BERT模型可以把输入的向量(batch,len)映射为(batch,len,768/1024),及将一个词典标号映射为一个768维或1024维的词向量,该词 向量具有丰富的上下关系和语义特征,你可以用这种词向量干任何nlp任务
  3. BERT模型通过大规模的语料训练,对普通文本的特征提取能力已经很强大了

3.BERT的使用方式

BERT通常作为一个编码器,对文本进行编码以形成词向量,进行迁移学习。

Fine-tuning

​ 在BERT之后接一个自己定义的神经网络层和损失函数进行训练,通过反向传播不仅自己定义的神经网络层参数在更新,BERT模型的参数也再更新,由于BERT的文本特征提取能力已经十分强大,所以只需要少量的数据就能够达到十分不错的效果。

Feature extract

直接使用BERT模型的输出作为新任务的的文本编码,将该文本编码作为你的新模型的输入,模型训练的过程中对BERT模型不具有反向传播,BERT模型的参数不能更新。

4.词向量是什么?

​ 一开始,词向量是神经网络的权重。word2vec通过CBOW和SG模型(根据两个词预测一个词)式训练,其输入是one-hot向量,神经网络的参数通常是[sizeof(one-hot),自定义维度],而one-hot通常只有一个标记显示为1,因此one-hot*神经网络参数会得到一个[自定义维度]的向量,这就是词向量;由于朝着训练目标前进,这个向量通常已经具备上下文特征;

​ 但是BERT模型出现后,词向量已经不再是严格意义上的神经网络hidden state参数,词向量还是那个词向量,但是BERT在拿到词向量后还要利用注意力机制对词向量进行适应任务调整。

5.BERT的词向量与word2vec的词向量有什么不同

  • 第一、word2vec这一革命性模型仅采用一层简单的神经网络,也就是one-hot->hidden state->目标值。而BERT模型引入了多头注意力机制,使用12层Transformer的Encoder,其模型复杂度比word2vec高的多,也就是one-hot->hidden state->BERT模型的主体部分->调整后的hidden state->目标值
  • 第二、word2vec生成的词向量其实就是其自己的某一index的神经网络参数,也就是说,训练一个word2vec模型,一个词的词向量已经确定,他是静态的不具有上下文的特征。而BERT模型在预训练的的过程中还是有one-hot->hidden state这一步的,但是它使用注意力机制对每个词的hidden state进行调整,这就厉害了,他可以根据不同的句子对hidden state进行调整(注意力机制是不会改变矩阵大小的),由于其有12层,每一层的输出都可以作为词向量,这个词向量是动态的,已经具备上下文语义特征。
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号