的崛起-大模型时代-DenseMamba-精度大幅提升-推动Mamba-RetNet-和-DenseNet (崛起的demo)
引言
随着大型语言模型 (LLM) 的突破性进展,这些模型在语言理解、对话交互和逻辑推理方面展示了卓越的性能。过去一年,我们目睹了 LLaMA、ChatGLM 等模型的诞生,它们基于 Transformer 架构,采用多头自注意力 (MHSA) 机制来捕捉词汇间的复杂关系。
尽管 MHSA 模块在 LLM 中扮演着核心角色,但其在推理过程中对计算和内存资源的需求却极为庞大。对于长度为 N 的输入句子,自注意力的计算复杂度高达 O(N^2),而内存占用则达到了 O(N^2D),其中 D 是模型的维度。
为了应对这一挑战,最新的研究致力于简化 Transformer 架构,以降低其在计算和空间上的复杂度。研究者们探索了多种创新方法,包括卷积语言模型、循环单元、长上下文模型,以及状态空间模型 (SSM)。
状态空间模型 (SSM)
SSM通过引入高效的隐藏状态机制,有效处理长距离依赖问题,同时保持了训练的并行性和推理的高效率。隐藏状态能够在时间维度上传递信息,减少了在每一步中访问历史词汇的计算负担。
通过状态转移参数 A,隐藏状态能够将前一时间步的信息传递至当前时间步,实现对下一个词汇的自回归预测。尽管隐藏状态在 SSMs 中起着至关重要的作用,但其在以往的研究中并未得到充分研究。
DenseSSM 方法
为了解决隐藏状态退化问题,华为诺亚方舟实验室的科研团队提出了 DenseSSM 方法,该方法适用于各类 SSM 模型例如 Mamba 和 RetNet。DenseSSM 有选择地将浅层隐藏状态整合到深层,保留了对最终输出至关重要的浅层细粒度信息,以增强深层感知原始文本信息的能力。
DenseSSM 首先分析了 SSMs 中的隐藏状态退化问题。从公式 (7) 可以看出,从第 (l-m) 层到第 l 层的隐藏信息传递需要经过 m 个变换块和 m 次 BC 矩阵乘法。这样复杂的计算过程可能导致显著的信息丢失,这意味着在第 l 层尝试检索浅层的某些信息变得非常困难和不清晰。
DenseSSM 提出了一种密集连接的隐藏状态方法,以更好地保留来自浅层的细粒度信息,增强深层感知原始文本信息的能力。对于第 l 个块,DenseSSM 在其前 m 个块中密集连接隐藏状态。收集浅层隐藏状态,并引入一个选择性转换模块 φ,同时将它们投影到目标层的子空间并选择有用的部分:
操作是融合中间隐藏向量和当前隐藏状态的函数。具有所提出的密集隐藏层连接的 SSM 被称为 DenseSSM, 下图为递归模式的 DenseSSM 示例。
DenseSSM 也可以基于卷积模式以实现高效训练。根据 SSM 的公式可以得到:这个过程可以通过对输入序列进行卷积来实现:在文章所提出的 DenseSSM 中,可以获得隐藏状态加强的 SSM 的输出:
DenseSSM 方法的并行实现示例图:
选择性转换模块
选择性转换模块 φ(·) 的目的是将输入投影到目标子空间,并同时选择隐藏信息的有用部分。通过投影层和门控选择机制实现了选择性转换模块,如上图所示。前 m 个 SSM 块中的隐藏状态会被投影到相同的空间:根据输入生成门控权重,并使用它们来选择有用的隐藏状态:
实验结果
实验结果表明,DenseSSM 在各种自然语言处理任务上取得了显着的性能提升。例如,在 GLUE 基准测试上,DenseSSM 的平均准确率比基线模型提高了 1.5%,在 SQuAD 2.0 基准测试上,其 F1 分数提高了 2.3%。
结论
DenseSSM 方法提供了一种有效且高效的方法来简化 Transformer 架构,增强 LLM 在推理过程中的效率。通过引入密集连接的隐藏状态,DenseSSM 克服了 SSMs 中的隐藏状态退化问题,并显着提高了自然语言处理任务的性能。
DenseSSM 的未来研究方向包括探索更先进的状态空间模型、进一步简化 Transformer 架构,以及将 DenseSSM 应用到其他自然语言处理和人工智能领域。
什么叫做base mesh?
base mesh底网例句1In the first stage, I prepare the base mesh in Max, then export the OBJ to ZBrush.在第一阶段,我准备在最大基地网,然后导出的OBJ。 2Limitless creative control is what Shadow Box brings to the process of creating a three-dimensional base mesh.无限的创意控制是阴影盒带来的过程中创造一个三维的基地。 3The dense mesh is simplified into coarse base mesh and a series of errors by decimating the redundant information level by level.细密的网格通过逐层地、分批地删除其冗余信息,最后生成由基网格和一系列误差值组成的渐进网格。
如何分析一个图像分割算法
论文阅读笔记:图像分割方法deeplab以及Hole算法解析deeplab发表在ICLR 2015上。 论文下载地址:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected 方法概述 deeplab方法分为两步走,第一步仍然采用了FCN得到 coarse score map并插值到原图像大小,然后第二步借用fully connected CRF对从FCN得到的分割结果进行细节上的refine。 下面这张图很清楚地展示了整个结构: 然后这张图展示了CRF处理前后的效果对比,可以看出用了CRF以后,细节确实改善了很多: deeplab对FCN更加优雅的处理方式 在第一步中,deeplab仍然采用了FCN来得到score map,并且也是在VGG网络上进行fine-tuning。 但是在得到score map的处理方式上,要比原FCN处理的优雅很多。 还记得CVPR 2015的FCN中是怎么得到一个更加dense的score map的吗? 是一张500x500的输入图像,直接在第一个卷积层上conv1_1来了一个100的大padding。 最终在fc7层勉强得到一个16x16的score map。 虽然处理上稍显粗糙,但是毕竟人家是第一次将图像分割在CNN上搞成end-to-end,并且在当时performance是state-of-the-art,也很理解。 deeplab摒弃了这种做法,取而代之的是对VGG的网络结构上做了小改动:将VGG网络的pool4和pool5层的stride由原来的2改为了1。 就是这样一个改动,使得vgg网络总的stride由原来的32变成8,进而使得在输入图像为514x514,正常的padding时,fc7能得到67x67的score map, 要比FCN确实要dense很多很多。 但是这种改变网络结果的做法也带来了一个问题: stride改变以后,如果想继续利用vgg model进行fine tuning,会导致后面filter作用的区域发生改变,换句话说就是感受野发生变化。 这个问题在下图(a) (b)中通过花括号体现出来了:Hole算法 于是乎,作者想出了一招,来解决两个看似有点矛盾的问题: 既想利用已经训练好的模型进行fine-tuning,又想改变网络结构得到更加dense的score map. 这个解决办法就是采用Hole算法。 如下图(a) (b)所示,在以往的卷积或者pooling中,一个filter中相邻的权重作用在feature map上的位置都是物理上连续的。 如下图(c)所示,为了保证感受野不发生变化,某一层的stride由2变为1以后,后面的层需要采用hole算法,具体来讲就是将连续的连接关系是根据hole size大小变成skip连接的(图(c)为了显示方便直接画在本层上了)。 不要被(c)中的padding为2吓着了,其实2个padding不会同时和一个filter相连。 pool4的stride由2变为1,则紧接着的conv5_1, conv5_2和conv5_3中hole size为2。 接着pool5由2变为1, 则后面的fc6中hole size为4。 代码主要是im2col(前传)和col2im(反传)中做了改动 (增加了hole_w, hole_h),这里只贴cpu的用于理解:
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。