Loading [MathJax]/jax/output/CommonHTML/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Pre-Training】关于 Transformer 那些的你不知道的事

【Pre-Training】关于 Transformer 那些的你不知道的事

作者头像
阿泽 Crz
发布于 2020-07-29 06:36:40
发布于 2020-07-29 06:36:40
9420
举报

❝作者:小莫❞

1.引言

本博客 主要 是本人在学习 Transformer 时的「所遇、所思、所解」,通过以 「十六连弹」 的方式帮助大家更好的理解 该问题。

2.十六连弹

  1. 为什么要有 Transformer?
  2. Transformer 作用是什么?
  3. Transformer 整体结构怎么样?
  4. Transformer-encoder 结构怎么样?
  5. Transformer-decoder 结构怎么样?
  6. 传统 attention 是什么?
  7. self-attention 长怎么样?
  8. self-attention 如何解决长距离依赖问题?
  9. self-attention 如何并行化?
  10. multi-head attention 怎么解?
  11. 为什么要 加入 position embedding ?
  12. 为什么要 加入 残差模块?
  13. Layer normalization。Normalization 是什么?
  14. 什么是 Mask?
  15. Transformer 存在问题?
  16. Transformer 怎么 Coding?

3.问题解答

3.1 为什么要有 Transformer?

为什么要有 Transformer? 首先需要知道在 Transformer 之前都有哪些技术,这些技术所存在的问题:

  • RNN:能够捕获长距离依赖信息,但是无法并行;
  • CNN: 能够并行,无法捕获长距离依赖信息(需要通过层叠 or 扩张卷积核 来 增大感受野);
  • 传统 Attention
    • 方法:基于源端和目标端的隐向量计算Attention,
    • 结果:源端每个词与目标端每个词间的依赖关系 【源端->目标端】
    • 问题:忽略了 远端或目标端 词与词间 的依赖关系

3.2 Transformer 作用是什么?

基于Transformer的架构主要用于建模语言理解任务,它避免了在神经网络中使用递归,而是完全依赖于self-attention机制来绘制输入和输出之间的全局依赖关系。

3.3 Transformer 整体结构怎么样?

  1. 整体结构
  • Transformer 整体结构:
    • encoder-decoder 结构
  • 具体介绍:
    • 左边是一个 Encoder;
    • 右边是一个 Decoder;
  1. 整体结构放大一点

从上一张 Transformer 结构图,可以知道 Transformer 是一个 encoder-decoder 结构,但是 encoder 和 decoder 又包含什么内容呢?

  • Encoder 结构:内部包含6层小encoder 每一层里面有2个子层;
  • Decoder 结构:内部也是包含6层小decoder ,每一层里面有3个子层
  1. 整体结构再放大一点

其中上图中每一层的内部结构如下图所求。

  • 上图左边的每一层encoder都是下图左边的结构;
  • 上图右边的每一层的decoder都是下图右边的结构;

具体内容,后面会逐一介绍。

3.4 Transformer-encoder 结构怎么样?

  • 特点:
    • 与 RNN,CNN 类似,可以当成一个特征提取器;
  • 组成结构介绍
    • embedding 层:将 input 转化为 embedding 向量

    • Position encodding: input的位置与 input 的 embedding

    相加 得到 向量

    • self-attention : 将融合input的位置信息 与 input 的 embedding 信息的

    输入 Self-Attention 层得到

    ;

    • 残差网络:

    相加后经过 layernorm 层;

    • 前馈网络:经过一层前馈网络以及 Add&Normalize,(线性转换+relu+线性转换 如下式)
  • 举例说明(假设序列长度固定,如100,如输入的序列是“我爱中国”):
    • 首先需要 「encoding」:将词映射成一个数字,encoding 后,由于序列不足固定长度,因此需要padding。然后输入 embedding 层,假设 embedding 的维度是128,则输入的序列维度就是100*128;
    • 接着是 「Position encodding」,论文中是直接将每个位置通过cos-sin函数进行映射。这部分不需要在网络中进行训练,因为它是固定。但现在很多论文是将这块也embedding,如bert的模型,至于是encoding还是embedding可取决于语料的大小,语料足够大就用embedding。将位置信息也映射到128维与上一步的embedding相加,输出100*128
    • 经过「self-attention层」:假设v的向量最后一维是64维(假设没有多头),该部分输出100*64;
    • 经过残差网络:即序列的embedding向量与上一步self-attention的向量加总;
    • 经过 「layer-norm」:原因有两点:首先由于在self-attention里面更好操作而已;其次真实序列的长度一直在变化;
    • 经过 「前馈网络」:其目的是增加非线性的表达能力,毕竟之前的结构基本都是简单的矩阵乘法。若前馈网络的隐向量是512维,则结构最后输出100*512;

