首页 > 编程语言 >xLSTM——解析扩展长短期记忆的网络算法与应用

xLSTM——解析扩展长短期记忆的网络算法与应用

时间:2024-05-25 21:58:49浏览次数:26  
标签:架构 模型 长短期 算法 xLSTM 内存 LSTM 门控

1.概述

二十多年来, 塞普·霍赫赖特 创举 长短期记忆 (LSTM) 架构在许多深度学习突破和实际应用中发挥了重要作用。从生成自然语言到为语音识别系统提供动力,LSTM 一直是人工智能革命背后的驱动力。

然而,即使是 LSTM 的创建者也认识到它们固有的局限性,导致它们无法充分发挥潜力。无法修改存储的信息、内存容量有限以及缺乏并行化等缺点为 Transformer 和其他模型的兴起铺平了道路,以超越 LSTM 来完成更复杂的语言任务。

但在最近的一项进展中,Hochreiter 和他的团队 NXAI 引入了一个新的变体,称为 扩展 LSTM (xLSTM) 解决这些长期存在的问题。最近的一篇研究论文中提出,xLSTM 建立在使 LSTM 如此强大的基本思想之上,同时通过架构创新克服了其关键弱点。

xLSTM 的核心是两个新颖的组件:指数门控和增强型记忆结构。指数门控可以更灵活地控制信息流,使 xLSTM 能够在遇到新上下文时有效地修改决策。同时,与传统标量 LSTM 相比,矩阵存储器的引入大大增加了存储容量。

但增强功能还不止于此。通过利用从大型语言模型借用的技术(例如并行性和块的残差堆叠),xLSTM 可以有效地扩展到数十亿个参数。这释放了它们对极长序列和上下文窗口进行建模的潜力——这是复杂语言理解的关键功能。

Hochreiter 最新创作的意义是巨大的。想象一下虚拟助手可以在长达数小时的对话中可靠地跟踪上下文。或者在广泛的数据训练后能够更稳健地推广到新领域的语言模型。应用程序遍及 LSTM 产生影响的各个领域——聊天机器人、翻译、语音接口、程序分析等等——但现在 xLSTM 的突破性功能得到了增强。

在这份深入的技术指南中,我们将深入了解 xLSTM 的架构细节,评估其新颖的组件,如标量和矩阵 LSTM、指数门控机制、内存结构等。您将从实验结果中获得见解,这些实验结果展示了 xLSTM 相对于最先进的架构(例如 Transformer 和最新的循环模型)的令人印象深刻的性能提升。

2. LSTM 的局限性

在我们深入了解 xLSTM 的世界之前,有必要了解传统 LSTM 架构所面临的限制。这些限制一直是 xLSTM 和其他替代方法发展背后的驱动力。

  1. 无法修改存储决策:LSTM 的主要限制之一是当遇到更相似的向量时,它很难修改存储的值。这可能会导致需要动态更新存储信息的任务性能不佳。
  2. 存储容量有限:LSTM 将信息压缩为标量单元状态,这可能会限制它们有效存储和检索复杂数据模式的能力,特别是在处理稀有标记或远程依赖性时。
  3. 缺乏 并行性: LSTM 中的内存混合机制涉及时间步之间的隐藏连接,强制顺序处理,阻碍计算的并行化并限制可扩展性。

这些限制为 Transformer 和其他在某些方面超越 LSTM 的架构的出现铺平了道路,特别是在扩展到更大的模型时。

3.xLSTM 架构

扩展 LSTM (xLSTM) 系列
扩展 LSTM (xLSTM) 系列

xLSTM 的核心在于对传统 LSTM 框架的两个主要修改:指数门控和新颖的内存结构。这些增强功能引入了 LSTM 的两种新变体,称为 sLSTM(标量 LSTM)和 mLSTM(矩阵 LSTM)。

  • . 长短期记忆网络:具有指数门控和内存混合的标量 LSTM
    • 指数门控:sLSTM 结合了输入门和遗忘门的指数激活函数,可以更灵活地控制信息流。
    • 标准化和稳定化:为了防止数值不稳定,sLSTM 引入了标准化器状态,​​用于跟踪输入门和未来忘记门的乘积。
    • 内存混合:sLSTM 支持多个存储单元,并允许通过循环连接进行内存混合,从而实现复杂模式的提取和状态跟踪功能。
  • . 毫升STM:具有增强存储能力的 Matrix LSTM
    • 矩阵内存:mLSTM 使用矩阵存储器代替标量存储器单元,增加其存储容量并能够更有效地检索信息。
    • 协方差更新规则:受双向关联存储器 (BAM) 启发,mLSTM 采用协方差更新规则来高效存储和检索键值对。
    • 并行性:通过放弃内存混合,mLSTM 实现了完全并行性,从而能够在现代硬件加速器上进行高效计算。

