20260617:目前有914 页

This commit is contained in:
2026-06-17 15:02:40 +08:00
parent e96b955fda
commit 91fac5b6fc
423 changed files with 20687 additions and 34 deletions

View File

@@ -0,0 +1,57 @@
---
title: "Position ID Discrepancy (位置 ID 偏差)"
created: 2025-06-02
updated: 2025-06-02
type: concept
tags: [position-encoding, multi-turn-reasoning, training]
sources: ["[[goru-one-pass-to-reason-2025]]"]
---
# Position ID Discrepancy
> 在多轮推理训练中,回复 token 在"生成时刻"与"作为上下文"两种场景下的位置不一致问题。
## 问题
考虑第 i 轮对话:
**生成时刻**(训练时的前向传播):
```
... hi-1, ri-1, hi, [ti, ri] ← ri 跟在 ti 后面
```
ri 的绝对位置:`length(H_{<i}) + |hi| + |ti|`
**作为上下文时刻**(后续轮次训练时):
```
... hi-1, ri-1, hi, ri, hi+1, ... ← ri 直接跟在 hi 后面ti 已丢弃
```
ri 的绝对位置:`length(H_{<i}) + |hi|`
同一 token 在不同场景中有不同的位置编码 → 如果不加处理,模型学到的位置关系是错的。
## 根本原因
这是 [[multi-turn-reasoning|多轮推理]] 的特有现象:
- 普通多轮对话没有推理 token → ri 的位置始终一致
- 推理对话中 ti 被丢弃 → ri 的位置在两种场景中不同
## One-Pass to Reason 的解决方案
通过 [[token-duplication]] + 策略性位置 ID 分配:
```python
s_ti = s_ri_in = e_hi + 1 # ti 和 ri_in 共享同一位置起点
s_ri_out = e_ti + 1 # ri_out 从 ti 之后开始(模拟生成场景)
s_h_{i+1} = e_ri_in + 1 # 下一轮从 ri_in 后开始(模拟上下文场景)
```
这个分配方案确保:
- ri_out 与 ti 的相对位置关系正确(模拟生成)
- 后续轮次看到的位置关系正确ri_in 在 hi 后,模拟上下文)
## 相关
- [[token-duplication]]
- [[multi-turn-reasoning]]
- [[position-encoding]]
- [[goru-one-pass-to-reason-2025|One-Pass to Reason 论文]]