3.5 Transformer-decoder 结构怎么样?

  • 特点:与 encoder 类似
  • 组成结构介绍
    • masked 层:其目的确保了位置 i 的预测仅依赖于小于 i 的位置处的已知输出;
    • Linear layer:其目的是将由解码器堆栈产生的向量投影到一个更大的向量中,称为对数向量。这个向量对应着模型的输出词汇表;向量中的每个值,对应着词汇表中每个单词的得分;
    • softmax层:这些分数转换为概率(所有正数,都加起来为1.0)。选择具有最高概率的单元,并且将与其相关联的单词作为该时间步的输出

3.6 传统 attention 是什么?

  • 注意力机制是什么呢?
    • 就是将精力集中于某一个点上
    • 举个例子:你在超市买东西,突然一个美女从你身边走过,这个时候你会做什么呢?没错,就是将视线【也就是注意力】集中于这个美女身上,而周围环境怎么样,你都不关注。
  • 思路
    • 输入 给定 Target 中某个 query;
    • 计算权值 Score:计算 query 和 各个 Key 的相似度或相关性,得到每个 Key 对应 value 的权值系数;
    • 对权值 Score 和 value 进行加权求和
  • 核心:
    • Attention 机制 是对 source 中各个元素 的 value 进行加权求和,而 query 和 key 用于计算 对应 value 的权值系数

其中

代表 Source 的长度

  • 概念:
    • attention 的核心 就是从 大量信息中 筛选出少量的 重要信息;
    • 具体操作:每个 value 的 权值系数,代表 其 重要度;
  • 具体流程介绍
  • 存在问题
    • 忽略了源端或目标端词与词间的依赖关系【以上面栗子为例,就是把注意力集中于美女身上,而没看自己周围环境,结果可能就扑街了!】

3.7 self-attention 长怎么样?

  • 动机
    • CNN 所存在的长距离依赖问题;
    • RNN 所存在的无法并行化问题【虽然能够在一定长度上缓解 长距离依赖问题】;
  • 传统 Attention
    • 方法:基于源端和目标端的隐向量计算Attention,
    • 结果:源端每个词与目标端每个词间的依赖关系 【源端->目标端】
    • 问题:忽略了 远端或目标端 词与词间 的依赖关系
  • 核心思想:self-attention的结构在计算每个token时,总是会考虑整个序列其他token的表达;
    • 举例:“我爱中国”这个序列,在计算"我"这个词的时候,不但会考虑词本身的embedding,也同时会考虑其他词对这个词的影响
  • 目的:学习句子内部的词依赖关系,捕获句子的内部结构。
  • 步骤
    • 权值 score 和各个上下文字的 V 向量 的加权求和
    • 目的:把上下文各个字的 V 融入目标字的原始 V 中
    • 经过 Softmax 归一化;
    • 乘以

    • 目的:起到调节作用,使得内积不至于太大。实际上是Q,K,V的最后一个维度,当

    越大,

    就越大,可能会将 Softmax 函数推入梯度极小的区域;

    • 查询向量 query 点乘 key;
    • 目的:计算其他词对这个词的重要性,也就是权值;
    • Q:查询向量,目标字作为 Query;
    • K:键向量,其上下文的各个字作为 Key;
    • V:值向量,上下文各个字的 Value;
    • embedding层:其目的是将词转化成embedding向量;
    • Q,K,V 向量计算:根据 embedding 和权重矩阵,得到Q,K,V;
    • 权重 score 计算:
    • scale 操作:
    • Softmax 归一化:
    • Attention 的输出计算:
  • 举例
    • 答案就是文章中的Q,K,V,这三个向量都可以表示"我"这个词,但每个向量的作用并不一样,Q 代表 query,当计算"我"这个词时,它就能代表"我"去和其他词的 K 进行点乘计算其他词对这个词的重要性,所以此时其他词(包括自己)使用 K 也就是 key 代表自己,当计算完点乘后,我们只是得到了每个词对“我”这个词的权重,需要再乘以一个其他词(包括自己)的向量,也就是V(value),才完成"我"这个词的计算,同时也是完成了用其他词来表征"我"的一个过程
  • 优点
    • 捕获源端和目标端词与词间的依赖关系
    • 捕获源端或目标端自身词与词间的依赖关系

