xLSTM模型学习笔记

news2024/11/26 4:39:48

笔记来源:bilibili

LSTM 回顾

原始的 LSTM 是为了解决 RNN 时序反向传播中梯度消失和爆炸问题而提出的。

其所谓的门控机制,其实就是一种时序上的注意力机制,相当于把不同时间进行"掺和",是对时序信息的一种选择性控制。从这个视角看,它与 Transformer 和 mamba 都异曲同工之妙。核心思想都是选择性控制信息流动,更好地处理时序数据或序列信息。门控机制通过固定的结构和参数来控制信息流,而注意力机制通过动态计算权重来控制信息流。因此,门控机制可以看作是一种特定形式的时序注意力机制,对不同时间步的信息进行选择性控制和"掺和"。可以认为是一种约束版或者简化版的注意力机制。

其缺点

LSTM 有三个主要局限性:

  1. 在处理长序列时效率低
  2. 记忆容易有限
  3. 不可以并行处理数据

而 transformer 借助网格模块堆叠,参数规模扩充和 GPU 并行处理拼算力,在一定的程序上解决了以上的问题,所以 transformer 实现了赶超。

初级版:sLSTM 改进注意力机制

改进的点:

  1. 输入门和遗忘门的激活函数从 sigmoid 改成了指数函数(红色部分)
  2. 引入了一个归一化状态 n t n_t nt,相应的隐层 h t h_t ht 的计算方式亦了,改成了 c t / n t c_t/n_t ct/nt(公式 10)
  3. 引入了一个额外状态 m t m_t mt 来进一步稳定门控

改进的原因如下:

  1. 指数函数相比于 sigmoid 函数,具有更大的输出范围和更大的梯度,可以减轻梯度消失的问题,使得梯度在反向传播过程中不会迅速减小,从而使得模型在训练时能够更有效地更新权重。
  2. 指数函数的增长速度比 sigmoid 函数快,对输入变化更加敏感,因此,可以更迅速地强烈的调整输入和遗忘门的输出,使得模型能够更快地捕捉到输入信息的变化,更加选择性地记住或忘记信息,从而提高模型的记忆和遗忘能力。
  3. 强烈的选择性可以让模型能够更准确地保留重要信息和丢弃不重要的。在特定任务(如长序列的最近邻搜索或稀有事件预测)中表现得尤为显著,能够显著提升模型的性能。

引入归一化和状态 m t m_t mt 都是为了稳定,因为指数激活函数可能导致数值过大而溢出,前者相当于搞了一个大分母。后者通过下面的公式进行:

第一个式子中,使用了 log 的作用就是防止输入门和遗忘门都不要太猛。然后根据 m t m_t mt 来调整输入了门与遗忘门,这样就实现了对输入门与遗忘门的调节。

在原论文中,还证明了在瘦身传播中使用 f t ′ f'_t ft i t ′ i'_t it 替换 f t f_t ft i t i_t it 不会改变整个网络的输出,也不会改变参数损失的导数。

增加了这些公式相当于增加了新的记忆单元,它们之间通过连接从长短期记忆状态,借助门控(阀门)i, f, 0 进行记忆混合。门控就是选择,也是一种时序注意力机制的体现。

中级版:mLSTM 改进内存处理

解决了敏感度,某种程序上也是长序列处理效率问题,为了增强 LSTM 的存储能力,文章将 LSTM 的记忆单元从一个标量 c 增加到矩阵 C。而且在这里引入了 transformer 键值对的概念,更新规则如下:
C t = C t − 1 + v t k t T C_t=C_{t-1}+v_tk_t^T Ct=Ct1+vtktT
在将输入投影到键和值之前,mLSTM 进行层归一化,使得均值为零。同时,将协方差更新规则,也就是优化器整合到 LSTM 架构中,遗忘门对应于衰减率,输入门对应于学习率,而输出门则缩放检索到的向量,最终形成了下面的迭代公式:

与之前的 sLSTM 对比,最大的区别之一就是状态和权重参数都变成了矩阵的形式,对应的运算变成了向量矩阵简洁和哈达玛积。区别之二是增加了 q t q_t qt k t k_t kt, v t v_t vt 这种键值对的计算公式,优化了自注意力机制,多了好几个权重矩阵增强了模型表达能力。其他的公式基本没变。相当于,记忆单元没变,只是每个单元扩容了记忆的容量。

此外,这种框架可以使用多头模型,头与头之间没有记忆混合,因此可以充分并行,可以提升并行能力。

高级版:xLSTM 大模型

Cover 定理

Cover 定理:它及衍生的高维空间中非线性映射理论是现代大模型设计的重要理论依据之一。尤其是在深度学习和大规模神经网络的设计中,直到了关键的作用。

大模型中,激活函数通过非线性变换将数据映射到高维空间,使得模型可以捕捉复杂的模式和特征,增强模型的表达能力。深度网络在权重矩阵和激活函数共同作用,将输入数据逐步映射到越来越高的维度。这使得在低维空间难以分离的模式在高维空间国变得线性可分。Transformer 模型就是通过多头注意力机制在高维空间中进行并行处理,使得不同位置的特征可以相互影响和结合,从而提高了模型的性能。

