transformer模型的工作原理和语言模型BERT

transformer模型的工作原理和语言模型BERT

1,概述

《Attention Is All You Need》是一篇Google提出的将Attention思想发挥到极致的论文。这篇论文中提出一个全新的模型,叫 Transformer,抛弃了以往深度学习任务里面使用到的 CNN 和 RNN。目前大热的Bert就是基于Transformer构建的,这个模型广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要和语音识别等等方向。

以下是论文引用:

“Transformer 是第一个完全依赖自注意力(self-attention)来计算输入和输出的表示,而不使用序列对齐的递归神经网络或卷积神经网络的转换模型。”

这里说的“转换”(transduction)是指将输入序列转换成输出序列。Transformer 背后的思想是使用注意力机制处理输入和输出之间的依赖关系,并且要完全递归。

尽管之前流行的seq2seq模型也很出色,但存在一定的局限性:处理长期依赖仍然是一个挑战;模型架构的顺序特性阻止了并行化。transformer模型很好的解决了这两个问题。

2,transformer模型

首先来说一下transformerLSTM的最大区别, 就是LSTM的训练是迭代的, 是一个接一个字的来, 当前这个字过完LSTM单元, 才可以进下一个字, 而transformer的训练是并行了, 就是所有字是全部同时训练的, 这样就大大加快了计算效率, transformer使用了位置嵌入(positional encoding)(positional encoding)来理解语言的顺序, 使用自注意力机制和全连接层来进行计算, 这些后面都会详细讲解.
transformer模型主要分为两大部分, 分别是编码器解码器, 编码器负责把自然语言序列映射成为隐藏层(下图中第2步用九宫格比喻的部分), 含有自然语言序列的数学表达. 然后解码器把隐藏层再映射为自然语言序列, 从而使我们可以解决各种问题, 如情感分类, 命名实体识别, 语义关系抽取, 摘要生成, 机器翻译等等,

在这里插入图片描述

现在,让我们观察下图。编码器块有一层多头注意力(Multi-Head Attention),然后是另一层前馈神经网络( Feed Forward Neural Network)。另一方面,解码器有一个额外的掩模多头注意力(Masked Multi-Head Attention)。

1. positional encodingpositional encoding, 即位置嵌入(或位置编码)

由于transformer模型没有循环神经网络的迭代操作, 所以我们必须提供每个字的位置信息给transformer, 才能识别出语言中的顺序关系.
现在定义一个位置嵌入的概念, 也就是positional encoding, 位置嵌入的维度为[max sequence length, embedding dimension], 嵌入的维度同词向量的维度, max sequence length属于超参数, 指的是限定的最大单个句长.
注意, 我们一般以字为单位训练transformer模型, 也就是说我们不用分词了, 首先我们要初始化字向量为[vocab size, embedding dimension], vocab sizevocab size为总共的字库数量, embedding dimension为字向量的维度, 也是每个字的数学表达.
在这里论文中使用了sinesine和cosinecosine函数的线性变换来提供给模型位置信息:

PE(pos,2i)=sin(pos/100002i/dmodel) PE(pos,2i+1)=cos(pos/100002i/dmodel) (eq.1)

上式中pos指的是句中字的位置, 取值范围是[0, max sequence length)[0, max sequence length), ii指的是词向量的维度, 取值范围是[0, embedding dimension)[0, embedding dimension), 上面有sinsin和coscos一组公式, 也就是对应着embedding dimensionembedding dimension维度的一组奇数和偶数的序号的维度, 例如0,10,1一组, 2,32,3一组, 分别用上面的sinsin和coscos函数做处理, 从而产生不同的周期性变化, 而位置嵌入在embedding dimensionembedding dimension维度上随着维度序号增大, 周期变化会越来越慢, 而产生一种包含位置信息的纹理, 就像论文原文中第六页讲的, 位置嵌入函数的周期从2π2π到10000∗2π10000∗2π变化, 而每一个位置在embedding dimensionembedding dimension维度上都会得到不同周期的sinsin和coscos函数的取值组合, 从而产生独一的纹理位置信息, 模型从而学到位置之间的依赖关系和自然语言的时序特性

2. self attention mechanismself attention mechanism, 自注意力机制

Self-Attention是Transformer最核心的内容。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在 Transformer 的架构中,自注意力并不是计算一次,而是进行多次计算,并且是并行且独立进行的。因此,它被称为多头注意力
在这里插入图片描述

