克雷西 发自 凹非寺
量子位 | 公众号 QbitAI
只有4k窗口长度的大模型,也能阅读大段文本了!
普林斯顿的华人博士生的一项最新成果,成功“突破”了大模型窗口长度的限制。
不仅能回答各种问题,而且整个实现的过程 全靠prompt就能完成,不需要任何的额外训练 。
研究团队创建了一种名为MemWalker的树形记忆策略,可以突破模型本身的窗口长度限制。
测试过程中,模型阅读的最长文本包含了1.2万+token,成绩相比LongChat大幅提高。
相比于相似的TreeIndex,MemWalker可以进行推理并回答任何问题,而不是只做概括。
MemWalker的研发利用到了“分而治之”的思想,就此有网友这样评论:
每次我们让大模型的思考过程更像人类,它们的表现就会越好
那么,具体什么是树形记忆策略,又是如何用有限的窗口长度阅读长文本的呢?
一个窗口不够,就多开几个
模型上,MemWalker使用Stable Beluga 2作为基本模型,它是Llama 2-70B经过指令调优得到的。
在选择该模型之前,开发者对比了其与原始Llama 2的表现,并最终确定选用。
就像MemWalker这个名字一样,它的工作过程就像记忆流在行走。
具体来看,大致分为 记忆树构建 和 导航检索 两个阶段。
构建记忆树时,长文本会被分割成多个小段 (seg1-6) ,并由大模型分别针对每一段做出总结,得到“ 叶子节点 ” (leaf nodes,summ1-6) 。
分割时,每段的长度越长,层级就会越少,有利于后续检索,但其本身过长又会导致准确度下降,因此需要综合考虑确定每段长度。
作者认为,每一段合理的长度是500-2000token,而实验中使用的为1000token。
然后,模型递归地对这些叶子节点的内容再次进行总结,形成“ 非叶节点 ” (non-leaf nodes,summ7-8) 。
二者的另一个区别是,叶子节点包含了 原始信息 ,非叶节点只有 概括得到的二级信息 。
作用上,非叶节点用于导航定位答案所在的叶子节点,而叶子节点则用于推理出答案。
其中的非叶节点可以有多个层级,模型逐步进行总结概括,直到得到“根节点”,形成完整的树形结构。
记忆树建立完毕后,就可以进入导航检索阶段来生成答案了。
这一过程中,模型从根节点开始,逐一读取下 一 级子节点的内容,然后推理出应该进入这个节点还是返回。
决定进入这个节点之后,再次重复这样的过程,直到读取到叶节点。如果叶节点的内容合适则生成答案,否则返回。
为了确保答案的完整性,这个过程的结束条件并非发现了一个合适的叶节点,而是模型认为得到了完整答案,或者达到最大步数。
导航过程中,如果模型发现进入了错误的路径,还可以导航回退。
此外,MemWalker中还引入了 工作记忆机制 来来提高准确度。
该机制会将已经访问过的节点内容加入到当前内容的上下文中。
当模型进入一个新节点时,当前节点内容都会被加入到记忆中。
这一机制让模型在每一步都可以利用访问过的节点内容,避免重要信息的丢失。
实验结果显示,工作记忆机制可以将MemWalker的准确率提升10%左右。
而且,上面所说的过程只依靠prompt就能完成,不需要进行额外的训练。
理论上,只要有足够的算力,MemWalker可以阅读无限长的文本。
不过,记忆树构建时的 时间和空间复杂度随着文本长度的增长是呈指数型 的。
作者简介
论文第一作者是普林斯顿大学NLP实验室华人博士生Howard Chen。
清华姚班校友陈丹琦是Howard的导师,她今年在ACL上的学术报告也与搜索有关。
这项成果是Howard在Meta实习期间完成的,Meta AI实验室的Ramakanth Pasunuru,Jason Weston和Asli Celikyilmaz三位学者也参与了本项目。
论文地址: https://arxiv.org/abs/2310.05029
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态