3.8 self-attention 如何解决长距离依赖问题?

  • 引言:
    • 长距离依赖问题 是什么呢?
    • 为什么 CNN 和 RNN 无法解决长距离依赖问题?
    • 之前提出过哪些解决方法?
    • self-attention 是如何 解决 长距离依赖问题的呢?
    • 在上一个问题中,我们提到 CNN 和 RNN 在处理长序列时,都存在 长距离依赖问题,那么你是否会有这样 几个问题:

下面,我们将会围绕着几个问题,进行一一解答。

  • 长距离依赖问题 是什么呢?
    • 介绍:对于序列问题,第

    时刻 的 输出

    依赖于

    之前的输入,也就是 说 依赖于

    ,当间隔

    逐渐增大时,

    的信息将难以被

    所学习到,也就是说,很难建立 这种 长距离依赖关系,这个也就是 长距离依赖问题(Long-Term Dependencies Problem)。

  • 为什么 CNN 和 RNN 无法解决长距离依赖问题?
    • RNN 主要 通过 循环 的方式学习(记忆) 之前的信息

    • 问题:但是随着时间

    的推移,你会出现「梯度消失或梯度爆炸」问题,这种问题使你只能建立短距离依赖信息。

    • 举例:RNN 的学习模式好比于 人类 的记忆力,人类可能会对 短距离内发生的 事情特别清楚,但是随着时间的推移,人类开始 会对 好久之前所发生的事情变得印象模糊,比如,你对小时候发生的事情,印象模糊一样。
    • 解决方法:针对该问题,后期也提出了很多 RNN 变体,比如 LSTM、 GRU,这些变体 通过引入 门控的机制 来 有选择性 的记忆 一些 重要的信息,但是这种方法 也只能在 一定程度上缓解 长距离依赖问题,但是并不能 从根本上解决问题。
    • CNN 主要采用 卷积核 的 方式捕获 句子内的局部信息,你可以把他理解为 「基于 n-gram 的局部编码方式」捕获局部信息
    • 问题:因为是 n-gram 的局部编码方式,那么当

    距离 大于

    时,那么

    将难以学习

    信息;

    • 举例:其实 n-gram 类似于 人的 视觉范围,人的视觉范围 在每一时刻 只能 捕获 一定 范围内 的信息,比如,你在看前面的时候,你是不可能注意到背后发生了什么,除非你转过身往后看。
    • CNN:捕获信息的方式:
    • RNN:捕获信息的方式:
  • 之前提出过哪些解决方法?
    • 增加网络的层数:通过一个深层网络来获取远距离的信息交互
    • 使用全连接网络:通过全连接的方法对长距离建模;但这样会产生两个问题:1.无法处理变长的输入序列;2.不同的输入长度,其连接权重的大小也是不同的;
    • 引言:那么之前主要采用什么方法解决问题呢?
    • 解决方法:
  • self-attention 是如何 解决 长距离依赖问题的呢?
    • 解决方式:利用注意力机制来“动态”地生成不同连接的权重,从而处理变长的信息序列
    • 具体介绍:对于 当前query,你需要 与 句子中 所有 key 进行点乘后再 Softmax ,以获得 句子中 所有 key 对于 当前query 的 score(可以理解为 贡献度),然后与 所有词 的 value 向量进行加权融合之后,就能使 当前

    学习到句子中 其他词

    的信息;

3.9 self-attention 如何并行化?

  • 引言:
    • 在上一个问题中,我们主要讨论了 CNN 和 RNN 在处理长序列时,都存在 长距离依赖问题,以及 Transformer 是 如何解决 长距离依赖问题,但是对于 RNN ,还存在另外一个问题:无法并行化问题
    • 那么,Transformer 是如何进行并行化的呢?
  • Transformer 如何进行并行化?
    • 核心:self-attention
    • 为什么 RNN 不能并行化:原因在于RNN 在 计算

    的时候,需要考虑到

    的 信息,使得 RNN 只能 从

    计算到

    ;

    • 思路:在 self-attention 能够 并行的 计算 句子中不同 的 query,因为每个 query 之间并不存在 先后依赖关系,也使得 transformer 能够并行化;

