一种可理解的线性transformer

这篇具有很好参考价值的文章主要介绍了一种可理解的线性transformer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

找到一种更简洁的形式,如下:

message passing公式。其含义是,每个token产生一个消息 Q i Q_i Qi。然后消息通过权重 m i m_i mi加权合并,最后通过权重 s i s_i si消息分发。极限情况下(即softmax中有一个token的值为1,其余token值为0)每一次传递,会将某个token的消息传给另一个token。问题在于极限情况下,每一层只能设定固定的传递次数。在全连接图的情况下,传递次数应为 O ( n 2 ) O(n^2) O(n2)。在softmax情况下,这种情况可能有所改善。权重平均的情况下,相当于每个token加入了一个相同常数。令 m i = w 1 x i , s i = w 2 x i m_i = w_1x_i, s_i = w_2x_i mi=w1xi,si=w2xi,有
Q = ∑ i e x p ( m i ) ∑ j e x p ( m j ) Q i Q = \sum_i\dfrac{exp(m_i)}{\sum_jexp(m_j)}Q_i Q=ijexp(mj)exp(mi)Qi

x n ′ = x n + e x p ( s i ) ∑ j e x p ( s j ) Q x_n' = x_n + \dfrac{exp(s_i)}{\sum_jexp(s_j)}Q xn=xn+jexp(sj)exp(si)Q
如果进行 k k k次合并,和 k k k次分发,总体公式如下:

x ′ = x + s o f t m a x ( S x , d i m = l ) s o f t m a x ( M x , d i m = l ) T Q x x' = x + softmax(Sx,dim = l) softmax(Mx, dim=l)^T Qx x=x+softmax(Sx,dim=l)softmax(Mx,dim=l)TQx

,其中 Q x : [ b a t c h , l e n , c ] , s o f t m a x ( M x ) T : [ b , k , l ] , e x p ( S x ) : [ b , l , k ] ,其中Qx:[batch, len, c], softmax(Mx)^T:[b, k, l], exp(Sx):[b,l,k] ,其中Qx:[batch,len,c],softmax(Mx)T:[b,k,l],exp(Sx):[b,l,k]

从公式上来看,更像一个低秩方法。需要看一下与其它的低秩方法的区别。

与之对比的self_attention公式如下,可以发现其实就是拆解了self attention的softmax,比较巧合。

x ′ = x + s o f t m a x ( ( Q x ) T ( K x ) , d i m = l ) ∗ ( V x ) x' = x + softmax((Qx)^T(Kx),dim=l) * (Vx) x=x+softmax((Qx)T(Kx),dim=l)(Vx)

其中

Q x : [ b , l , k ] , K x : [ b , k , l ] , V x : [ b , l , c ] Qx:[b,l,k], Kx:[b,k,l], Vx:[b,l,c] Qx:[b,l,k],Kx:[b,k,l],Vx:[b,l,c]

参考了一下linear transformer的论文,主要是https://blog.csdn.net/hymn1993/article/details/125254897。发现确实是低秩方法的一种,只不过用softmax作为核进行映射。不过比较巧妙的是,这套方法有明确的可解释意义。

transformer O ( n 2 ) O(n^2) O(n2)复杂度的关键点在于,对每个token都查询了一次。因此降低复杂度的一个行之有效的方法是降低查询的次数。因此提出竞争查询的方法。公式如下:

Q = ∑ i e x p ( z i ) ∑ j e x p ( z j ) Q i Q = \sum_i\dfrac{exp(z_i)}{\sum_jexp(z_j)}Q_i Q=ijexp(zj)exp(zi)Qi

x n ′ = x n + e x p ( z n ) ∑ j e x p ( z j ) ∑ m ( e x p ( Q ∗ K m ) ∑ k e x p ( Q ∗ K k ) V m ) x_n' = x_n + \dfrac{exp(z_n)}{\sum_jexp(z_j)}\sum_m (\dfrac{exp( Q* K_m)}{\sum_kexp(Q*K_k)}V_m) xn=xn+jexp(zj)exp(zn)m(kexp(QKk)exp(QKm)Vm)

Z Z Z向量为竞争向量,通过softmax归一化得到分布在tokens上的权重,根据 Z Z Z的权重对所有的query向量 Q i Q_i Qi进行求和,得到竞争成功的 Q Q Q向量。可以理解为这一步将所有要查询的东西编码到同一个向量中。然后正常按照transformer的办法用Q向量与每个token的key向量 K m K_m Km V m V_m Vm得到更新向量。然后按照 Q Q Q向量的比例,依次按照比例把更新向量赋值给所有的token。可以看出当 Q i Q_i Qi的比例为极限情况(0,0,…,1,…,0,0)时,相当于只对比例为1的token做查询。

另外一种公式是:

z i = w x i z_i = w x_i zi=wxi

Q = ∑ i e x p ( z i ) ∑ j e x p ( z j ) Q i Q = \sum_i\dfrac{exp(z_i)}{\sum_jexp(z_j)}Q_i Q=ijexp(zj)exp(zi)Qi

V = ∑ i e x p ( z i ) ∑ j e x p ( z j ) V i V = \sum_i\dfrac{exp(z_i)}{\sum_jexp(z_j)}V_i V=ijexp(zj)exp(zi)Vi

x n ′ = x n + r e l u ( Q K n ) V x_n' = x_n + relu(QK_n)V xn=xn+relu(QKn)V

也是具备非常明确的意义。

第二种存在GPT形式(casual mask attention):

