百科问答小站 logo
百科问答小站 font logo



有哪些令你印象深刻的魔改transformer? 第1页

  

user avatar    网友的相关建议: 
      
  1. Self-Attention with Relative Position Representations
    1. 提出了相对位置编码,建模词与词之间的相对位置关系而不是绝对位置关系,使得transformer可以适应没有见过的长度:一个在长度为128的序列上训练的语言模型,可以在长度为256的序列上推断并且不会有性能损失,相比之下用sin/cos的绝对位置编码性能会有显著下降。
    2. 为了节省计算量,每层所有head共享相同的encoding。
    3. 性能相较普通transformer有若干提升,速度略有下降。
    4. 给后续的文章提供了很多改进的机会:相对位置可以看做词与词之间的一种relation,而相对位置编码套在图网络的框架中实际上是一种建模relation的message function。词和词之间还有很多其它的relation(coref, dependency, pos tagging, kg中的relation),可以用来给transformer嵌入外部知识,可能会对相应的下游任务有帮助。
  2. Transformer-XL
    1. 提出了一种新的相对位置编码,性能比上文中的编码方式略有提升,参数量增大。
    2. 提出使用跨相邻两个segment的attention来建模长程依赖。
    3. 模型本身只能用于单向建模,后续的XLNet为了使其具有建模双向上下文的能力定义了permutation language modeling。
  3. Dynamic Conv
    1. 早期的CNN on text系列工作对于kernel中的每个相对位置使用固定的权重,限制了其表达能力。
    2. 本文提出了Dynamic Conv结构,旨在根据当前词的表示动态调整卷积权重,更具体地:
      1. 对于所有位置,用同一个函数 来把当前位置表示 映射到 ,然后对 在kernel size的维度做softmax,作为可分离卷积的权重。
      2. self-attention可以看做 ,需要每个词对其它所有的词表示做dot-product算出 ,而dynamic conv只需要用当前的词表示。
    3. @赵光香 所提到的,本文的亮点在于不使用词之间两两交互的attention(backward过程中有类似attention的交互,这是一个大家可以挖掘的点)也可以获得类似/超过transformer的效果。
      1. MUSE结合了Self-Attention和Dynamic Conv,在每个transformer block中同时使用FFN,Dynamic Conv和Self-Attention,在翻译任务上取得了更好的效果。
  4. Universal Transformer
    1. transformer固定层数限定了其表达能力。
    2. 不固定层数的transformer如何适应没有见过的层数?共享每层的网络权重。
    3. 除了positional encoding以外,使用了layer encoding来建模不同层的偏置。
    4. Adaptive Computation Time的思想引入transformer,每个layer之后用一个网络来predict每个词需不需要halt,有些词需要经过更多的层来获得一个较好的表示。
    5. 需要注意这篇文章的机器翻译实验中并没有使用词级别ACT,所以词级别ACT的使用对于大规模的任务需要警惕。
  5. DiSAN
    1. 此文投稿时间与Transformer问世只差两个月,可以看做同期工作,文章没有太多transformer的影子,将纯self-attention结构用于NLI/分类任务上,直至目前仍然是很强的baseline。
    2. 提出了multi-dimensional attention,与multi-head attention有类似之处,
    3. 普通的self-attention无法建模语序,区别于transformer使用的positional encoding,此文提出使用自左到右和自右到左两个单向的attention mask来建模语序(可以看做两个方向的causal transformer)。
      1. ablation study验证了这种建模方式的有效性。
    4. 在不使用交互的情况下在SNLI有85.7的test acc,属于当时的state-of-the-art。
    5. 不同于transformer,此文不stack self-attention layer,然而未来大家都已经看到了。
  6. Star-Transformer
    1. @邱锡鹏 老师组的工作,同时维护每个词的表示和一个global的表示,思路类似于视觉中的Squeeze-and-Excitation Networks
    2. 限制每个词attend到邻域和global表示,全局表示attend到每个词,迭代地更新词级别的表示和global的表示,复杂度为O(n)。
      1. ablation study验证了局部attention和全局attetion的必要性。
    3. 由于更新global表示与更新词级别表示用了两套参数,因此删除了网络中的FFN以平衡参数量。
    4. 在中小型数据集上有比transformer显著更好的泛化性能和推断速度。
    5. 从图网络的视角来看,把clique简化为了star + ring。
  7. Set-Transformer
    1. 此文试图将transformer应用于无顺序的数据(例如集合)中。
    2. 大家能想到的一种最简单的方法是去掉positional encoding,也就是这篇文章中提到的SAB(Set Attention Block)。
    3. 但是普通的SAB的计算复杂度为O(n^2 d),当集合中元素数量很多时候计算代价很大,本文提出了ISAB(Induced Set Attention Block):
      1. 每个self-attention block中维护m个inducing points(可以看做对原来n个元素的表示做了一个压缩),将原来的n->n的self-attention拆成二段式n->m->n:首先用inducing points对原来的n个元素表示做self-attention,之后再用n个元素的表示对这m个inducing points(压缩之后的表示)做self-attention,时间复杂度为O(nmd)。
      2. 尚不清楚此算法对于文本类型的效果如何,一个可能的尝试是用在文档级别翻译的encoder-decoder attention中。
  8. Gaussian Transformer
    1. 观察发现attention通常对近距离的词权重较大,远距离的词权重较小。
    2. 对self-attention模块增加了一个高斯先验:
    3. 设计了一套交互式基于transformer的NLI结构:三层encoder+三层带交互的encoder,在SNLI上取得了89.2的test acc,式目前不使用EMLO/BERT的SOTA。
  9. Augmenting Self-attention with Persistent Memory
    1. 做过仔细的profiling的同学会发现,transformer中FFN的计算代价很高(无论是显存还是速度)。
    2. 直接去掉FFN对transformer性能影响极大。
    3. 这篇文章去掉FFN的同时在self-attention层中加入了persistent(与文本本身无关,属于模型的参数) key/value,使得新模型在参数量上与使用FFN的transformer相匹配,性能不降。
    4. 实际上每层需要1024组persistent memory,开销不小,需要后续改进。
  10. Large Memory Layers with Product Keys
    1. 同样来自FAIR,思路是用大的key/value字典来代替FFN。
    2. 字典体积很大,memory size=1024^2,使用了二分subspace的方法降低查询代价。
    3. 使用了faiss做高效的similarity search。
    4. 由于参数/计算量大,只在12层transformer中的第六层和第十二层把FFN改成key-value layer.
    5. 思路上与word embedding流行年代的multi-sense embeddingmemory network有类似之处,有兴趣的同学们可以考虑在key-value layer引入外部知识,比如knowledge embedding。
  11. Adaptive Attention Span in Transformers
    1. 观察发现大部分层/head的attention集中在局部。
    2. 同样将Adaptive Computation Time 的思想引入transformer中,动态地学习每个attention head的context length。
    3. 使用相对低的计算代价建模长程上下文,在字符级语言模型上效果显著优于transformer-xl。
    4. adaptive的方法通常需要对参数比较敏感,其它任务上的性能有待考证。
  12. InDIGO
    1. 来自 @Jiatao Gu,使用transformer做非自左到右的解码。
    2. 句子的绝对位置和相对位置都不再确定,如何建模位置信息?
    3. 使用更”模糊“的相对位置编码:x在y的左边,x在y的右边,x是y。
      1. 该相对位置编码是insertion-invariant的。
      2. 为什么work?可以参考relative positional encoding原文中的clip_dist=1的情形。
    4. 大量的实验来探究不同解码方式生成的质量。
    5. 同期还有两篇研究非自左到右编码的文章:Insertion Transformer (log(n)步解码), Non-Monotonic Sequential Text Generation (对transformer本身没有改动)。
  13. Levenshtein Transformer
    1. 同样来自Jiatao。
    2. 普通的transformer每层更新每个词的表示。
    3. Levenshtein Transformer每层对句子进行一个编辑,具体分为三步:
      1. 删除token
      2. 在句子中加placeholder
      3. 预测每个placeholder对应的词。
    4. 用RL优化每层output和target的levenshtein distance。
    5. 未来有很多的可能性,令人充满遐想,比如 @Towser 提过的human-in-the-loop。
  14. Tree-Transformer
    1. 用Transformer来做unsupervised parsing,尝试从文本中学习结构。
    2. 在每个Transformer layer中都把整段文本分成一系列成分。
    3. 对attention加上mask,对每个词而言,超出当前所在成分的权重置为0。
    4. 如何分出成分?每个位置预测link probability代表其与后一个词在同一个成分中的概率,设置一个threshold用来分段。
    5. 直接这样做模型倾向于将整句分到同一个成分中,因此设计了neighbor attention。
    6. 如何保证Transformer layer从下层到上层学出的成分组成一棵合法的树?设计了hierarchical constraint。
    7. 提出了从pre-trained Tree-Transformer中构建成分树的算法,使用BERT中的MLM loss做训练,并在unsupervised parsing上评测。
    8. 同在EMNLP 19中有一篇立意类似的文章PALM
  15. Tensorized Embedding
    1. WikiText-103这类数据集,词表很大(267735),embedding占据了总参数的大部分。
    2. 本文试图分解(vocab_size=I1 * I2* ... In, d=J1 * J2 * ... Jn)这个矩阵:
      1. (I1 * I2 * ...* In, J1 * J2 * ...* Jn) -> (I1 * J1 * r1), (I2 * J2 * r1 * r2), ... (In * Jn * rn),其中r*为预设的秩。
      2. 思路上与三年前的LightRNN接近,但是LightRNN有一个用最小费用最大流求word reallocation的过程,本文缺失了这一过程,因此可能对初始词表的排布有一定要求。
    3. 显著降低了embedding的参数量,并将其应用于Transformer-XL,性能不降/略有提升。
    4. 在CTR任务上也有一定效果。
  16. Bi-BloSAN
    1. 此文是DiSAN原版人马做的拓展,试图将self-attention拓展至长文本。
    2. 将self-attention分解为局部和全局,先将文本分块,再依次进行intra-block self-attention和inter-block self-attention。
    3. 在SNLI和SQuAD上验证了有效性。
    4. 影响力不够大的原因:
      1. (主要)选择了DiSAN而不是Transformer作为backbone,名字不好读。
      2. 仍然是单层结构不能stack。
      3. SNLI句子平均长度只有14,没有必要节省self-attention的开销,效果相比DiSAN没有显著提升;SQuAD上性能与LSTM类似。
  17. Sparse Transformer
    1. 解决transformer应用于生成长序列开销大的问题。
    2. 对于image,每个像素attend当前行和当前列。
    3. 对于文本,首先将文本分成固定长度(stride)的块,第i个块中的第j个词attend第i个块中的前(j-1)个词和前i-1个块中的最后c(常数)个词。
    4. 时间复杂度为n sqrt(n),思路无比接近上文(citation is missing)。
    5. 对于>=1维的情形,提出了新的positional encoding: (i, j) -> e1(i) + e2(j)。
    6. 基于blocksparse,在tensorflow上有高效的实现。
  18. BP-Transformer
    1. 解决transformer应用于长文本开销大的问题。
    2. 维护log(n)个层次的表示:第k个层级的第i个节点建模[i*2^k, (i+1)*2^k)这个span,一共2n个节点。底层节点可用于词级别任务,顶层节点可用于分类。
    3. span级别节点直接attend词级别的表示,词级别的节点按照相对距离由近到远attend低层级到高层级的表示,计算复杂度为n log n,可用于长文本建模。
    4. 可同时用于单向和双向建模,在长文本的语言模型,分类和翻译上有着不错的性能。
    5. 由于引入了更多的节点(*2)增大了FFN上的开销,对于短文本速度没有优势。
  19. Compressive Transformer
    1. 为了建模长程依赖,Transformer-XL将当前segment的表示和上一个segment的表示作为memory。
    2. 此文认为把历史都压缩在上一个segment的表示中不妥,提出了维护一组memory和一组compressive memory,较远的memory压缩成compressive memory。
      1. 压缩的方式可以是各种花式conv/pooling。
    3. 提出了新的用于评测长序列建模的benchmark:PG-19,平均篇章长度达到69K。
  20. Reformer
    1. 同样试图解决transformer计算量过大的问题。
    2. query和key表达的含义有一定冗余,本文合并query和key(此处用qk来表示),这样attention score大的词对相应的qk的距离会更近。
    3. 使用local sensitive hashing来对qk分桶并排序,每个桶内只attend当前桶和之前的桶,减小attention的计算开销。
    4. 使用可逆网络降低显存开销(这是本文最漂亮的一个点)
      1. 普通的残差网络形式为y = x + f(x),无法从y中倒推出x。
      2. revnet的形式是y1 = x1 + f(x2),y2 = x2 + g(y1)
      3. 倒推可得x2 = y2 - g(y1), x1 = y1 - f(x2)
      4. 本文选择f为attention,g为ffn,并且声明此做法可以不降性能。
    5. 为什么可以降显存,因为不用存每层的activation——可以在backward的时候从更高层的activation中恢复出来(当然带来了一些额外的计算开销,速度变慢),因此显存占用几乎与layer数无关,不明白的可以去看Training Deep Nets with Sublinear Memory CostThe Reversible Residual Network: Backpropagation Without Storing Activations
    6. 在enwik8上性能离state-of-the-art有一定距离,那么reformer优势是什么呢?
      1. 在没有位置先验(比如集合,图,multi-agent)的数据类型上,LSH仍然可以work。以上提到的其它结构均依赖于locality bias,需要原数据有位置信息(比如图片,文字,语音)。
    7. 随着未来transformer越来越深,可逆网络的应用可能会成为趋势。(p.s. revnet的训练额外开销巨大,在框架对其优化之前不要对reformer的速度有什么期待)
  21. TODO: Jiatao的一系列新工作:depth-adaptive, disco, monotic multihead attention……

近年来改进transformer的工作层出不穷,此处只列举一些个人比较感兴趣的工作,如有疏漏,不吝赐教。




  

相关话题

  2020到2021年小样本学习取得重大进展了吗? 
  如何评价 MSRA 最新的 Deformable Convolutional Networks? 
  如何看UCBerkeley RISELab即将问世的Ray,replacement of Spark? 
  无人车为什么一定要用激光雷达做,双目视觉难道不行吗? 
  验证集loss上升,准确率却上升该如何理解? 
  如果你是面试官,你怎么去判断一个面试者的深度学习水平? 
  如何评价微软亚研院提出的把 Transformer 提升到了 1000 层的 DeepNet? 
  如何看UCBerkeley RISELab即将问世的Ray,replacement of Spark? 
  计算流体力学(CFD)里应用注意力机制(attention)是否可行? 
  如何评价周志华教授新提出的 Deep Forest 模型,它会取代当前火热的深度学习 DNN 吗? 

前一个讨论
机器学习中有哪些形式简单却很巧妙的idea?
下一个讨论
如何看待谷歌研究人员提出的卷积正则化方法「DropBlock」?





© 2025-01-28 - tinynew.org. All Rights Reserved.
© 2025-01-28 - tinynew.org. 保留所有权利