Cover 定理为这些设计提供了理论支持,解释了为什么通过高维空间国的非线性映射可以提高模型的性能。

核心模块和工作原理

它做了以下的事:

  1. 非线性总结(压缩信息):通过残差块在高维空间中对历史信息进行非线性总结,使得不同的历史或上下文信息更容易分离。
  2. 线性映射回原始空间:完成高维空间中的处理后,再将数据线性映射回原始空间。这一过程利用了高维空间中的优势,使得模型可以更好地分离和记忆历史信息。

而具体的长维,其结构如下:

左侧可以看成 sLSTM,右侧则可以看成:mLSTM。其输入方向为,从下往上输入。

左边是先在原始空间中总结信息(sLSTM),然后映射到高维空间,再返回原始空间。可以看到,有一个倒梯形矩阵用于升维,处理后再降维。而右边是先映射到高维空间,总结信息后再返回原始空间。输入直接上投影,再使用 mLSTM 处理,然后再降维。

关于为啥,左边使用 sLSTM,而右边使用 mLSTM:高维空间中的记忆容量更大,所以使用矩阵化记忆单元的 mLSTM 更合适,而在低维空间处理 sLSTM 更合适。

以下是两个模块的详细设计:

  • PF=3/4 和 PF=4/3:投影因子,用于将输入维度缩小或扩大为原来的 PF 倍。
  • GN:组归一化。在每一组内进行归一化,有助于加速训练和提高模型稳定性,特别是在小批量(batch)训练时。
  • Swish:一种平滑的非线性激活函数,可以帮助模型学习到更复杂的模式。
  • Conv 4: 卷积层,卷积核大小为 4,提取局部特征。
  • LN:层归一化,帮助稳定和加速训练过程。
  • NH=4:表示有 4 个头。此外,将输入块,使用块对角线结构进行线性变换,有助于捕捉局部相关性。

  • PF=1/2 和 PF=2:投影因子。前者将输入维度缩小一半,后者将输入维度扩大 2 倍。
  • LSkip:类似于残差连接,可以帮助梯度更好地传递,防止梯度消失和爆炸。这里相当于有两种跳线残差。
  • q,k,v:从输入中生成,用于计算注意力权重和进行信息检索。
  • BS=4:块大小为 4 的块对角投影矩阵。

整体上都是充分利用了残差堆叠结构,层归一化技术等稳定网络,通过升降维度实现空间变换,激活函数非线性变换,然后利用 LSTM 进行记忆混合,或者说时序上的选择性自力机制计算,采用多头和块对角模式实现并行处理。

与 Transformer 的对比

有了这两种基本构建模块,通过堆叠增加模型的深度,可以逐层提取更高层次的特征。最终,整个堆叠结构作为一个端到端的模型进行训练。

同时,Transformer 能干的,xLSTM 也可以干,但是 xLSTM 有更加明确的逻辑结构,有数据公式的严密推导,效率更高。

与 Transformer 不同,xLSTM 在计算复杂度与内存复杂序上随着序列长度呈再发关系。由于 xLSTM 有记忆压缩性,很适合在工业应用和边缘设备上实现。

适用的场景

  • sLSTM(无法并行化):需要高精度和复杂特征提取的任务,计算资源充足且不需要并行化的应用,对延迟敏感但不受并行化限制的场景。
  • mLSTM(可以并行化):图像识别,视频处理等需要高效并行计算的任务,计算资源有限且需要高效利用内存的应用;需要在工业环境或边缘设备上部署的任务。

小结

xLSTM 的原理:借助指数门控混合记忆和新内存结构,LSTM 增强为 sLSTM 和 mLSTM。二者的结合构成了 xLSTM,进一步堆叠可以实现大模型化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苍穹外卖——day1

前后端联调 前端先传给nginx再传给后端服务器 反向代理 我们可以看到前端和后端的访问地址不一样,那么怎么实现进行访问的呢? 我们是通过一种反向代理技术来实现的 利用nginx反向代理来实现前后端联调 下面是如何在我们的idea项目中使用nginx反向代理…

HCIA--实验十四:二层链路聚合

一、实验内容 1.需求/要求 用两台S5700交换机做链路聚合。 二、实验过程 1.拓扑图: 2.步骤: 1.配置交换机SW1 int Eth-Trunk 1 创建链路聚合组 mode lacp-static 配置LACP模式 trunkport GigabitEthernet 0/0/10把接口0/0/10加入聚合组 trunkpo…

如何快速提升指定关键词排名到Google首页?

如果你是一个新网站,那么就没有任何捷径,老老实实一步步优化正路,当然,你的资源特别多的情况下,也并非不可能,但这点很多人都很难满足,所以要想快速把指定关键词的排名推到Google首页&#xff0…

LCS—最长公共子序列

最长公共子序列问题就是求出两个字符串的LCS长度,是一道非常经典的面试题目,因为它的解法是典型的二维动态规划。 比如输入 str1 "babcde", str2 "acbe",算法应该输出3,因为 str1 和 str2 的最长公共子序列…

如何构建大数据治理平台,助力企业数据决策