3. Layer NormalizationLayer Normalization和残差连接

在这里插入图片描述

4. transformer encodertransformer encoder整体结构

在这里插入图片描述

3 BERT,Google出品的NLP模型

BERT,是来自来自 Transformer 的双向编码器表示(Bidirectional Encoder Representations from Transformers)的缩写。BERT=基于Transformer 的双向编码器表征,顾名思义,BERT模型的根基就是Transformer,来源于attention is all you need。其中双向的意思表示它在处理一个词的时候,能考虑到该词前面和后面单词的信息,从而获取上下文的语义。

我们都知道迁移学习在计算机视觉领域的重要性有多高。例如,深度学习预训练模型可以针对 ImageNet 数据集上的新任务进行微调,并且在相对较小的标记数据集上提供不错的结果。
类似地,预训练语言模型对于改进许多自然语言处理任务非常有效;

BERT 框架是 Google AI 的一个新的语言表示模型,它使用预训练和微调来为各种任务创建最先进的模型。这些任务包括问答系统、情感分析和语言推理等。

img

BERT 的模型架构

BERT 使用多层双向 Transformer 编码器。它的自注意力层在两个方向上都执行自注意力。Google 发布了该模型的两种变体:

  1. BERT Base: Transformers 层数 = 12, 总参数 = 110M

  2. BERT Large: Transformers 层数 = 24, 总参数 = 340M

    img

BERT 使用双向性,通过对几个任务的预训练,掩码语言模型(Masked Language Model)和下一句的预测

下图表示了BERT的输入表征
在这里插入图片描述

下面的思维导图说明了各个部分的作用是什么:
在这里插入图片描述

BERT 预训练任务
BERT 使用以下两个无监督预测任务对 BERT 进行预训练。

  1. 掩码语言建模(Masked Language Modeling,MLM)
    根据这篇论文
    “掩码语言建模从输入中随机掩盖一些标记,其目标是仅基于上下文预测被掩盖的单词的原始词汇 id。与从左到右的语言模型预训练不同,MLM 目标允许表示融合左和右上下文,这允许我们预训练深度双向 Transformer。”
    Google AI 研究人员随机掩盖了每个序列中 15% 的单词。这个任务是什么?就是预测那些被掩盖的单词。此处需要注意的是,掩码单词并不总是被掩盖的标记 [MASK] [MASK] 标记在微调过程中永远不会出现。
    因此,研究人员使用了以下技术:
    有 80% 的单词被掩码标记 [MASK] 替换。
    有 10% 的单词被随机单词替换。
    有 10% 的单词保持不变。
  2. 下一句的预测
    一般来说,语言模型并不能捕捉连续句子之间的关系。BERT 也接受过这项任务的预训练。
    对于语言模型的预训练,BERT 使用成对的句子作为训练数据。每对句子的选择非常有趣。让我们试着通过一个例子来理解它。
    假设我们有一个包含 100000 条句子的文本数据集,我们想使用这个数据集来预训练 BERT 语言模型。因此,将有 50000 个训练样本或句子对作为训练数据。
    对于 50% 的句子对来说,第二条句子实际上是第一条句子的下一条句子。
    对于其余 50% 的句子对,第二条句子将是语料库中的一条随机句子。
    对于第一种情况,标签是“IsNext”,第二种情况标签是“NotNext”。
    像 BERT 这样的架构表明了,无监督学习(预训练和微调)将成为许多语言理解系统中的关键元素。资源较少的任务尤其可以从这些深度双向架构中获得巨大的好处。

小结:

语言模型的每一次进步都推动着NLP的发展,从Word2vec到ELMo,从OpenAI GPT到BERT。通过这些发展我们也可以洞悉到,未来表征学习(Deep learning is representation learning)将会越来越多的应用到NLP相关任务中,它们可以充分的利用目前海量的数据,然后结合各种任务场景,去训练出更为先进的模型,从而促进AI项目的落地。

参考资料

1,https://github.com/aespresso/a_journey_into_math_of_ml

2,一文理解 Transformer 的工作原理

3,https://www.bilibili.com/video/BV1P4411F77q?spm_id_from=333.788.b_636f6d6d656e74.9

4,简书

5, BERT模型学习与分析

6,https://github.com/datawhalechina/team-learning-data-mining

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值