3.10 multi-head attention 怎么解?

  • 思路:
    • 相当于

    个 不同的 self-attention 的集成

    • 就是把self-attention做 n 次,取决于 head 的个数;论文里面是做了8次。
  • 步骤:
    • step 1 : 初始化 N 组

    矩阵(论文为 8组);

  • step 2 : 每组 分别 进行 self-attention;
  • step 3:
    • 每次self-attention都会得到一个 Z 矩阵,把每个 Z 矩阵拼接起来,
    • 再乘以一个Wo矩阵,
    • 得到一个最终的矩阵,即 multi-head Attention 的结果;
    • 问题:多个 self-attention 会得到 多个 矩阵,但是前馈神经网络没法输入8个矩阵;
    • 目标:把8个矩阵降为1个
    • 步骤:

最后,让我们来看一下完整的流程:

换一种表现方式:

3.11 为什么要 加入 position embedding?

  • 问题:
    • 介绍:缺乏 一种 表示 输入序列中 单词顺序 的方法
    • 说明:因为模型不包括Recurrence/Convolution,因此是无法捕捉到序列顺序信息的,例如将K、V按行进行打乱,那么Attention之后的结果是一样的。但是序列信息非常重要,代表着全局的结构,因此必须将序列的分词相对或者绝对position信息利用起来
  • 目的:加入词序信息,使 Attention 能够分辨出不同位置的词
  • 思路:
    • 在 encoder 层和 decoder 层的输入添加了一个额外的向量Positional Encoding,维度和embedding的维度一样,让模型学习到这个值
  • 位置向量的作用:
    • 决定当前词的位置;
    • 计算在一个句子中不同的词之间的距离
  • 步骤:
    • 将每个位置编号,
    • 然后每个编号对应一个向量,
    • 通过将位置向量和词向量相加,就给每个词都引入了一定的位置信息。
  • 论文的位置编码是使用三角函数去计算的。好处:
    • 值域只有[-1,1]
    • 容易计算相对位置。

注:

表示当前词在句子中的位置;

表示向量中每个值 的 index;在偶数位置:使用 正弦编码

;在奇数位置:使用 余弦编码

3.12 为什么要 加入 残差模块?

  • 动机:因为 transformer 堆叠了 很多层,容易 梯度消失或者梯度爆炸

3.13 Layer normalization。Normalization 是什么?

  • 动机:因为 transformer 堆叠了 很多层,容易 梯度消失或者梯度爆炸;
  • 原因:数据经过该网络层的作用后,不再是归一化,偏差会越来越大,所以需要将 数据 重新 做归一化处理;
  • 目的:在数据送入激活函数之前进行normalization(归一化)之前,需要将输入的信息利用 normalization 转化成均值为0方差为1的数据,避免因输入数据落在激活函数的饱和区而出现 梯度消失或者梯度爆炸 问题
  • 介绍:
    • 归一化的一种方式
    • 对每一个样本介绍均值和方差【这个与 BN 有所不同,因为他是在 批方向上 计算均值和方差】
  • 公式

3.14 什么是 Mask?

  • 介绍:掩盖某些值的信息,让模型信息不到该信息;
  • 类别:padding mask and sequence mask
    • 作用域:只作用于 decoder 的 self-attention 中
    • 动机:不可预测性;
    • 目标:sequence mask 是为了使得 decoder 不能看见未来的信息。也就是对于一个序列,在 time_step 为 t 的时刻,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出。因此我们需要想一个办法,把 t 之后的信息给隐藏起来。
    • 做法:产生一个上三角矩阵,上三角的值全为0。把这个矩阵作用在每一个序列上,就可以达到我们的目的
    • 作用域:每一个 scaled dot-product attention 中
    • 动机:输入句子的长度不一问题
    • 方法:短句子:后面 采用 0 填充;长句子:只截取 左边 部分内容,其他的丢弃
    • 原因:对于填充的位置,其所包含的信息量对于模型学习作用不大,所以 self-attention 应该 抛弃对这些位置 进行学习;
    • 做法:在这些位置上加上 一个 非常大 的负数(负无穷),使 该位置的值经过 Softmax 后,值近似 0,利用 padding mask 标记哪些值需要做处理;
    • padding mask
    • sequence mask

