HiPPO: Recurrent Memory with Optimal Polynomial Projections

news/2025/3/16 19:24:58/文章来源:https://www.cnblogs.com/MTandHJ/p/18233798

目录
  • Motivation
  • 代码

Gu A., Dao T., Ermon S., Rudra A. and Re C. HiPPO: Recurrent memory with optimal polynomial projections. NIPS, 2021.

看下最近很火的 Mamba 的前身. 本文其实主要介绍的是一个如何建模历史信息在正交基上的稀疏的变化情况.

Motivation

  • 对于一个函数 \(f(t) \in \mathbb{R}\) (如上图 (1)), 我们希望找到一个东西去记忆它. 需要注意的是, 我这里用的词是 '记忆' 而不是 '建模'. 这二者有些相似, 但是侧重点不一样:

    • 建模: 如果是一个建模问题, 那大概的思路就是通过一个模型 (如神经网络) 去拟合 \(f(t)\), 故而往往是一个 \(f(t)\) 一个模型;
    • 记忆: 给定过去的序列 \(f_1, f_2, \ldots\), 通过某种方式去 '压缩' 它. 毫无疑问, 最直接的记忆手段就是把过去的历史全部存起来, 但是其实这种方式或许是不那么优雅的 (当然这种方式也有成功的例子, 如 transformer). 故而 记忆 是动态的, 一个模型是可以应对多个 \(f(t)\) 的.
  • 下面我们先把视角放到连续的版本上去, 后面在介绍如何离散化. 故我们现在的目标是: **通过有限的单元去记忆 \(f_{\le t} := f(x)|_{x\le t}\).

  • 作者的思想其实很简单, 把 \(f_{\le t}\) 投影到 \(N\) 个正交基 \(P_k^{(t)}, k=0,1,\ldots, N-1\) 上, 然后保存在其上的系数:

    \[c_k(t) = \langle f_{\le t}, P_k^{(t)} \rangle_{\mu^{(t)}}, \quad k=0, 1, \ldots, N-1. \]

  • 其实我认为作者做出的最大的贡献就是正交基 \(P_k^{(t)}\) 随着时间 \(t\) 有规律的变化, 测度 \(\mu^{(t)}\) 随着时间 \(t\) 有规律的变化.

  • 让我们来先理解测度 \(\mu^{(t)}\) 的含义, 我们可以把它简单理解成一个概率分布, 我们假设 \(w(t, x)\) 为它的密度函数, 通过它可以描述过去时刻的重要性:

    • 短期均匀记忆 (Translated Legendre Measure):

      \[w(t, x) = \frac{1}{\theta} \mathbb{I}_{[t - \theta, t]}(x). \]

      它对过去 \(\theta\) 时间段赋予了相同的权重;
    • 指数衰减记忆 (Translated Laguerre Measure):

      \[w(t, x) = \left \{\begin{array}{ll}(t - x)^{\alpha} e^{x - t} & \text{if } x \le t, \\0 & \text{if } x > t.\end{array} \right. \]

      越久远的记忆, 衰减的越厉害, 它有一个问题, \(x < 0\) 的时候它也会有权重.
    • 长期均匀记忆 (Scaled Legendre Measure):

      \[w(t, x) = \frac{1}{t} \mathbb{I}_{[0, t]}. \]

      对过去的记忆统一进行均匀记忆.

  • 故, HiPPO 可以通过设计不同的测度 \(\mu^{(t)}\) 来反映不同的记忆方式, 虽然指数衰减记忆直觉上更符合, 但是实际中长期均匀记忆作者更为推荐.

  • 到此, 问题其实依旧非常严峻, \(c_k(t)\) 的表达式其实是比较困难 (对于我来说), 牛逼的是, 作者证明了对于上述的三种记忆方式, 大体上可以统一表示为:

    \[\tag{1} \frac{d}{d t} c(t) =Ac(t) + B f(t), \\ c(t) = [c_0(t), c_1(t), \ldots, c_{N-1}(t)]^T, \quad A \in \mathbb{R}^{N \times N}, \quad B \in \mathbb{R}^{N \times 1}. \]

  • 实际上 (1) 就定义了 \(c(t)\) 的变化过程, 描绘了测度 \(\mu^{(t)}\) 下最优的一种压缩模式. 我们可以通过一些离散方法来近似这个 ODE. Generalized Bilinear Transformation (GBT):

    • (1) 等价于

      \[c(t + \Delta t) - c(t) = \int_t^{t + \Delta t} Ac(s) + B f(s) \mathrm{d}s; \]

    • (2) 取近似点为 \((1 - \alpha) [Ac(t) + Bf(t)] + \alpha [Ac(t + \Delta t) + Bf(t + \Delta t)]\), 可得近似:

      \[c(t + \Delta t) - c(t) \approx \bigg\{ (1 - \alpha) [Ac(t) + Bf(t)] + \alpha [Ac(t + \Delta t) + Bf(t + \Delta t)] \bigg\} \Delta t, \]

      可得:

      \[\tag{2} c(t + \Delta t) \approx (I - \alpha \Delta t A)^{-1} \bigg\{\big(I + \Delta t (1 - \alpha)A\big) c(t)+ \Delta t (I - \alpha\Delta t A)^{-1}B f(t) \bigg\}. \]

    • \(\alpha = 0\) 即为 Eluer 近似, \(\alpha = 1\) 为 Backward Eluer 近似, \(\alpha = 1/2\) 为 Bilinear 近似.

  • 故而, 我们只需要算出 \(A, B\), 就可以迭代更新 \(c\) 了, 下面直接给出上述三种方式的 \(A, B\):

    • 短期均匀记忆 (Translated Legendre Measure):

    \[A_{nk} = -\frac{1}{\theta} \left \{\begin{array}{ll}(-1)^{n-k} (2n + 1) & \text{if } n \ge k, \\2n + 1 & \text{if } n \le k. \\\end{array} \right ., \\ B_n = \frac{1}{\theta}(2n + 1)(-1)^n. \]

    • 指数衰减记忆 (Translated Laguerre Measure):

    \[A_{nk} = \left \{\begin{array}{ll}-1 & \text{if } n \ge k, \\0 & \text{if } n < k,\end{array} \right ., \\ B_n = 1. \]

    • 长期均匀记忆 (Scaled Legendre Measure): 首先它的形式为:

    \[\frac{d}{dt} c(t) = -\frac{1}{t} A c(t) + \frac{1}{t} B f(t), \]

    其中

    \[A_{nk} = \left \{\begin{array}{ll}(2n + 1)^{1/2} (2k + 1)^{1/2} & \text{if } n > k, \\n + 1 & \text{if } n = k, \\0 & \text{if } n < k.\end{array} \right ., \\ B_n (2n + 1)^{1/2}. \]

  • OK, 现在让我们看看如何把这个记忆功能用到 RNN 中:

  • 如上图所示, 在更新 RNN 的状态 \(h_t\) 的时候, 除了 \(h_{t-1}, x_t\), 额外把系数 \(c_{t-1}\) 作为输入, 特别的 \(c\) 的信号来源是通过 \(\mathcal{L}_f\)\(h\) 压缩到 1 维实现的. 从这一点来看, 目前的 Hippo 设计的还是比较粗糙的?

  • 最后讲一下证明关键点:

    1. 对于上述的测度, 它的正交基是现成的 (有很好的求导的性质);
    2. 分布积分的求导和转换 \(\frac{\partial}{\partial t} g_n \rightarrow c_{n-1}, c_{n-3}, \ldots\) 的变换很巧妙.

代码

[official-code]

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储引擎及特点、约束条件、严格模式、基本字段类型(整型、浮点型、字符串、日期时间、枚举和集合)

【一】存储引擎在平常我们处理的文件格式有很多,并且针对不同的文件格式会有对应不同的存储方式和处理机制 针对不同的数据应该有对应不同的处理机制 存储引擎就是不同的处理机制。# 查看所有引擎 show engines;四种主要的存储引擎 (1)Innodb引擎是MySQL5.5版本之后的默认存…

sickos1.1-cms

sickos1.1-cms主机发现和nmap扫描 nmap -sn 192.68.56.0/24靶机ip:192.168.56.105 nmap -sT --min-rate 10000 192.168.56.105PORT STATE SERVICE 22/tcp open ssh 3128/tcp open squid-http 8080/tcp closed http-proxynmap -sT -sV -sC -O -p22,3128,8080 192.16…

自动化类级别前后置和函数级别前后置的区别

一、函数级别的前后置,格式如下: 二、类函数级别的前后置如下: 三、总结: 1、函数级别的用例执行一个用例时,都会执行一遍;类级别的前后置不管用例是多少个,只在执行用例时执行一次。 2、所以根据用例的需要,适当的选择是类级别的前后置还是函数级别的前置后。

Linux容器架构

1.Iaas:基础设施即服务 Infrastructure-as-a-Service Paas:平台即服务 Platform-as-a-Service Saas:软件即服务 Software-as-a-Service Caas:容器即服务 介于IAAS和PAAS IAAS,PAAS,SAAS这些服务,用于帮助人们更快实现目标(搭建环境,使用产品) 从左到右,人们需要管理与维护的地方…

内网穿透教程

内网穿透教程 本文介绍如何使用 FRP(Fast Reverse Proxy)工具实现内网穿透,包括配置 Azure 公网 IP、安装 Docker 和 FRP,以及在内网服务器上配置和运行 FRP 客户端。 一、配置公网 IP 1. 申请 Azure 公网 IP登录到 Azure 门户。 创建一个新的虚拟机实例,建议使用1G内存的…

CFAR检测

目标检测:1幅海上SAR图像和1幅近海光学图像,选择其中一幅检测出图像上的舰船(包括停靠码头)目标。 检测步骤图像裁剪:把原图裁剪成 448 * 640 的 patch,检测每个小 patch 中的舰船目标。读取图像:读取每个图像,并将其转换为灰度图。为了方便处理边缘区域,用补零的方式对…

内网穿透详细教程

内网穿透详细教程 本文介绍如何使用 FRP(Fast Reverse Proxy)工具实现内网穿透,包括配置 Azure 公网 IP、安装 Docker 和 FRP,以及在内网服务器上配置和运行 FRP 客户端。 一、配置公网 IP 1. 申请 Azure 公网 IP登录到 Azure 门户。 创建一个新的虚拟机实例,建议使用1G内…

兴达易控232自由转profinet网关接扫码枪配置及测试案例

232自由口转Profinet网关(XD-PNR100/300)的主要功能就是将具有RS232接口的设备(如扫码枪、打印机、传感器等)接入到Profinet网络中,从而实现了传统设备与现代化工业以太网之间的无缝通信和数据交换。兴达易控232自由口转profinet网关接扫码枪配置及测试案例 232自由口转Pr…

杭州出租车行驶轨迹数据空间时间可视化分析|附代码数据

原文链接:http://tecdat.cn/?p=7324 最近我们被客户要求撰写关于出租车的研究报告,包括一些图形和统计输出 城市化带来的道路拥堵、出行耗时长等交通问题给交管部门带来了巨大的挑战 ▼ 通过安装在出租车上的GPS设备,可以采集到大量的轨迹数据,从而帮助我们分析人们出行信…

【专题】2024客户端游戏市场营销发展报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p=36402 原文出处:拓端数据部落公众号 报告合集显示,中国客户端游戏市场在2023年创新高,达到662.83亿元,表明精品化和跨端生态趋势对市场的推动作用。报告合集强调客户端游戏的独特优势,如精品内容、视听体验和操作反馈等,促进了市场稳定增…

BD202404 110串

百度之星一场,t4 题目链接: 对于这种连续状态限制的字符串方案数,首先考虑dp, 首先定义好每个状态方便转移,0状态是结尾为0,1状态是结尾1个连续1,2状态是结尾两个连续1,有以下关系if(s[i] == 1) {if(j > 0) dp[i][j][0] = (dp[i][j][0] + dp[i - 1][j - 1][0] + dp[…

Vue 3 Teleport:掌控渲染的艺术

title: Vue 3 Teleport:掌控渲染的艺术 date: 2024/6/5 updated: 2024/6/5 description: 这篇文章介绍了Vue3框架中的一个创新特性——Teleport,它允许开发者将组件内容投送到文档对象模型(DOM)中的任意位置,即使这个位置在组件的挂载点之外。Teleport旨在解决某些特定场景…