54 lines
2.6 KiB
Markdown
54 lines
2.6 KiB
Markdown
---
|
||
title: "长度外推 (Length Extrapolation)"
|
||
created: 2026-05-14
|
||
updated: 2026-05-14
|
||
type: concept
|
||
tags: [llm, attention, position-encoding, generalization]
|
||
sources: ["https://arxiv.org/abs/2309.17453", "https://arxiv.org/abs/2104.09864", "https://arxiv.org/abs/2108.12409"]
|
||
---
|
||
|
||
# 长度外推 (Length Extrapolation)
|
||
|
||
## 定义
|
||
|
||
长度外推(Length Extrapolation)是 LLM 研究中的一个核心问题:**让在较短文本上训练的模型能够在测试时处理远超训练窗口长度的输入序列。**
|
||
|
||
与上下文窗口扩展(Context Window Extension)不同,长度外推的目标不是扩大一次前向传播能处理的 token 数量,而是让模型在序列长度超出预训练窗口后仍保持性能稳定。
|
||
|
||
## 与其他方向的关系
|
||
|
||
| 方向 | 目标 | 代表工作 |
|
||
|------|------|---------|
|
||
| **长度外推** | 处理超出训练长度的输入 | [[streaming-llm|StreamingLLM]], ALiBi |
|
||
| 上下文窗口扩展 | 扩大单次前向的窗口 | RoPE 插值, FlashAttention |
|
||
| 长文本利用优化 | 更好地理解和利用长上下文 | LongBench, Lost-in-the-Middle |
|
||
|
||
这三个方向**互相正交**——一个方向的进展不自动解决其他方向的问题。
|
||
|
||
## 主要方法
|
||
|
||
### 相对位置编码
|
||
- **RoPE** (Su et al., 2021):通过旋转 query 和 key 编码相对位置。理论上有外推能力,但实证表明在超出训练窗口后性能下降
|
||
- **ALiBi** (Press et al., 2022):基于距离偏置注意力分数。外推能力优于 RoPE,但仍会在序列极长时崩溃
|
||
|
||
### 基于注意力机制的外推
|
||
- **[[streaming-llm|StreamingLLM]]** (Xiao et al., 2024):保留 [[attention-sinks|注意力汇]] + 最近 Token 的滑动窗口 → 首次实现**无限长**外推(验证至 4M Token)
|
||
- **Window Attention**:仅保留最近 Token → 初始 Token 被逐出后崩溃
|
||
|
||
### 位置插值
|
||
- 通过缩放或插值 RoPE 频率来扩展上下文窗口,但仍是**有限**扩展
|
||
|
||
## 关键挑战
|
||
|
||
1. **SoftMax 归一化约束**:注意力分数必须和为 1,迫使模型将多余注意力"倾倒"至某些 token
|
||
2. **Attention Sink 依赖性**:初始 token 承担了注意力汇的角色,一旦被逐出即崩溃
|
||
3. **位置编码泛化**:训练中未见过的位置索引在推理时表现不可预测
|
||
|
||
## 相关概念
|
||
|
||
- [[streaming-llm|StreamingLLM]] — 无限长外推的实用方案
|
||
- [[attention-sinks|注意力汇]] — 外推失败的关键机制
|
||
- [[window-attention|窗口注意力]] — 朴素外推方案的失败案例
|
||
- [[rotary-position-embedding|RoPE]] — 主流位置编码
|
||
- [[kv-cache-bottleneck|KV 缓存瓶颈]] — 长序列的内存挑战
|