fqlb

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

论文地址:https://arxiv.org/pdf/1706.03762

摘要

当时的序列转录模型主要依赖于复杂的循环或者卷积神经网络加encoder+decoder架构组成,而论文提出了一种简单的网络架构transformer,在原有的encoder+decoder基础上增加注意力机制,而不使用循环和卷积。

引言

在引言中提到RNN的缺点导致它不能很好地提高机器翻译准确度,主要有以下两点:

  1. 由于RNN的时序性,它很难并行,对于第t个单元的状态 ht ,由于 ht 是由当前的输入 xt 和当前的状态 ht-1 求得,故想得到 ht 的值我们需要求得前面的 ht-1 输出完成,使得模型无法并行运行,导致运算性能较差。
  2. 由于RNN的历史信息是一步步向后传递,当我们希望保留这些历史信息时,就需要使用较大的 ht, 这会导致我们的内存开销较大。

通过使用attention机制,我们可以较好地完成模型的并行,我们可以在更少的时间和空间开销之内,做到比之前更好的事情。

相关工作

  1. 使用CNN替换掉RNN来减少时序计算
  2. 卷积计算时每次只能看到局部像素,需要采用多层卷积操作才能将两个较远的像素联系起来,而使用transformer中的注意力机制可以一次看到所有的像素。
  3. 提出了多头注意力机制(Multi-Head Attention)用来模拟卷积神经网络多输出通道的效果。
  4. 提出transformer是第一个只依赖自注意力机制(Self-attention)来做encoder到decoder的架构的模型。

模型

transformer模型架构

  • encoder & decoder架构

    1. encoder接收一个带有特征值的输入序列 x(x1, ... , xn)并转换为对应的向量表示 z(z1, ... , zn)作为输出。

      • 作者选用了六个layer,即重复六个encoder结构,每个layer中包含两个sub-layers,第一个子层采用multi-head self-attention结构,第二个子层采用一个简单的 Feed-forward network,对于每个子层使用一个残差连接,然后加上 layer normalization,即LayerNorm(x + SubLayer(x)),同时作者规定输出维度dmodel = 512。

      • LayerNorm 与 BatchNorm的区别:
        BatchNorm是对每个batch的每个特征做正则化处理,LayerNorm是对每个batch的每个样本做正则化处理,其中LayerNorm对于不同样本做不同区分,适用于 NLP 任务,而BatchNorm对于图像任务可以减少绝对差异,突出相对差异,加快训练速度,适用于 CV 任务。

    2. decoder拿到编码器的输出z,生成输出序列 y(y1, ... , yn),区别于编码器,解码器的输出 yt 是一个一个生成的,该过程称为自回归(auto-regressive)

      • 与ecoder类似,只是多了一个multi-head attention。
  • Attention

    1. Scaled Dot-Product Attention:

      • 输入包括维度为dk的queries和keys,以及维度为dv的values。我们首先计算quary和key的内积作为向量的相似度,然后再除以 dk,最后使用Sorfmax函数获得key的权重(非负且总和为1)将这些权重作用在value上即可得到输出。
      • 在实际中使用矩阵进行计算:
      • 常用的attention机制有两种,additive(加和)attention 和 dot-product(点积)attention,在dk较小时, 两种机制相差不大,但当不缩放较大的dk时,加和attention有着较优的效果,作者猜测是由于较大的dk,点积大幅增加,将softmax推向趋于零的程度,为了抵消这种影响使用除以 dk 的方式。
    2. Multi-head attention

      • 先将quary,key,value投影到低维,去做Scaled Dot-Product Attention,这个过程重复h次,然后进行连接,再投影到高维进行输出。作者使用h=8,进行计算,故对于每一个head有hk = hv = hmodel/h = 64。
  • self-attention
    每个输入的quary,key,value是由输入x作三次线性变换得到。

  • Position-wise Feed-forward network

    • 在encoder和decoder中的每个层都包括前馈网络,分别作用与每个词,其中包括两个线性变换和一个Relu激活函数

      FFN(x) = max(0, xW1 + b1)W2 + b2

    • 作者给出hff = 2048,即W1将x投影成2048维的向量,然后W2再将x投影回512维。

  • Embedding 和 Softmax

    Embedding用于将输入和输出token转换为hmodel维向量。另外将权重乘以dmodel,因为学习Embedding时会把每一个向量的 L2-norm 学得相对较小,如果维度较大,学到权重的值就会变小,乘以dmodel放大,再与PE相加使得两者在scale上差不多

  • Position Embedding

    与计算机位置编码类似,使用一个长为dmodel维度的向量来表示输入token序列中每个词的时序信息(通过周期不同的sin和cos函数计算得到),再将时序信息与嵌入层相加即可完成将时序信息加入输入数据。

免责声明:本人深度学习小白一枚,有任何错误欢迎指出。

posted on   一笑wn  阅读(254)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
 
点击右上角即可分享
微信分享提示