注:在 decoder 的 scaled dot-product attention 中,里面的 attn_mask = padding mask + sequence mask;在 encoder 的 scaled dot-product attention 中,里面的 attn_mask = padding mask。

3.15 Transformer 存在问题?

  • 引言
    • 居然 Transformer 怎么厉害,那么 是否也存在不足呢?
    • 答案: 有的
  • 问题一:不能很好的处理超长输入问题?
    • 处理方式一:截断句子方式(Transformer 处理方式);
    • 处理方式二:将句子划分为 多个 seg (Vanilla Transformer 处理方式); 思路:将文本划分为多个segments;练的时候,对每个segment单独处理; 问题:因为 segments 之间独立训练,所以不同的token之间,最长的依赖关系,就取决于segment的长度 (如图(a));出于效率的考虑,在划分segments的时候,不考虑句子的自然边界,而是根据固定的长度来划分序列,导致分割出来的segments在语义上是不完整的 (如图(a));在预测的时候,会对固定长度的 segment 做计算,一般取最后一个位置的隐向量作为输出。为了充分利用上下文关系,在每做完一次预测之后,就对整个序列向右移动一个位置,再做一次计算,这导致计算效率非常低 (如图(b));
    • 处理方式三:Segment-Level Recurrenc ( Transformer-XL 处理方式); 思路:在对当前segment进行处理的时候,「缓存」并利用上一个segment中所有layer的隐向量序列;上一个segment的所有隐向量序列只参与前向计算,不再进行反向传播;
    • 介绍:Transformer 固定了句子长度;
    • 举例:例如 在 Bert 里面,输入句子的默认长度 为 512;
    • 对于长度长短问题,做了以下处理:短于 512:填充句子方式;长于 512:
  • 问题二:方向信息以及相对位置 的 缺失 问题?
    • 举例:如下图,“Inc”单词之前的词很有可能就是机构组织(ORG),“in”单词之后的词,很有可能是时间地点(TIME);并且一个实体应该是连续的单词组成,标红的“Louis Vuitton”不会和标蓝的“Inc”组成一个实体。但是原始的Transformer无法捕获这些信息。
    • 动机:方向信息和位置信息的缺失,导致 Transformer 在 NLP 中表现性能较差,例如在 命名实体识别任务中;
  • 解决方法:可以查看 TENER: Adapting Transformer Encoder for Name Entity Recognition 【论文后期会做总结】
  • 问题三:缺少Recurrent Inductive Bias
    • 动机:学习算法中Inductive Bias可以用来预测从未遇到的输入的输出(参考[10])。对于很多序列建模任务(如需要对输入的层次结构进行建模时,或者在训练和推理期间输入长度的分布不同时),Recurrent Inductive Bias至关重要【可以看论文The Importance of Being Recurrent for Modeling Hierarchical Structure】
  • 问题四:Transformer是非图灵完备的:非图灵完备通俗的理解,就是无法解决所有的问题
    • 动机:在Transformer中,单层中sequential operation (context two symbols需要的操作数)是

    time,独立于输入序列的长度。那么总的sequenctial operation仅由层数

    决定。这意味着transformer不能在计算上通用,即无法处理某些输入。如:输入是一个需要「对每个输入元素进行顺序处理」的函数,在这种情况下,对于任意给定的深度

    的transformer,都可以构造一个长度为

    ;

  • 问题五:transformer缺少conditional computation
    • 动机:transformer在encoder的过程中,所有输入元素都有相同的计算量,比如对于“I arrived at the bank after crossing the river", 和"river"相比,需要更多的背景知识来推断单词"bank"的含义,然而transformer在编码这个句子的时候,无条件对于每个单词应用相同的计算量,这样的过程显然是低效的。
  • 问题六:transformer 时间复杂度 和 空间复杂度 过大问题
    • 动机:Transformer 中用到的自注意力与长度n呈现出

    的时间和空间复杂度

    • 解决方法:Linformer