建设背景 (1)什么是数据资产 资产由企业及组织拥有和控制,能够提供增值服务、带来经济利益的重要资源。 资产不但需要管理, 更需要运营。 (2)数据资产运营中的问题 数据资产运营中存在的问题主要包括以下…

【游戏杂谈】关于靠谱及不靠谱的游戏立项方式探讨

其他好内容推荐: 游戏二次创意算抄袭? - 游戏干饭之家 格斗游戏:一个伟大而古老的游戏类型 - 游戏干饭之家 游戏行业研究生和有两三年工作本科生谁更香? - 游戏干饭之家 立项一直是大部分公司和个人的难点,关于靠谱…

【MySQL】了解并操作MySQL的缓存配置与信息

目录 一、查看缓存配置 二、查看缓存信息 查询MySQL的缓存相关信息,一般我们用两个命令: show variables like %query_cache%; show status like %qcache%; 一、查看缓存配置 查看缓存配置的相关的系统变量变量,返回给我们服务器缓存的配置…

2024年危险化学品生产单位安全生产管理人员证考试题库及危险化学品生产单位安全生产管理人员试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位安全生产管理人员证考试题库及危险化学品生产单位安全生产管理人员试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局&a…

cgdb对应vs中的调试代码——Linux代码调试

目录 打断点和删除断点: 删除断点: 运行代码:​编辑 监视: 补充:​编辑 对于程序员来说调试代码是个非常重要的工具,bug和调试类比孙悟空和如来,当我们打不过bug时就只能成为孙悟空口中的玉…

一层潮二层吵三层太低顶层又太高,挑到最后最后可选的只有:贵

1层太潮不想买,2层太吵不想要 3层嫌低,顶层怕高 带4的不好听,18层又晦气 剩下的楼层合心意,可就是钱包不乐意 如果真的有十全十美的房子 那唯一的缺点就是:贵!贵!!贵&#xff0…

工商业光伏管理系统:提供16个流程全方位管理

为了确保光伏项目的顺利实施与高效运行,一套完善的工商业光伏管理系统显得尤为重要。该系统通过精细化的流程控制,覆盖了从初步沟通到并网运行的每一个环节,实现了项目的全方位管理。 一、初步沟通 在这一阶段,企业与光伏服务提供…

哨兵机制Sentinel

哨兵机制Sentinel 主从复制:读写分离,多读少写,单点故障(主机宕机,从机不能自动切换),负载压力(客户端请求,并发),数据集中存储(主从…

k8s 容忍和污点

文章目录 Taint作用在节点上,能够使节点排斥一类特定的Pod,也就是不能“兼容”该节点的污点的Pod。对应的Toleration作用在Pod上,意为容忍,也就是可以兼容某类污点。 给节点增加一个Taint也很简单,直接使用kubectl ta…

Day23_0.1基础学习MATLAB学习小技巧总结(23)——句柄图形

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目:《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是…

【区块链通用服务平台及组件】信息数据流转验真技术研究项目 | FISCO BCOS应用案例

在日常工作中,相关系统每天会产生大量数据,系统之间有多种模式数据交互方式,数据监管工作量巨大,急需 数据追溯定位工具来辅助监管;数据在生产过程中经常会出现采集、提交、修改、删除等操作,需要对数据变更…

【软件】Rhythmbox播放器调节音量

Rhythmbox播放器调节音量 零、起因 最近换了Ubuntu系统,在写代码时想听歌,故使用Rhythmbox播放器播放一些mp3文件,但同时又要看教程,希望音乐声音小一点,但是找来找去都没有发现Rhythmbox有调音量的地方,…

Linux 之 Nginx 下载/安装

下载 下载地址 nginx: download 安装 在线安装 配置新的yum源 # 切换到yum源目录 cd /etc/yum.repos.d/# 创建yum源文件 touch nginx.repo# 配置nginx.repo文件内容 vim nginx.reponginx.repo 文件内容 namenginx repo baseurlhttp://nginx.org/packages/centos/$releas…

Kubernetes从零到精通(08-工作负载-DaemonSet)

DaemonSet示例 DaemonSet是Kubernetes中的一种工作负载类型,专门用来确保集群中的每个(或指定的)节点上都运行一个Pod实例。它非常适用于需要在集群所有节点上提供服务的场景,比如日志收集、监控代理、或者网络插件。 以下是Daemo…

MS5612M_ 2.7V 到 5.5V、 12Bit、两通道数模转换器

产品简述 MS5612M 是一款 12bit 两通道输出的电压型 DAC ,接口采用 三线串口模式,可以兼容 TMS320 、 SPI 、 QSPI 和 Microwire 串 口。 MS5612M 数据有 16bit ,包括控制字节,和 12bitDAC 数据。 MS5612M 电源范围是 2.7V 到…

NIDS——suricata(一)

一、基于流量的入侵检测系统 1、基于主机的入侵检测系统——HIDS (1)功能 ①通过监控和分析系统日志、应用程序日志和安全日志来识别异常活动和潜在威胁。 ②通过跟踪分析系统上的命令执行和系统调用来检查是否存在恶意命令执行或不正常的系统操作。…