NLP(2)--Transformer

这篇具有很好参考价值的文章主要介绍了NLP(2)--Transformer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Transformer概述

二、输入和输出

三、Encoder

四、Decoder

五、正则化处理

六、对于结构的改进?

七、AT vs NAT

八、Cross-attention


一、Transformer概述

        Transformer模型发表于2017年Google团队的Attention is All you need这篇论文,完全基于自注意力机制模型和前馈神经网络绘制输入和输出之间的全局依赖关系,摆脱CNN和RNN的模型束缚,具有并行计算能力,能够捕捉长期依赖关系进行建模,处理长序列时效果更好,并对全局的信息获取更为完善。

        当下,Transformer作为一个新兴主流模型在多个领域的发展上都有了显著的成功,如机器翻译,大语言模型,文本分类,问答系统,随着计算资源的增加,算力的不断提升,Transformer也逐步推向大模型,多模态的领域。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

        Transformer模型从整体上看仍然是Encoder-Decoder结构,论文中给定的Encoder和Decoder数目都是六个,如下图所示。

        注意:在Transformer结构中左右两侧的N×就是Encoder和Decoder的个数,另外最后一个Encoder将输出两个值(输出序列和注意力机制的权重)到每一个Decoder模块结合,后面会说这个过程。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

二、输入和输出

        假设当前利用Transformer模型做语音识别任务。

        Transformer的Encoder输入是一个序列数据,可能是不同的词向量形式如Word2Vec或One-hot, 这里为真实的录音。

        Transformer的Decoder输入也是一个序列数据,数据为应识别出来的汉字(labels),类似于让Decoder提前知道了真实的数据,但在实际的语音识别中可以在Decoder的输入中添加一些噪音,提高训练的泛化能力和鲁棒性,避免过度依赖训练中的某些特征,出现过拟合。

        Transformer的自注意力机制也添加了Position Encoding的环节,在输入的一开始加入了词在序列中的位置偏移量进入Encoder。论文中使用正弦和余弦两种方式进行编码(最后好像采用了正弦),公式中pos是位置量,i是位置编码向量中的维度,也可以看做是正弦和余弦的编号或波长 。       

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

        另外在Transformer中还要设计Begin和End两个起始符,在Decoder的输入中设定Begin符,用来开始训练生成出第一个字,最后一个字输入Decoder后可以输出End符切断输出,避免无限输出。

        最后一个Decoder的输出连接了Linear线性器和Softmax用于归一化输出。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

三、Encoder

        Encoder中由两个部分构成,多头自注意力机制模块和前馈神经网络,这两个模块都进行Residual+Layer norm(残差+层标准化)的处理。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

        首先介绍多头自注意力机制(Multi-Head Attention),在论文中head的个数设置为8,也就是说在自注意力机制的Q,K,V各有8个,自注意力机制请参考NLP基础和自注意力机制 。

        前馈神经网络(Feed Forward Network)是一个完全连接的前馈神经网络,由两个线性变换,中间一个ReLU激活构成。线性变换在不同的位置上需要不同的参数,另一种的解释是使用了两个卷积层作为前馈神经网络,输入输出为512维数,中间层为2048维。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

        在Transformer中使用了LayerNorm作为归一化处理,而没有使用BatchNorm?

        由于Layer Normalization是对每一个层进行归一化,不仅仅考虑了每一个Batch的统计信息,也考虑了每个样本在每个特征维度上的特征信息,由于NLP领域输入的序列长度可能有很大差异,而使用LN不会受到batchsize的影响,另外LN也有一定的正则化效果,防止模型过拟合。

        相比之下Batch Normalization对每一个Batch输入进行归一化来减少神经网络中的内部协变量偏移,在NLP领域下不同长度的序列可能由于强制归一化而产生的信息损失,归一化不准确的效果。

        BN和LN的公式都是下面这个,但是数据的选择有所不同。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

        另外,使用残差结构(Residual),可以提高特征的融合效果,增强非线性网络的表达能力,提高泛化能力。

四、Decoder

        ​​​​​​​Decoder由三部分构成,掩膜多头注意力机制模块,多头自注意力机制,前馈神经网络。其中,多头自注意力机制需要接收Encoder输出的输出序列、注意力权重和Decoder模块中掩膜多头自注意力机制模块的输出。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

         掩膜多头注意力机制(Masked Multi-Head Attention)是自注意力机制的一个变体,序列中每一个词只关注前面的词不在关注后面的词(自注意力机制要考虑每个词与前后的词的相关性)。

        其中Mask存在两种,一种是Sequence Mask也就是不能看到未来的信息,即只关注前面的词,另一种是Padding Mask,由于不同的batch可能序列长度不同,将输入的序列进行对齐,并对短序列填0处理,过长序列截断处理。在论文中提到,使用添加负无穷,在Softmax过滤后,他们的概率为0,从而保证自回归特性。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

        另外在论文中提到一种Scale Dot-Product Attention,就是对自注意力机制做的矩阵合并运算。

        

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

五、正则化处理

        在论文中提到正则化处理,使用残差dropout和标签平滑处理。

        残差dropout用于每个子层的输出之中,在残差结构和LayerNorm环节之前进行,dropout=0.1。

        标签平滑处理设定,让模型更加不确定性,但提高了准确性和BLEU分数。