sLSTM 和 mLSTM 这两个变体可以集成到残差块架构中,形成 xLSTM 块。通过剩余堆叠这些 xLSTM 块,研究人员可以构建针对特定任务和应用领域定制的强大 xLSTM 架构。

4.数学

传统 LSTM:

最初的 LSTM 架构引入了恒定误差轮播和门控机制来克服循环神经网络中的梯度消失问题。

LSTM 中的重复模块

LSTM 中的重复模块 – 来源

LSTM 存储单元更新由以下方程控制:

细胞状态更新:ct = ft ⊙ ct-1 + it ⊙ zt

隐藏状态更新: ht = ot ⊙ tanh(ct)

地点:

相关文章

  • 机器学习-KNN算法
    一、KNN算法原理与简单实现1、KNN算法的概念K最近邻(k-NearestNeighbor,KNN)分类算法,是最简单的机器学习算法之一,涉及高等数学知识近乎为0,虽然它简单,但效果很好,是入门机器学习的首选算法。但很多教程只是一笔带过,在这里通过该算法,我们可以学习到在机器学习中所涉及的其他知识......
  • 文心一言 VS 讯飞星火 VS chatgpt (266)-- 算法导论20.2 1题
    一、写出PROTO-vEB-MAXIMUM和PROTO-vEB-PREDECESSOR过程的伪代码。如果要写代码,请用go语言。文心一言:首先,让我们明确一下PROTO-vEB-MAXIMUM和PROTO-vEB-PREDECESSOR这两个过程是在介绍vanEmdeBoas树(简称vEB树)数据结构时使用的。vEB树是一种用于支持快速查找、插......
  • 协同过滤算法要点和难点具体应用
    协同过滤算法是一种在推荐系统中广泛使用的算法,它的基本原理是通过分析不同用户的历史行为来找到用户间的相似性,从而进行个性化推荐。协同过滤算法主要分为基于用户的协同过滤和基于物品的协同过滤两种。基于用户的协同过滤是通过计算不同用户的用户交互记录(如评分、浏览、收......
  • 代码随想录算法训练营第三十七天|435. 无重叠区间、763.划分字母区间、56. 合并区间、
    435.无重叠区间文档讲解:代码随想录题目链接:.-力扣(LeetCode)本道题与上个题目相似,都是求重叠区间统计重叠区间的个数,减去重叠区间的个数就是无重叠区间了主要就是为了让区间尽可能的重叠。(为什么)按照左边界排序①如果i的左边界大于等于上一个区间的右边界,就没有重叠......
  • python爬虫js逆向(标准算法加密)
    在爬取某些网站时,可能会遇到一些参数或头部信息进行字符串加密、数据加密或字符串编码等问题,导致不能正确获取到我们想要的数据。step1观察是否有加密通过正常方法请求网页,并且也加了请求头和请求参数伪装浏览器,发现返回的状态码还是4xx,那么就要考虑到是否是请求头或者请求......
  • 2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线
    问题背景:        问题四:根据实际情况,现需要扩大生产规模,将生产线每天的运行时间从8小时增加到24小时不间断生产,考虑生产线与操作人员的搭配,制定最佳的操作人员排班方案,要求满足以下条件:(1)各操作人员做五休二,尽量连休2天;(2)各操作人员每班连续工作8小时;(......
  • MMM全链接聚类算法实现
    使用时,仅需修改TODO下描述的字段即可,其他无需改动。#include<bits/stdc++.h>//TODO:根据需求分别修改任务数、每个模块内最大任务数、模块数、步进长度#defineTASK_NUM(8)#defineMAX_TASK_NUM(4)#defineMODULE_NUM(2)#defineGRANULARITY(0.5)......
  • 【数据结构与算法 | 基础篇】单向链表模拟栈
    1.前言前文我们先后用单向循环链表,环形数组来模拟了队列.队列的特点是先进先出.队头移除元素,队尾添加元素.所以需要两个指针控制.本文我们接下来提及如果和单向链表来模拟栈.栈的特点是后进先出.在栈顶压栈或弹栈.另一侧不动的是栈底.我们可以初始化哨兵节点,自哨兵节......
  • 【数据结构与算法 | 基础篇】数组模拟栈
    1.前言前文我们刚提及了如何用单向链表来模拟栈.我们还可以用数组来模拟栈.使用栈顶指针top来进行栈顶的操作.2.数组模拟栈(1).栈接口publicinterfacestack<E>{//压栈booleanpush(Evalue);//弹栈,栈非空返回栈顶元素Epop();//返回栈......
  • c++实现简单算法【1】
    1.交换两数inta=2,b=3;inttemp=a;a=b;b=a; 函数包装指针#include<stdio.h>#include<string.h>//#include<iostream>//usingnamespacestd;voidswap(int*a,int*b){ inttemp=*a; *a=*b;//修改a指针指向的地址的对应的变量的值,地址不变 *b=temp;}int......