3.16 Transformer 怎么 Coding?

  • 最后的最后,送上 whalePaper 成员 逸神 的 【Transformer 理论源码细节详解】;
  • 理论+实践,干活永不累!

4.参考资料

  1. Transformer理论源码细节详解
  2. 论文笔记:Attention is all you need(Transformer)
  3. 深度学习-论文阅读-Transformer-20191117
  4. Transform详解(超详细) Attention is all you need论文
  5. 目前主流的attention方法都有哪些?
  6. transformer三部曲
  7. Character-Level Language Modeling with Deeper Self-Attention
  8. Transformer-XL: Unleashing the Potential of Attention Models
  9. The Importance of Being Recurrent for Modeling Hierarchical Structure
  10. Linformer
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿泽的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Pre-Training】Transformer:Attention Is All You Need
今天阅读的来自谷歌大脑的同学于 2017 年发表的论文《Attention Is All You Need》,目前论文被引次数高达 6100 次。
阿泽 Crz
2020/07/21
5750
【调研】详解Transformer结构——Attention Is All You Need
        Transformer是一个完全依赖自注意力的面向sequence to sequence任务的NLP模型,由谷歌大脑在17年的论文《Attention is all you need》中首次提出。它抛弃了传统的CNN和RNN神经网络,整个网络结构完全由Attention机制以及前馈神经网络组成,它解决了RNN长期依赖和无法并行化以及CNN缺失全局特征等问题。(尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。)
小锋学长生活大爆炸
2022/10/28
1.4K0
【NLP】关于Transformer,面试官们都怎么问
前些时间,赶完论文,开始对 Transformer、GPT、Bert 系列论文来进行仔仔细细的研读,然后顺手把站内的相关问题整理了一下
yuquanle
2020/03/12
1.5K0
【NLP】关于Transformer,面试官们都怎么问
你所不知道的 Transformer!
可以看出,在计算X2加进去吐出来的值的时候必须要先把X1得出的参数值与X2放在一起才行。换句话说,RNN的计算是必须一个接一个,并不存在并行运算。如果不能并行运算,那么时间和计算成本均会增加。
红色石头
2022/01/20
5440
你所不知道的 Transformer!
Transformer (Attention is all you need) 详解
在之前的博客中有简单讲到Transformer,这篇博客将会专门详细的一起看看内部的计算与实现。
大鹅
2021/08/26
2.7K1
Transformer各层网络结构详解!面试必备!(附代码实现)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/09/29
2.9K0
Transformer各层网络结构详解!面试必备!(附代码实现)
追溯XLNet的前世今生:从Transformer到XLNet
正当 GPT-2 还拿着 15 亿参数的模型吊着人们的胃口时,XLNet 带着开源的代码和 20 项 SOTA 的成绩悄悄发布了。从 BERT 到 XLNet,大一统预训练模型的成功,无疑昭示着行业的快速进步。现在是最好的时机。回到正题,本文虽篇幅较长,但能提供不一样的视角,帮你迅速理清模型的细节。废话不多说,笔者这就将带你快速品读,XLNet 诞生之路上最重要的三篇论文:
AI科技大本营
2019/07/16
1.6K0
追溯XLNet的前世今生:从Transformer到XLNet
NLP界最强特征提取器--Transformer
前面介绍NLP领域词向量技术的时候提到了目前最炙手可热的语言模型BERT,而BERT之所以能取得这样的瞩目成就,离不开其采用的超强特征提取器Transformer。
流川枫
2020/04/24
5.2K0
Transformer的基本原理
Seq2Seq[1]框架最初是在神经机器翻译(Neural Machine Translation,NMT)领域中提出,用于将一种语言(sequence)翻译成另一种语言(sequence)。其结构如下图所示:
felixzhao
2022/09/26
1.3K0
【DL】Self-Attention与Transformer
答:编码器-解码器(Encoder-Decoder)模型最初是由Cho等提出应用在机器翻译中。由于在机器翻译中是文本到文本的转换,比如将法语翻译成英语,Sutskever等也称编码器-解码器模型为序列到序列学习(Seq2Seq)。
yuquanle
2020/02/25
1.2K0
【Pre-Training】超细节的 BERT/Transformer 知识点
随着 NLP 的不断发展,对 BERT/Transformer 相关知识的研究应用,也越来越细节,下面尝试用 QA 的形式深入不浅出 BERT/Transformer 的细节知识点。
阿泽 Crz
2020/11/17
3.5K0
【Pre-Training】超细节的 BERT/Transformer 知识点
bert原理详解(duhamel原理)
2018年的10月11日,Google发布的论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》,成功在 11 项 NLP 任务中取得 state of the art 的结果,赢得自然语言处理学界的一片赞誉之声。
全栈程序员站长
2022/08/01
1.4K0
bert原理详解(duhamel原理)
NLP三大特征提取器全梳理:RNN vs CNN vs Transformer
在上一篇文章中我们介绍了自然语言处理的基础问题——文本预处理的常用步骤。本文将进阶讲述特征提取方面的相关算法。
机器之心
2020/08/20
1.8K0
NLP三大特征提取器全梳理:RNN vs CNN vs Transformer
深度学习基础 | 超详细逐步图解 Transformer
读完先修知识中的文章之后,你会发现:RNN由于其顺序结构训练速度常常受到限制,既然Attention模型本身可以看到全局的信息, 那么一个自然的疑问是我们能不能去掉RNN结构,仅仅依赖于Attention模型,这样我们可以使训练并行化,同时拥有全局信息?
NewBeeNLP
2021/11/04
1.9K0
“变形金刚”为何强大:从模型到代码全面解析Google Tensor2Tensor系统
      Tensor2Tensor(T2T)是Google Brain Team在Github上开源出来的一套基于TensorFlow的深度学习系统。该系统最初是希望完全使用Attention方法来建模序列到序列(Sequence-to-Sequence,Seq2Seq)的问题,对应于《Attention Is All You Need》这篇论文。该项工作有一个有意思的名字叫“Transformer”。随着系统的不断扩展,T2T支持的功能变得越来越多,目前可以建模的问题包括:图像分类,语言模型、情感分析、语音识别、文本摘要,机器翻译。T2T在很多任务上的表现很好,并且模型收敛比较快,在TF平台上的工程化代码实现的也非常好,是一个十分值得使用和学习的系统。