六、对于结构的改进?

        在https://arxiv.org/pdf/2002.04745.pdf这篇论文中提到一种Pre-LN Transformer结构,如下图(图a为原Tranformer,图b为新模型),将LayerNorm提前到Encoder的多头自注意力机制模块和前馈神经网络以前进行。

        论文中提到可以更好的进行训练,减少学习率的预热环节和超参数的调整环节,特别是在大规模数据集的训练可以有显著的速度提升。但随之而来的缺点就是,不易收敛,对模型的表示能力可能有一定的改变。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

七、AT vs NAT

        自回归解码器(AT Decoder):每次输入一个词,生成一个词,因此生成速度较慢,无法并行生成输出序列,训练推断的效率较低,但可以生成高质量输出序列,适用于机器翻译这一类高度依赖前面生成词的问题。

        非自回归解码器(NAT Decoder):可以同时输入多个词,一次前向传播生成一串词,提高了训练和推断的效率,但可能造成生成的输出出现错误,而来不及处理,造成一系列错误,对于长期依赖关系的任务会受到限制。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

八、Cross-attention

        在https://arxiv.org/pdf/2005.08081.pdf文章中提到了一个Layer-Wise Multi-View Decoding的结构,通过引入交叉注意力机制改进传统的自注意力机制结构,尝试去在多层Encoder和Decoder中寻找更好的融合方式,可以更好的捕捉全局上下文信息,具体的应用在扩散模型中有一定体现。

NLP(2)--Transformer,自然语言处理,自然语言处理,transformer,人工智能,自注意力机制,深度学习

 参考视频:2021 - Transformer (下)_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-702814.html

到了这里,关于NLP(2)--Transformer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理2-NLP

    目录 自然语言处理2-NLP 如何把词转换为向量 如何让向量具有语义信息 在CBOW中 在Skip-gram中 skip-gram比CBOW效果更好 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 在自然语言处理任务中, 词向量(Word Embedding)是表示自然语言里单词的一种方法 ,即把每个词都表

    2024年02月11日
    浏览(56)
  • 聊聊自然语言处理NLP

    自然语言处理(NLP)的正式定义:是一个使用计算机科学、人工智能(AI)和形式语言学概念来分析自然语言的研究领域。不太正式的定义表明:它是一组工具,用于从自然语言源(如web页面和文本文档)获取有意义和有用的信息。 NLP工具的实现一般是基于机器学习与深度学习、其它

    2024年02月14日
    浏览(53)
  • 自然语言处理(NLP)技术

            自然语言处理技术是一种人工智能技术,它的目标是使计算机能够理解、分析、处理和生成自然语言(人类使用的语言)。NLP技术包括文本分类、情感分析、机器翻译、语音识别、语音合成、信息检索、信息抽取、问答系统等。NLP技术的应用非常广泛,例如智能客

    2024年02月14日
    浏览(46)
  • NLP自然语言处理介绍

    自然语言处理(NLP,Natural Language Processing)是一门涉及计算机与人类语言之间交互的学科。它的目标是使计算机能够理解和生成人类语言,从而更好地处理和解析大量的文本数据。NLP不仅是人工智能领域中一个重要的分支,也是当今社会应用广泛的领域之一。 在NLP中,一个基

    2024年01月21日
    浏览(46)
  • 自然语言处理NLP:一文了解NLP自然语言处理技术,NLP在生活中的应用,图导加深了解,NLP语料库,NLP开源工具

    目录 1.自然语言处理NLP 1.1 NLP中英对照(双份) 1.2 相关文章  2.NLP语料库

    2024年02月09日
    浏览(48)
  • 自然语言处理(NLP) —— 心理语言学

            认知科学和心理语言学是两个密切相关的领域,它们研究 认知过程和语言使用是如何相互作用的。         在历史上,这两个领域的发展经历了几个重要的阶段: 1.1.1 19世纪晚期(内省法)         Wundt 和其他德国心理学家使用一种叫做 内省法 的研究方

    2024年02月21日
    浏览(45)
  • NLP(自然语言处理)是什么?

    NLP基本概念: 自然语言处理( Natural Language Processing, NLP)是以语言为对象,利用计算机技术来分析、理解和处理自然语言的一门学科,即把计算机作为语言研究的强大工具,在计算机的支持下对语言信息进行定量化的研究,并提供可供人与计算机之间能共同使用的语言描写。包括

    2024年02月12日
    浏览(34)
  • 自然语言处理(NLP)是什么?

    您有没有和聊天机器人互动过?或者您是否向虚拟助手,例如 Siri、Alexa 或您车上的车载娱乐系统发出过某些请求?您使用过在线翻译吗?我们大多数人都曾与这些人工智能 (AI) 互动过,我们也从未停止过思考如何便捷地表达我们的需求并获得适当的回应。如果我和Siri说:“

    2024年02月10日
    浏览(51)
  • NLP自然语言处理原理应用讲解

    自然语言处理(NLP)是人工智能领域中研究如何让计算机理解和处理人类自然语言的一门学科。它的应用广泛,例如在搜索引擎、聊天机器人、机器翻译等领域中都发挥了重要的作用。 NLP的基本原理是通过对大量的语料库进行训练,让计算机学习到语言的语法、语义、上下文

    2024年01月22日
    浏览(49)
  • 畅谈自然语言处理——初识NLP技术

    最近,一个名为ChatGPT的模型将计算机领域震撼,它以对话的方式进行交互,对话形式使 ChatGPT 能够回答后续问题、承认错误、挑战不正确的前提并拒绝不适当的请求。使人们感受到了人工智能越来越接近人类智能。 作为目前人工智能领域最前沿的研究成果之一, ChatGPT的实现

    2024年02月01日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包