要依次根据mask,生成每个token的 Q n , V n Q^n,V^n Qn,Vn。每个token的更新如下:

Q n = ∑ i = 0 n e x p ( z i ) ∑ j = 0 n e x p ( z j ) Q i Q^n = \sum_{i = 0}^n\dfrac{exp(z_i)}{\sum_{j = 0}^nexp(z_j)}Q_i Qn=i=0nj=0nexp(zj)exp(zi)Qi

V n = ∑ i = 0 n e x p ( z i ) ∑ j = 0 n e x p ( z j ) V i V^n = \sum_{i = 0}^n\dfrac{exp(z_i)}{\sum_{j = 0}^nexp(z_j)}V_i Vn=i=0nj=0nexp(zj)exp(zi)Vi

x n ′ = x n + r e l u ( Q n K n ) V n x_n' = x_n + relu(Q^nK_n)V^n xn=xn+relu(QnKn)Vn

注意 Q n Q_n Qn的计算是存在递归公式的,因此其复杂度为seq len线性相关,缺点是无法并行。

第二个公式是有明确意义的。每一层都预定了一个w,用来判断query的重要程度。因此w是一个先验知识,用来决定应该先查询什么,然后再查询什么。但是真正的查询向量Q又是和序列有关的,不同的序列有不同的查询向量。文章来源地址https://www.toymoban.com/news/detail-494922.html

到了这里,关于一种可理解的线性transformer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面向对象(最好理解 最美观 最简洁)

    1.类,模板 2.对象(可以使用类创建对象 实例化 初始化) 继承:子类继承父类 封装: 数据的权限与保密 多态:同一接口不同实现 继承(可将公共方法抽离,提高复用,减少冗余) 封装(减少耦合 不该外漏的外漏 利于数据 接口的权限管理    _下划线开头一般是私有属性

    2024年02月11日
    浏览(47)
  • 【网络结构】——TinyViT 一种transformer的蒸馏方案

    来自 Microsoft TinyViT是一种新型的小型transformer,它们高效且可以在大规模数据集上进行预训练。TinyViT通过在预训练期间应用蒸馏来传输知识,将大型预训练模型的知识转移到小型模型中,同时使小型模型能够获得大量预训练数据的红利。TinyViT在ImageNet-1k上的最高准确率为84.

    2024年02月12日
    浏览(60)
  • Transformer模型简介:一种革命性的深度学习模型

    Transformer模型是一种革命性的深度学习模型,最初用于自然语言处理任务,如机器翻译和语言建模。与传统的序列模型相比,如循环神经网络(RNN)和卷积神经网络(CNN),Transformer模型采用一种全新的方式来处理序列数据,即通过注意力机制来学习序列中的关系。 在传统的序列模

    2024年02月15日
    浏览(51)
  • Monarch Mixer:一种性能比Transformer更强的网络架构

    六年前,谷歌团队在arXiv上发表了革命性的论文《Attention is all you need》。作为一种优势的机器学习网络架构,Transformer技术迅速席卷全球。Transformer一直是现代基础模型背后的主力架构,并且在不同的应用程序中取得了令人印象深刻的成功:包括像BERT、ChatGPT和Flan-T5这样的预训

    2024年02月05日
    浏览(53)
  • MAMBA介绍:一种新的可能超过Transformer的AI架构

    有人说,“理解了人类的语言,就理解了世界”。一直以来,人工智能领域的学者和工程师们都试图让机器学习人类的语言和说话方式,但进展始终不大。因为人类的语言太复杂,太多样,而组成它背后的机制,往往又充满着不可名状的规律。 过去人们在自然语言处理中多采

    2024年02月04日
    浏览(44)
  • 【论文速递】WACV 2023 - 一种全卷积Transformer的医学影响分割模型

    【论文原文】:The Fully Convolutional Transformer for Medical Image Segmentation 【作者信息】:Athanasios Tragakis, Chaitanya Kaul,Roderick Murray-Smith,Dirk Husmeier 博主 :医学图像分割、全卷积Transformer 推荐论文 :无 我们提出了一种新的transformer,能够分割不同形态的医学图像。 医学图像分析

    2024年02月08日
    浏览(43)
  • NodeFormer:一种用于节点分类的可扩展图结构学习Transformer

    图神经网络已经被广泛研究用于利用互连数据进行学习。尽管如此,最近的证据表明,GNN的缺陷与过度挤压、异质性、处理长程依赖性、边缘不完全性有关,尤其是完全没有图。虽然一个合理的解决方案是学习用于消息传递的新的自适应拓扑,但有关二次复杂性的问题阻碍了

    2024年02月11日
    浏览(57)
  • 【AI理论学习】语言模型Performer:一种基于Transformer架构的通用注意力框架

    Performer是一种用于高效处理自注意力机制(Self-Attention)的神经网络架构 。自注意力机制在许多自然语言处理和计算机视觉任务中

    2024年02月09日
    浏览(47)
  • 设计模式的另一种有趣理解

    单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。 俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一

    2024年02月22日
    浏览(48)
  • Vision Transformer推理中线性-角度注意转换压缩自注意

    与卷积神经网络(cnn)相比,ViTs表现出令人印象深刻的性能,但仍然需要较高的计算成本,其中一个原因是ViTs的注意力衡量全局相似性,因此具有与输入令牌数量的二次复杂度。现有的高效ViTs采用局部注意或线性注意,牺牲了ViTs捕获全局或局部上下文的能力。 本文方法 vit在

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包