某乎上有很多关于long context的回答,多数是kimi的广告软文。没时间写细节,直接给大家分享主要长文本的关键文献吧。不要光看不点赞,点赞才是分享的动力。
这里说的长上下文指的是纯模型输入的情况,基于RAG的方式也能部分解决问题,但是在类似“大海捞针”的实验中一般表现不佳
长文本大模型的关键技术主要是相对位置嵌入、旋转位置嵌入、位置插值、线性偏置等。
1. long context的核心是长文语义和逻辑的一致性,不是KV cache或者Inference速度。就好比博士去写100多页的论文(相对于小学生写几百字的作文)前后是要逻辑自洽的,时间不是最大的影响因素。
下面通过几篇文献来了解长文本的关键技术。(附论文地址)
1. 旋转位置嵌入类
1.1 《RoFormer: Enhanced Transformer with Rotary Position Embedding》
旋转位置嵌入(RoPE)使用旋转矩阵对绝对位置进行编码,同时在自注意力公式中结合了明确的相对位置依赖性。旋转位置嵌入保持了序列长度的灵活性、随相对距离的增加而衰减的token间依赖性,以及为线性自注意力配备的相对位置编码的能力。
https://arxiv.org/abs/2104.0986
旋转位置嵌入(RoPE)示意图
https://arxiv.org/abs/2402.1375
LongRoPE示意图
2. 相对位置嵌入类
2.1《A Length-Extrapolatable Transformer》
https://arxiv.org/abs/2212.1055
Blockwise注意力示意图
3. 线性偏置方法
3.1《Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation》
4. 长文本训练方法
4.1 《YaRN: Efficient Context Window Extension of Large Language Models》
https://arxiv.org/abs/2309.00071
4.2 《Extending Context Window of Large Language Models via Positional Interpolation》
https://arxiv.org/abs/2306.15595
4.3 《PoSE: Efficient Context Window Extension of LLMs via Positional Skip-wise Training》
https://arxiv.org/abs/2309.1040
Skip-wise方法示意图
以上就是本次分享的全部,长文本的处理是自然语言处理领域的一个重要挑战,主要因为需要处理的信息量大和保持上下文的连贯性。上述提到的关键技术都是在尝试以不同的方式解决长文本处理中遇到的挑战。从旋转位置嵌入的灵活性和序列长度适应能力,到位置插值在上下文窗口扩展中的应用,再到线性偏置方法的创新应用,这些技术的发展都显示了长文本模型在处理大规模数据时的潜力和效率。
