论文学习随记:PoinTr: Diverse Point Cloud Completion with Geometry-Aware Transformers

1. 理解多头注意力机制

学习参考链接
重点及笔记:

自注意力机制

  1. 由于传统的Encoder-Decoder架构在建模过程中,下一个时刻的计算过程会依赖于上一个时刻的输出,而这种固有的属性就限制了传统的Encoder-Decoder模型就不能以并行的方式进行计算。自注意力机制就是通过某种运算来直接计算得到句子在编码过程中每个位置上的注意力权重;然后再以权重和的形式来计算得到整个句子的隐含向量表示。【Transformer架构是基于这种的自注意力机制而构建的Encoder-Decoder模型。】
  2. 自注意力机制可以描述为将query和一系列的key-value对映射到某个输出的过程,而这个输出的向量就是根据query和key计算得到的权重作用于value上的权重和
  3. 自注意力机制的核心过程就是通过Q和K计算得到注意力权重;然后再作用于V得到整个权重和输出。
  4. Q、K和V其实就是输入X分别乘以3个不同的矩阵计算而来。
  5. 注意scale是将矩阵中的每个元素进行除法,而不是降维,没必要降维。
  6. 对softmax结果与V的计算:因为softmax后的结果、与V的计算并不是矩阵乘法,而是“加权求和”的过程。由前面的图可知,0.5所在的第二行,为“是”与“是”的注意力。那么对应矩阵V,代表“是”的是第二行,所以应该将第二行中代表“我”的0.3与V中的“我”(也就是第一行)相乘,其余同理。由于0.5所在的第二行,为“是”与“是”的注意力,所以最后的加权和作为了新矩阵中代表“是”的第二行。【值得注意的是,全程都是元素乘法,并不是矩阵乘法,所以最后维度仍不变。】
  7. 自注意力机制确实解决了作者在论文伊始所提出的”传统序列模型在编码过程中都需顺序进行的弊端“的问题,有了自注意力机制后,仅仅只需要对原始输入进行几次矩阵变换便能够得到最终包含有不同位置注意力信息的编码向量。

Multi-head Attention

  1. 自注意力机制的缺陷就是:模型在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置。
  2. 使用多头注意力机制还能够给予注意力层的输出包含有不同子空间中的编码表示信息,从而增强模型的表达能力。
  3. 可以看到所谓的多头注意力机制其实就是将原始的输入序列进行多组的自注意力处理过程;然后再将每一组自注意力的结果拼接起来进行一次线性变换得到最终的输出结果。

2. 多次提到的embedding究竟是什么?

通过Positional Embedding可以弥补自注意力机制不能捕捉序列时序信息的缺陷。那么在本篇论文中dynamic query embedding完成了什么任务呢?

3.Transformer网络结构

学习参考链接
重点及笔记:

Transformer是如何对字符进行Embedding:

  1. Token Embedding:在Transformer模型中,首先第一步要做的是将各个词(或者字)通过一个Embedding层映射到低维稠密的向量空间(进行向量化表示)。
  2. 自注意力机制在实际运算过程中不过就是几个矩阵来回相乘进行线性变换而已。因此,这就导致即使是打乱各个词的顺序,那么最终计算得到的结果本质上却没有发生任何变换,换句话说仅仅只使用自注意力机制会丢失文本原有的序列信息。基于这样的原因,Transformer在原始输入文本进行Token Embedding后,又额外的加入了一个Positional Embedding来刻画数据在时序上的特征。
  3. Positional Embedding:直观理解positional embedding
    横坐标表示序列中每一个粒度的位置,每一条曲线或者直线表示每个维度对应的位置信息。(比如左图,在dim1可理解为在xyz的x维,位置信息保持不变)左图中任意两个位置上的向量都可以进行交换而模型却不能捕捉到这一差异,但是加入右图这样的位置信息模型却能够感知到。证明通过Positional Embedding可以弥补自注意力机制不能捕捉序列时序信息的缺陷

Transformer网络结构:

整个Transformer网络包含左右两个部分,即Encoder和Decoder。

  1. encoder:encoder结构
    主要由两部分网络所构成:多头注意力机制和两层前馈神经网络。(论文中是以6个这样相同的模块堆叠而成)
    Add&Norm:对于这两部分网络来说,都加入了残差连接,并且在残差连接后还进行了层归一化操作。
  2. decoder:decoder结构
    在Decoder中一共包含有3个部分的网络结构。最上面的和最下面的部分(暂时忽略Mask)与Encoder相同,只是多了中间这个与Encoder输出(Memory)进行交互的部分。对于这部分的输入,Q来自于下面多头注意力机制的输出,K和V均是Encoder部分的输出(Memory)经过线性变换后得到。
    【首先Q通过与K进行交互得到权重向量(相当于公式中的QK^T),此时可以看做是Q(待解码向量)在K(本质上也就是Memory)中查询Memory中各个位置与Q有关的信息;然后将权重向量与V进行运算得到解码向量,此时这个解码向量可以看作是考虑了Memory中各个位置编码信息的输出向量,也就是说它包含了在解码当前时刻时应该将注意力放在Memory中哪些位置上的信息。(即softmax(QK^T/dk^1/2)V
    训练过程中,解码器也同编码器一样,一次接收解码时所有时刻的输入进行计算。模型在实际的预测过程中只是将当前时刻之前(包括当前时刻)的所有时刻作为输入来预测下一个时刻,也就是说模型在预测时是看不到当前时刻之后的信息。因此,Transformer中的Decoder通过加入注意力掩码机制来解决了这一问题。
    那为什么注意力权重矩阵加上这个注意力掩码矩阵就能够达到这样的效果呢?以图17(学习链接中)中第1行权重为例,当解码器对第1个时刻进行解码时其对应的输入只有’< s >',因此这就意味着此时应该将所有的注意力放在第1个位置上,换句话说也就是第1个位置上的权重应该是1,而其它位置则是0。从图17可以看出,第1行注意力向量在加上第1行注意力掩码,再经过softmax操作后便得到了一个类似[1,0,0,0]的向量。那么,通过这个向量就能够保证在解码第1个时刻时只能将注意力放在第1个位置上的特性。同理,在解码后续的时刻也是类似的过程。

4.对比学习到的Transformer网络结构和论文中的网络结构(未加geometry-aware)【仅自己推断,还未验证】

论文中的网络结构:
论文中的网络结构
相比原transformer而言,"input embedding + positional encoding"改成了proxies,"output embedding + positional encoding"改成了query embedding。回顾原来学习到的内容,仅使用自注意力机制会丢失原有的文本序列信息,那么更改的原因/目的是什么呢?

  1. proxies本就是有无序特点的,所以不需要再加position embedding去恢复原有的序列信息。
  2. 论文的introduction部分写到,“the decoder reasons about the missing elements based on the learnable pairwise interactions among features of the input point cloud and queries”。这说明输入点云特征与查询特征之间需要“对应关系”,所以需要用embedding去确保。这里的query embedding的目的应该就是通过一个Embedding层映射一个有对应关系的向量。

5.DGCNN学习

学习参考链接
找到的最通俗易懂的解释

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值