张金超_WXG_PRC
2018/06/28
8.3K2
“变形金刚”为何强大:从模型到代码全面解析Google Tensor2Tensor系统
大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍
预训练属于迁移学习的范畴。现有的神经网络在进行训练时,一般基于反向传播(Back Propagation,BP)算法,先对网络中的参数进行随机初始化,再利用随机梯度下降(Stochastic Gradient Descent,SGD)等优化算法不断优化模型参数。而预训练的思想是,模型参数不再是随机初始化的,而是通过一些任务进行预先训练,得到一套模型参数,然后用这套参数对模型进行初始化,再进行训练。
汀丶人工智能
2023/07/17
7.1K0
大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍
AI生成中Transformer模型
在深度学习中,有很多需要处理时序数据的任务,比如语音识别、文本理解、机器翻译、音乐生成等。
Dlimeng
2023/12/20
8260
AI生成中Transformer模型
NLP之从word2vec到ELMO GPT再到BERT与attention transformer过程笔记与详解
在NLP自然语言处理学习或者发展过程中,在13年word2vec word embedding后,人们发现一个单词通过Word Embedding表示,很容易找到语义相近的单词,但单一词向量表示,不可避免一词多义问题。于是迎来Google的ELMO transformer BERT等动态表征模型,BERT模型更是刷新了GLUE benchmark的11项测试任务最高记录。
大鹅
2021/02/21
3.5K0
深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用场景、改进技巧等详细讲解
在正式讨论 Transformer-XL 之前,我们先来看看经典的 Transformer(后文称 Vanilla Transformer)是如何处理数据和训练评估模型的,如图 1 所示。
汀丶人工智能
2023/10/11
1.1K0
深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用场景、改进技巧等详细讲解
【NLP自然语言处理】Transformer模型的几大核心优势与应用前景
对于Transformer比传统序列模型RNN/LSTM具备优势的第一大原因就是强大的并行计算能力.
小言从不摸鱼
2025/01/17
4350
【NLP自然语言处理】Transformer模型的几大核心优势与应用前景
推荐阅读
相关推荐
【Pre-Training】Transformer:Attention Is All You Need
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档