首页 > 其他分享 >Transformer —— 李沐老师论文跟读

Transformer —— 李沐老师论文跟读

时间:2024-07-25 19:06:45浏览次数:11  
标签:输出 Transformer 跟读 卷积 attention ht encoder decoder 李沐

论文地址: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的内积作为向量的相似度,然后再除以 \(\sqrt{d_k}\),最后使用Sorfmax函数获得key的权重(非负且总和为1)将这些权重作用在value上即可得到输出。
      • 在实际中使用矩阵进行计算:
      • 常用的attention机制有两种,additive(加和)attention 和 dot-product(点积)attention,在dk较小时, 两种机制相差不大,但当不缩放较大的dk时,加和attention有着较优的效果,作者猜测是由于较大的dk,点积大幅增加,将softmax推向趋于零的程度,为了抵消这种影响使用除以 \(\sqrt{d_k}\) 的方式。
    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维向量。另外将权重乘以\(\sqrt{d_model}\),因为学习Embedding时会把每一个向量的 L2-norm 学得相对较小,如果维度较大,学到权重的值就会变小,乘以\(\sqrt{d_model}\)放大,再与PE相加使得两者在scale上差不多

  • Position Embedding

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

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

标签:输出,Transformer,跟读,卷积,attention,ht,encoder,decoder,李沐
From: https://www.cnblogs.com/fqlb/p/18305322

相关文章

  • AI大模型原理(通俗易懂版)——Transformer
    传送门:AI大模型原理(通俗易懂版)-CSDN博客关于GPT的生成等大语言模型背后的技术原理,一个很常见的说法是,它们是通过预测出现概率最高的下一个词来实现文本生成的,这种效果有点像搜索引擎的自动补全。每当我们输入一个新的字或词,输入框就开始预测后面的文本,概率越高的,排在越上面。......
  • Transformer详解总结
    Transformer是一种由Vaswani等人于2017年提出的神经网络架构,专门用于处理序列数据,尤其在自然语言处理(NLP)任务中表现出色。Transformer与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)不同,完全基于注意力机制,避免了序列处理中的长距离依赖问题。Transformer的原理Transformer架......
  • JCR一区级 | Matlab实现GJO-Transformer-LSTM多变量回归预测
    JCR一区级|Matlab实现GJO-Transformer-LSTM多变量回归预测目录JCR一区级|Matlab实现GJO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.【JCR一区级】Matlab实现GJO-Transformer-LSTM多变量回归预测,金豹算法(GJO)优......
  • JCR一区级 | Matlab实现GA-Transformer-LSTM多变量回归预测
    JCR一区级|Matlab实现GA-Transformer-LSTM多变量回归预测目录JCR一区级|Matlab实现GA-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.【JCR一区级】Matlab实现GA-Transformer-LSTM多变量回归预测,遗传优化算法(GA)优......
  • 利用Swin-Unet(Swin Transformer Unet)实现对文档图片里表格结构的识别
    项目:https://github.com/jiangnanboy/table_structure_recognition#利用Swin-Unet(SwinTransformerUnet)实现对文档图片里表格结构的识别##实现功能-[x]识别表格中的线条-[]结果转为excel##下载weights模型文件见github将模型文件放到model目录下##训练(te......
  • Python贝叶斯、transformer自注意力机制self-attention个性化推荐模型预测课程平台学
    全文链接:https://tecdat.cn/?p=37090原文出处:拓端数据部落公众号 分析师:KungFu近年来,在线课程凭借便捷的网络变得越来越流行。为了有更好的用户体验,在线课程平台想要给用户推荐他们所感兴趣的课程,以便增大点击率和用户黏性。解决方案任务/目标根据学生所选的历史课程,预测出......
  • Transformer-Embedding
    导包#导入包importtorchfromtorchimportnnimporttorch.nn.functionalasfimportmathTokenEmbedding#首先定义tokenembaddingfromtorchimportTensor"""将输入词汇表的索引转换成指定维度的Embedding"""classTokenEmbedding(nn.Embedding......
  • 魔改Transformer!9种提速又提效的模型优化方案
    Transformer目前已经成为人工智能领域的主流模型,应用非常广泛。然而Transformer中注意力机制计算代价较高,随着序列长度的增加,这个计算量还会持续上升。为了解决这个问题,业内出现了许多Transformer的魔改工作,以优化Transformer的运行效率。我这次就给大家分享9篇对Transform......
  • 一文看懂AI的 Transformer 架构!
    1AI的转换器是啥?转换器,一种将输入序列转换或更改为输出序列的神经网络架构。它们通过学习上下文和跟踪序列组件之间的关系来做到这一点。例如,请考虑以下输入序列:“天空是什么颜色的?”转换器模型会使用内部数学表示法来识别颜色、天空和蓝色这三个词之间的相关性和关系。......
  • 快速学习一个算法,Transformer
    今天给大家介绍一个强大的算法模型,TransformerTransformer模型是由Vaswani等人在2017年提出的一种用于自然语言处理的深度学习模型,特别擅长于处理序列到序列的任务,如机器翻译、文本生成等。今天,我们主要从编码的角度来进行说明。Transformer模型架构Transformer......