NLP之Transformer介绍

举报
AI Medicine 发表于 2022/03/01 16:30:47 2022/03/01
【摘要】 Transformer介绍 摘要 原因 方法 结果验证几个翻译任务上,翻译效果很好8个GPU训练了3.5天总结 结论 介绍了Transformer第一个只使用注意力在encoder-decoder架构中,使用multi-head取代了recurrent layers 效果翻译任务上,训练的很好,而且快很多在WMT 2014 英德,WMT2014英法效果很好 展望可以用到更多数据上图片vid...

Transformer介绍

Transformer XMind

摘要

原因

方法

结果验证

  • 几个翻译任务上,翻译效果很好
  • 8个GPU训练了3.5天
  • 总结

结论

介绍了Transformer

  • 第一个

  • 只使用注意力

    • 在encoder-decoder架构中,使用multi-head取代了recurrent layers

效果

  • 翻译任务上,训练的很好,而且快很多

  • 在WMT 2014 英德,WMT2014英法

    • 效果很好

展望

  • 可以用到更多数据上

    • 图片

      • video等
    • 生成

  • 代码一般在摘要的最后一句话

把自注意力和point-wise的fully connected layer堆在一起的

Introduction

第一段

  • LSTM
  • GRU
  • 语言模型
  • 编码器-解码器

第二段

  • RNN

    • 特点

      • 从左往右一个一个词看
    • 问题

      • 一个一个算,难以并行

        • 计算性能比较差
      • 如果序列比较长

        • 后面的信息会丢失

第三段

  • Attention在RNN上的应用

    • 如何把编码器的东西传给解码器

第四段

  • 提出Transformer

    • 提出了一个新的方法

    • attention,可以纯做并行

      • 解决了RNN的一些问题

Background

多头注意力机制

第一个只依赖自注意力机制做decoder和encoder的模型

CNN对比

  • 如何使用卷积网络替换时序神经网络

  • 卷积神经网络难以对长序列建模

    • 只通过一个小的卷积核,卷积信息
  • 优势

    • 可以做多个输出通过

      • transformer里,multi head

Model Architecture

编码器

  • 一系列的符号表示

    • 转为连续型的representation z
  • layer normalization

    • 针对不同长度,可以比较好的做normalization

    • 以前都是batch normalization,对feature做normalization,保证feature在类似的维度,可以比较

    • layer normalization是对样本做normalization(对行做,行是样本)

      • 避免样本的不同长度对结果造成的影像
  • 输入

    • 一个长为n序列,元素是单个的词等

      • x1, x2, …, xn
  • 输出

    • z, 每个z对应x,是其向量表示

      • z1, z2, …, zn

解码器

  • 过去时刻的输出也可以作为输入

  • 输入

  • 输出

    • 输出时候,需要一个一个生成

      • 生成一个长度为m的向量
    • 子主题 2

    • autoregressive

      • 过去时刻的输出作为该时刻的输入

网络结构

  • encoder

    • 每个块是一个layer

      • 第一个子层是

        • multi-head self attention
      • 第二个子层是

        • position wise fully connected feed-forward network
    • 每个子层用了残差全连接

      • 同时做了layer norm

        • layer norm,在样本维度做normalization

          • 因为不同样本长度不一样
          • 每个样本有自己的0,1
        • 对比

          • batch norm

            • 在一个batch里面,对feature做normalization(把batch的所有样本放在一起)

            • 目的:记录全局的均值和方法

            • 缺点

              • 小批量时候,变动比较大

              • 一个样本特别长时候(语言)

                • 可能识别有问题
        • 样本长度变化比较大时候,变化会比较大

          • 需要对样本做
    • dmodel = 512

    • 可调参数

      • 多少层 layer
      • 每个层,维度是多大
  • decoder

    • 多了一个masked multi-head attention

      • 使得t时间后的语句被masked

子层之注意力

  • attention解释

    • 将query和一些keys-vaules对,映射为输出,的函数

      • output是values的加权和,与values的维度一致

      • 对应values的权重 如何来?

        • values对应的keys和query的相似性,计算而来
    • 直白点

      • 对你的输入做一些加权和
  • 常见的注意力机制

    • 加型的注意力机制

    • 点积的注意力机制

      • 目前选用的点乘,再除以DK
      • 因为当Dk的的时候,值变大,再经过soft max, 值会变的极端,梯度会变得小,跑不动
      • 余弦相似度,内积越大,相似性越高;
        为0时候,已经正交了。
    • 点积的特点

      • 简单,高效

      • 除以dk的原因

        • 不大的时候不影响

        • 大的时候

          • 如果两个向量比较长

            • 点积时候,值可能比较大,相对的差距会变大,经softmax会更加偏向1或者0,导致梯度比较小,可能跑不动
  • multi head attention

    • 把原始的value key query投影到不同的平面,

    • 匹配到不同模式需要的相似函数,类似多个输出通道

    • 不同的w出来的attention值,concat起来

      • 用了8个注意力头
  • position-wise feed-forward networks

    • 作用在position wise的全连接层

      • 先从512-2048,再到512

        • 两个线性连接层
    • 和RNN的区别?

      • RNN是吧上一时刻的输入作为输入,传入下一时刻,通过MLP等
  • embedding and softmax

  • positional encoding

    • attention不会有时序信息

    • 通过一个512的向量表示,然后和input embedding相加

    • 通过sin和cos函数表示

      • 在-1和1之间

        • input 的embedding也是通过类似的
  • 34分钟

Training

  • Training

    • BPE

      • byte-paire encoding
      • 根据词根来,把词根提取出来
  • 硬件

    • 8 NVIDIA P100 GPUs

      • 后来开始使用TPU

        • 适合大的矩阵乘法
      • 训练了10w step

        • 12小时
  • 超参有哪些

    • N

      • 要堆多少层
    • d model

      • 模型的宽度,token后的向量宽度
    • d ff

      • MLP中间隐藏层的大小
    • h

      • 头的个数
    • d k

      • attention中k的维度
    • d v

      • attention中v的维度
    • P drop

    • train steps

总结

  • attention的作用

    • 是把总体的信息汇聚起来

      • 需要结合ResNet/MLP等
    • 做了偏纳归置

    • 假设更加一般

      • 对数据抓取信息的能力更差

        • 需要更大的数据和模型
  • 优点

    • 首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;
    • 其次它不是类似RNN的顺序结构,因此具有更好的并行性
  • transformer是一个基础的框架

    • 对于NLP相关的任务

      • 可以用相应的架构

与其他模型对比

  • RNN对比

    • RNN的缺点

      • 时间片t时刻的计算依赖t-1时刻的计算结果,这样限制了模型的并行能力;

        • 无法并行
      • 顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。

      • RNN序列形计算

        • 当前t状态,来自于前面的h(t-1)的输入
        • 时序神经网络
      • 也是用线性层做语义空间的转换和传递

  • LSTM对比

  • CNN对比

    • 如何使用卷积网络替换时序神经网络

    • 优势

      • 可以做多个输出通过

        • transformer里,multi head
      • 可以并行计算

        • 所以速度快
    • 缺点

      • 卷积神经网络难以对长序列建模

        • 只通过一个小的卷积核,卷积信息
        • 难以捕捉远距离特征
    • 卷积如何操作序列

      • 可以设置kernel为1
  • attention对模型的做的假设更好,对数据的了解更少

    • 所以需要更多的数据和更大的模型

每个z对应x,是其向量表示

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。