Next Concept Prediction in Discrete Latent Space Leads to Stronger Language Models

LUMIA Lab (SJTU) × Shanghai AI Lab × 清华 · Liu / Song / Wang / Lamb / Lin et al. · 2026-02-10 · arXiv:2602.08984
关键词: ConceptLM · Next Concept Prediction · Vector Quantization · Product Quantization · 概念词表 · pretraining objective

速读卡片 (TL;DR)

一句话:在 token Transformer 的中间插一个"概念层":把每 k 个相邻 token 的 hidden states 经 mean-pool 得到一个"概念向量",用 product VQ 把它量化成离散 codebook entry,然后让模型先预测下一个概念 (NCP),再把预测出的概念向量加回到 token hidden 上去做 NTP。三种 loss (NTP + NCP + VQ) 同时训。

37%
同等 PPL 所需参数减少
24%
同等 PPL 所需 token 减少
k=4, S=heads, N=64
主实验 VQ 配置

立场:这不是又一个"潜空间推理"或"句子级模型",而是把 NTP 的损失结构改造成 NTP+NCP 双重监督的 pretraining-objective 论文。NCP 单独不够 (会掉点),只有和 NTP+VQ 一起才赚——本质是给原始 NTP 加了一个"先想 token-span 的语义、再吐 token"的归纳偏置。


1 · 动机:为什么要在 token 之上再造一层"概念"

1.1 历史脉络:NTP 已经吃饱了它能吃的红利

从 GPT-2 / GPT-3 到 Llama-3 / Qwen3,LLM 走的是同一条路: 纯 Next Token Prediction,词表是 BPE 子词,loss 是 cross-entropy。这条路把 scaling law 推到了万亿参数,但作者引用 LeCun 2022 的论点:低层级 (low-level) 的预测目标一旦逼近 token 信息熵的下限,继续 scale model 只能改善常数项,不能改变曲率。

而别的领域早就跨越了"原始信号"这一关:

语言侧也有零碎的尝试 (Hourglass / ContextLM / BLT / H-Net / MegaByte / MTP),但要么是结构上压缩 (改 tokenizer / 改 chunk),要么仍然死守 next-token loss。"专门给语言模型设计一个高层级的自监督预训练目标"还是空白。这就是 NCP 想填的位置。

1.2 别的方案为什么不够 — 一张比较表

路线代表预测目标本质问题
Multi-Token PredictionGloeckle 2024 / DeepSeek-V3 MTP同时预测下 m 个 token仍在 token 空间,组合复杂度爆炸,3B 以下不显收益
结构化压缩 (patch-level)MegaByte, BLT, H-Net预测下一个 patch (字节聚合)核心 loss 还是 next-byte/token CE,只是把序列变短
句子级潜空间LCM (Meta)预测下一句 SONAR embedding粒度太粗 + embedding 是冻住的外部信号,无法和 token loss 联合优化
Continuous latent reasoningCoconut (Hao 2025), Token Assorted (Su 2025)把 CoT 中间步骤换成连续 hidden vector是 inference-time 推理技巧,不是 pretraining objective;连续空间无离散监督信号
Hierarchical TransformerHourglass, ContextLM压缩 → 上层 transformer → 解压有"概念层"但没有显式概念词表,信号是 implicit 的
NCP / ConceptLM 👈本文预测下一个离散概念向量,再条件生成 token

1.3 为什么这事不平凡:三个工程/理论上的暗坑

把 "high-level prediction" 这个口号落到 LLM pretraining 上,有三件事拦路:

(a) 概念词表从哪来? 视觉里 VQ-GAN 可以拿一个固定 codebook (因为图像有 reconstruction 监督),语言里没有 reconstruction loss;如果 codebook 仅靠 NCP loss 训,容易 codebook collapse (作者在附录 E.3 报告过:vanilla VQ + 浅插入位置就崩)。需要一个能 jointly 优化、且抗崩塌的量化方案。

(b) 离散监督怎么传梯度? 直接 hard sample 一个 codebook entry 不可导。作者用预测 logits 对 codebook 做 weighted sum,然后 MSE 回归到真值 concept hidden,绕开了 cross-entropy + Gumbel-softmax 的复杂度。

(c) 信息泄漏。 概念是 k 个 token 的池化,即位置 t 的 concept 包含了未来 k−1 个 token 的信息。如果直接把 ground-truth concept 加回 token hidden 去预测下一 token,模型就偷看了未来。NCP 的精髓是:Decoder 必须用预测出来的 concept (而非 ground-truth),并且 broadcast 时再后移 k−1 位。这是论文最容易被忽视、但最容易实现错的工程点。

核心论断 (作者反复强调): 性能提升不是来自模型变大 (PM 基线已经做了参数对齐),也不是来自概念层多算了几层 attention,而是来自"更难的预训练任务"。NCP 强迫 Encoder 必须学到能 predict 未来 k 个 token 语义的 long-range 表征,这个 inductive bias 才是收益来源。Ablation (Table 4) 印证:只加 LVQ 或只加 LNCP 都不够,三者必须同时在。

2 · 背景速查

2.1 关键术语

术语含义
NTPNext Token Prediction,标准 LM 目标 −Σ log p(x_{t+1} | x_{≤t})
NCPNext Concept Prediction,本文新提出,预测 k 个 token 聚合后的概念向量
Concept c_t第 t 个 concept = mean_pool(h_{tk}, ..., h_{tk+k-1}),k 是 chunk size
Codebook entry eVQ 的离散 token 之一,d 维向量,通过 nearest-neighbor lookup 得到
Product Quantization把 d 维向量切成 S 个子向量,每个子向量用独立 codebook (size N) 量化,总表达力 N^S
Stop-gradient sg(·)VQ-VAE 经典 trick,前向不变、反向梯度截断
Codebook collapse大多数样本被映射到极少数 entry,导致词表退化
SimVQZhu 2025 提出的抗坍塌方案,本文用其"两层 MLP + ReLU 变换 codebook"思路
MTPMulti-Token Prediction,DeepSeek-V3 / Meta 2024 的同时预测多 token 的 head
PM baselineParameter-Matching baseline,把 NTP 基线加 2 层 token layer 以匹配 ConceptLM 参数量
ContextLMDai 2025,有 concept 层但无显式 NCP loss 的 implicit 版本,本文最强基线

2.2 VQ-VAE 流程速复习

  1. Encoder 输出连续向量 z ∈ ℝ^d
  2. 查询 codebook {e_1, ..., e_K},取最近邻 e_q = argmin_k ||z − e_k||²
  3. Decoder 用 e_q 重建输入
  4. Loss: reconstruction + ||sg(z) − e_q||² (codebook loss) + β||z − sg(e_q)||² (commitment loss)

本文复用了 (sg, commitment) 这套结构,但去掉了 reconstruction loss——concept 不需要重建任何东西,它只需要被下游的 Decoder "用"上即可。

2.3 Product Quantization 直觉

朴素 VQ 想表达 N^S 种概念,需要一张 size = N^S 的 codebook,既爆显存也爆参数。Product Quantization (Jegou 2010 经典 ANN 加速方法) 把 d 维向量沿特征维切成 S 段,每段独立查 N 项的小表,总组合数 N^S 但参数量只有 S × N × (d/S) = N × d。论文里 S = head 数 (~12),N = 64,概念词表实际大小约 64^12 ≈ 7.2 × 10^22,远大于 BPE 词表组合 V^k = 50000^4 ≈ 6.25 × 10^18。


3 · ConceptLM 架构总览

三段式: Token-level Encoder → Concept-level Module → Token-level Decoder。Encoder 和 Decoder 共享原 backbone (Pythia / GPT-2 / Llama) 的层,在某个深度插入两层 concept transformer。

ConceptLM 三段式 (k=4) x0 x1 x2 x3 x4 x5 x6 x7 Token-level Encoder (前 L_e 层 Transformer) → hidden h_0..h_7 h0 h1 h2 h3 h4 h5 h6 h7 mean-pool mean-pool c0 (h0..h3) c1 (h4..h7) Concept-level Module (2 层 Transformer + S 个 head) ĉ1 (预测,VQ 加权和) ↓ broadcast k 次 ↓ 后移 k−1 位 Token-level Decoder (后 L_d 层) — 输入 = h̃_t = h_t + ĉ_{⌊t/(k-1)⌋} L_NCP = MSE(ĉ, c) L_VQ (codebook 学习) L_NTP (CE)
左:token x 经 Encoder 得 h,每 k=4 个 h mean-pool 成一个 concept c。中间:Concept Module 两层 transformer 把 c_

3.1 NTP vs NCP 一图对比

传统 NTP x_{t-1} x_t x_{t+1} Transformer Decoder CE loss −log p(x_{t+1}|x_{≤t}) 每步只想着"下一个 token" NCP (本文) x0..x3 x4..x7 x8.. Token Encoder + pool c0 c1 c2 VQ codebook MSE(ĉ_t, c_t) + CE(x_{t+1}) 先想"下一段语义",再吐 token
左:NTP 一步只跨一个 token。右:NCP 把 4 个 token 的 hidden 池化为一个 concept,Concept Module 在 T/k 长的序列上预测下一个 concept,再 broadcast 回去帮 token decoder 做 NTP。NCP 的"sequence length"是 T/4,attention 的二次项小 16 倍。

4 · VQ 概念词表的构造与 Product Quantization

每个 concept c ∈ ℝ^d (d 是模型 hidden size) 沿特征维切成 S 段:c = [c¹, c², ..., c^S],每段维度 d/S。对第 s 段,有自己的 codebook E^s = {e^s_1, ..., e^s_N}。量化方式:

d_s = e^s_{n*},   n* = argmin_n ||c^s − e^s_n||²  |  d = concat(d_1, ..., d_S)

4.1 为什么要 product 而不是 monolithic

如果单 codebook,要表达 N^S 种概念,codebook size 必须 = N^S,参数量 ~ N^S × d,完全无法承受。Product 之后:

论文里 Pythia 的 d=768, head=12,所以 S=12,N=64,概念词表 = 64^12 ≈ 7.2 × 10^22。对比 BPE: V^k = 50000^4 ≈ 6.25 × 10^18,概念词表大了 4 个数量级。这意味着概念粒度比 4-gram token 更细,有充足的"语义槽位"。

4.2 防 codebook 坍塌:SimVQ trick

vanilla VQ 容易让大部分 input 都 nearest 到少数几个 e。作者沿用 SimVQ (Zhu 2025): 把 codebook entry 通过两层 MLP + ReLU变换之后再用,即真实参与 KNN 的不是 e^s_n 本身而是 MLP(e^s_n)。原理:非线性变换让 codebook 的有效流形更弯曲,不易塌到一个子空间。

实证 (附录 E.3): 即便用 S=12, N=1024 (1.2 万个 entry) 的大词表,codebook utilization 仍达近 100%。如果不用 ReLU MLP,而且 concept 层插入位置太浅,会观察到 collapse。

4.3 Worked example: 一个 4-token span 的量化

设 backbone 是 Pythia-160M, d=768, S=12, N=64, k=4。输入序列 "The integral of x squared" 经 BPE 分成 6 个 token,我们看前 4 个 token 组成的 concept c0:

x0..x3 = ["The", "Ġintegral", "Ġof", "Ġx"]
h0..h3 ∈ ℝ^768   (Encoder 第 1 层之后的 hidden)
c0 = mean(h0, h1, h2, h3) ∈ ℝ^768

切 12 段:c0¹ ∈ ℝ^64, c0² ∈ ℝ^64, ..., c0^{12} ∈ ℝ^64

对每段并行查 codebook (size 64):
  c0¹ → argmin_n ||c0¹ − MLP(e¹_n)||²  =  e¹_{37}
  c0² → e²_{12}
  ...
  c0^{12} → e^{12}_{5}

离散概念 ID = (37, 12, ..., 5)  ← 一个 12-tuple,概念词表里的一个"词"
量化向量 d0 = concat(e¹_{37}, e²_{12}, ..., e^{12}_{5}) ∈ ℝ^768

这个 12-tuple 就是 c0 在概念词表里的"BPE id"。下一个 chunk c1 (x4..x7 = "squared dx equals one third") 同样得到一个 12-tuple,这个 12-tuple 才是 NCP loss 想"猜对"的目标。


5 · Concept 预测头:weighted sum 而非 hard sample

预测下一个 concept 时,Concept Module 输出 hidden h_c,再过 S 个独立的 prediction head,每个 head 是一个 linear (d_concept → N),输出 N 维 logits → softmax → 权重 w^s ∈ ℝ^N。

关键设计:不做 argmax / Gumbel-softmax 取出某一个 codebook entry,而是直接做加权求和:

ĉ^s = Σ_{n=1..N} w^s_n · e^s_n   |   ĉ = concat(ĉ¹, ..., ĉ^S)

然后用 MSE(ĉ, c) 监督——而不是用交叉熵预测 codebook id。这是论文里反复出现但不显眼的设计选择。

5.1 为什么不用交叉熵 + hard target

三个考虑:

  1. 可微分性: weighted sum 处处可导,梯度直接流回 head。argmax / Gumbel 需要 reparameterization,引入额外噪声。
  2. codebook 共同优化: 因为 ĉ 是 codebook entry 的线性组合,梯度也流回 e^s_n,从而 codebook 能被 LNCP 间接训(虽然主要还是 LVQ 在训)。
  3. 避免 over-commitment: 如果只能选一个 entry,模型在概念边界处 (语义模糊段) 会震荡;weighted sum 容许"34% 是 e_3 + 41% 是 e_7 + ..."的软表达。
反向论证:如果改成离散 CE loss,作者预计性能会更接近 ContextLM (implicit concept) 而不是 ConceptLM。因为离散 CE 在大概念词表上 (N^S = 7×10^22) 是极度稀疏的监督信号,而 MSE 是稠密的回归信号——稠密信号正是 NTP 没有、却在 NCP 里弥补回来的部分。


6 · 三个 loss:NTP + NCP + VQ 各自做什么

6.1 三者的分工

Loss公式梯度去向目标
L_VQ||sg(c) − d||² + β||c − sg(d)||²仅 codebook + Encoder (commitment 项)让 codebook 跟踪 c 的分布,不反过来污染主表征
L_NCP(1/(M−1)) Σ ||ĉ_t − c_t||²Concept Module + Encoder逼 Encoder 产出"可被未来 concept 预测"的 long-range 表征
L_NTP−Σ log P(x_{t+1} | h̃_t)所有参数保持 token-level 语言能力,作 dense 监督

总 loss: L = L_NTP + L_NCP + L_VQ (默认权重 1:1:1,β 是 commitment 项内部权重,文中没显式给具体值,但是 VQ-VAE 经典设置 0.25)。

6.2 Ablation 关键数字 (Pythia-160M, 30B tokens, Table 4)

配置Avg Acc ↑Avg PPL ↓
NTP only (相同 backbone)39.669.28
NTP + VQ (无 NCP)39.875.64
NTP + NCP (无 VQ)39.576.30
NTP + NCP + VQ40.368.13
NTP + LMTP (multi-token baseline)38.481.16

读法: 单加 VQ 或单加 NCP 都稳赢,有时 PPL 反而更差;只有三者齐全才同时拿到 Acc + PPL 双赢。MTP 在这个尺度 (160M) 反而比 baseline 还差——印证了 Gloeckle 2024 自己说的"3B 以下 MTP 没用"。

6.3 为什么 NTP 不能去掉

论文给的解释更微妙: NCP 学的是稀疏的、每 k 步一次的语义信号,Decoder 仍需要 token-级稠密监督才能维持基本语言能力 (语法 / 局部连贯)。如果只用 NCP 训,Decoder 拿到的 broadcast 概念向量只是"语义提示",但没有任何信号告诉它"该把这个语义铺成哪个具体 token"。NTP 是 dense supervision,负责"概念 → token 表面形式"的映射。


7 · 防信息泄漏:k−1 位移 trick

这是论文里最容易踩坑的一处。预测下一个 concept c_{t/k} 需要看完整的前 k 个 token 的 hidden h_{(t/k-1)·k .. t-1}——等价于看到了过去一个完整的 chunk。但 broadcast 之后,decoder 在位置 t 拿到的 ĉ 是对应哪个 chunk 呢?

k=4 时的 broadcast & shift (避免泄漏) t = 0 1 2 3 4 5 6 7 8 9 10 11 原始 c: c0 (来自 h0..h3) c1 (来自 h4..h7) c2 (来自 h8..h11) naïve add (泄漏!): 在 t=0 加 c0 = 偷看了 x1,x2,x3 的信息 移位 k−1=3 位: 0 (zero) 0 (zero) 0 (zero) ĉ_0 (预测,对齐 t≥3) ĉ_1 h̃_t = h_t + ĉ_⌊t/(k-1)⌋,前 k−1 位补 0
设 k=4。groundtruth c0 由 h0..h3 池化得到;若直接把 c0 加到 t=0 的 token 上做 NTP,模型在预测 x1 时就用上了 x2/x3 的信息。解法:(1) 用预测出的 ĉ_0 而非 ground-truth c_0;(2) 把 ĉ broadcast 后整体后移 k−1=3 位,前 3 位填 zero。这样在 t=0,1,2 没有 concept 信号 (退化为纯 NTP),从 t=3 开始拿到 ĉ_0 作为"下一段语义提示"。
论文给的具体公式 (展开)
h̃_t = h_t + 0,   if 0 ≤ t < k−1
h̃_t = h_t + ĉ_⌊t/(k−1)⌋,   if k−1 ≤ t < T

注意分母是 k−1 而非 k,这是因为 broadcast 已经做了向后移位的等效——index 缩放分母减 1 配合 zero-padding 实现"刚好覆盖未来 chunk"。


8 · 公式拆解 + 一个 token 的全程追踪

8.1 总目标函数

L = L_NTP + L_NCP + L_VQ
L_VQ = ||sg(c) − d||² + β||c − sg(d)||²    (β ≈ 0.25,VQ-VAE 默认)
L_NCP = (1/(M−1)) Σ_{t=1}^{M−1} ||ĉ_t − c_t||²    (M = T/k)
L_NTP = −Σ_{t=0}^{T−1} log P(x_{t+1} | h̃_{≤t})

8.2 物理直觉

8.3 一个 token 的全程追踪

设 Pythia-160M, T=2048, d=768, k=4, S=12, N=64。输入是数学语句:

"The integral of x squared dx equals one third x cubed plus C"
tokens (12): [The, Ġintegral, Ġof, Ġx, Ġsquared, Ġdx, Ġequals, Ġone, Ġthird, Ġx, Ġcubed, ...]

追踪 t=4 这个 token Ġsquared 的预测过程:

步骤shape / 内容
1. embed + Encoder L1 → h_4h_4 ∈ ℝ^768,语义大致是"x 的某个幂"
2. mean-pool h_0..h_3 = c_0c_0 ∈ ℝ^768,代表概念 "the integral of x"
3. c_0 切 12 段 → 量化得 d_0d_0 ID = (37,12,5,...,18) ∈ {0..63}^12,称作"概念 #(37,12,...,18)"
4. Concept Module 看 c_0 (历史) → 预测 ĉ_1ĉ_1 ∈ ℝ^768,通过 12 个 head softmax × codebook 加权和
5. ĉ_1 broadcast 4 次,后移 k−1=3 位位置 3,4,5,6 都拿到 ĉ_0 (注意是 ĉ_0 因为 ⌊4/3⌋=1 但对应概念 0 的预测… 见下注)
6. h̃_4 = h_4 + ĉ_⌊4/3⌋ = h_4 + ĉ_1融合后,Decoder 在位置 4 看到了 "下一段是 squared dx equals" 这个语义提示
7. Decoder 后续层 + LM head → logitslogits ∈ ℝ^50257,softmax 得 P(x_5)
8. 训练 lossL_NTP[t=4] = −log P(x_5 = "Ġdx" | h̃_{≤4}) + L_NCP 在 t=1 处的贡献 ||ĉ_1 − c_1||² (注意 NCP loss 是在 concept 序列上算,不是 token 序列)

位置→概念 index 的映射有点 tricky,公式里写 ⌊t/(k−1)⌋ 是 paper 自己的写法,实践中需要小心 off-by-one。

8.4 一个数值 sensitivity 表 (chunk size k)

kconcept seq 长度concept 层 attn FLOPs (相对 k=1)每个概念覆盖语义训练难度
1T1.0×退化为 token (= NTP)太简单,无收益
2T/20.25×2-gram 级偏短,语义信息有限
4T/40.0625×短语级 ("the integral of x")论文甜点
8T/80.016×子句级预测难度↑,2 层 concept transformer 不够拟合
16+T/160.004×句子级 (≈ LCM)过粗,broadcast 后 token 上下文断裂

9 · 实验关键结果与 scaling 行为

9.1 Scaling 主图 (论文 Fig 1) 的核心三个数

Model parameters (log scale) Perplexity ↓ 124M 355M 774M 1.5B 22 19 17 15 ≈ 37% fewer params for same PPL GPT-2 (NTP only) ConceptLM (NCP) GPT-2 系列 scaling 曲线 (Pile/OWT 平均 PPL)
蓝线 (NCP) 全程压在橙线 (NTP) 下方,而且差距随 size 缩小 (124M 时 ↓1.5,1.5B 时 ↓0.6 PPL)。这意味着 NCP 在小模型上收益更大,大模型上仍稳赚但绝对差缩小——和 MTP 类工作"3B+ 才显效"的趋势相反。读者要警惕外推: 当前数据无法推断 NCP 在 70B+ 是否仍提供绝对收益。

9.2 Pythia 全尺寸表 (300B token, 选自 Table 1, 平均 PPL ↓)

尺寸Pythia 基线ContextLMConceptLM提升 vs 基线
70M297.7142.7137.7↓160
160M67.943.134.2↓33.5 (最大!)
410M17.8415.8215.31↓2.5

注意 160M 这一档跳点最大 (+33.5 PPL),作者归因于 S=head 数 + N=64 的固定配置在这个尺寸最贴合。这暗示 NCP 的 hyperparams 不是 size-agnostic 的,大模型可能需要 N 更大 / S 更大。

9.3 Continual Pretraining: 在 Llama-3.1-8B 上加 NCP (Table 3, 9.6B token)

变体MMLUARC-CAGIEvalSQuAD2.0Avg
Trained-8B (纯 token)64.334.854.236.747.5
PM-8B (+2 token layers)64.535.053.336.147.2
ConceptLM-8B64.635.154.236.547.6

Continual pretrain 的提升只有 +0.4 (vs PM) / +0.1 (vs Trained),不算惊艳——但作者强调:这是从已有 NTP 模型扩出来,新加的 concept 层和原 backbone 对齐难,而且只跑了 9.6B token (相对 Llama-3.1 总训练量微不足道)。LVQ 还在持续下降,说明没收敛。

9.4 长文实验 (Fig 4)

训练长度从 512 → 2048,ConceptLM 比 PM 基线的 loss gap 单调扩大。原因:concept 层运行在 T/k 长度上,attention 二次项缩 16 倍,把"省下来的算力"投到了 long-range dependency 上。这是 NCP 的副产品。

9.5 计算复杂度 (Table 6, Llama-3.1-8B 实测)

层类型训练 FLOPs推理 FLOPs
Token LayerO(T²d + Td²)O(Td + d²)
Concept LayerO((T/k)²d + (T/k)d²)O((T/k)d + d²)

实测: PM-8B 训练 80h,ConceptLM-8B 71h (↓11.3%);推理 99min vs 86min (↓13.1%)。理论 FLOPs 只省 4.69%,但实测省更多——作者归因于IO/KV cache: concept 层处理的序列短了 4 倍,KV cache 直接缩 4 倍,缓解了 memory bandwidth bottleneck。


10 · 与同类工作对比

方法预测目标潜空间是 pretraining objective?与 ConceptLM 主要区别
ConceptLM (本文)下一个概念 (k 个 token 的 pooled hidden)discrete VQ (product)
Coconut (Hao 2025)CoT 中间步骤换成 hidden vectorcontinuous (无量化)否,inference-time / fine-tune没有离散监督,无概念词表;只是把 CoT 内化进 hidden
LCM (Meta 2024)下一个句子 SONAR embeddingcontinuous,外部冻结 embedding是,但在 sentence 级粒度太粗 (句子 vs 4-token);embedding 是 frozen 的不可联合优化
BLT (Pagnoni 2024)下一个 byte 在 patch 内token-free,dynamic patch预测目标仍是 byte-level CE,只是结构上把序列变短
MegaByte (Yu 2023)下一个 patch 内的字节固定 chunk同 BLT,改结构不改 loss
H-Net (Hwang 2025)动态 chunk 的下一 bytetoken-free同上
DeepSeek-V3 MTP同时预测下 m 个 tokentoken 空间是 (auxiliary head)仍是 token loss,组合复杂度爆炸,3B 以下不收益
ContextLM (Dai 2025)下一个 context (有 concept 层但无显式预测)continuous, implicit本文最强基线: 同款架构但缺少 LVQ + LNCP 显式监督
Hourglass (Nawrot 2022)压缩-解压结构continuous无 VQ 词表,无概念预测 loss
VAR (Tian 2024,视觉)下一 scale 的 token mapVQ视觉域,token 是 patch latent;NCP 把这套思路搬到语言

定位总结: ConceptLM 占据的"格子"是 [语言域 + pretraining objective + discrete latent + 与 NTP 联合训练],四个维度中前人的工作至少缺一个。最接近的是 ContextLM (同实验室前作),区别就在 显式 VQ + NCP loss vs implicit concept 层——这个差距在 Pythia 实验上稳定值 +1.7 ~ +2.5 Acc。


11 · 局限 / 个人 take / 待验证问题

11.1 局限

11.2 个人 take

11.3 待验证问题 (个人想做的实验)

  1. 在 Llama-3 70B 上 continual pretrain NCP (而不是 8B),收益是否扩大?如果不扩大,说明 NCP 是"小模型补丁"。
  2. k=4 是否对所有 domain 通用?数学代码用 k=2,叙事文用 k=8,可能各有甜点。
  3. 把 NCP 的 MSE loss 换成对 codebook id 的 cross-entropy,效果 vs 现在的 weighted-sum + MSE 谁好?这是设计选择的核心 ablation。
  4. 推理时是否可以用 concept ID 做 speculative decoding 风格的"概念前瞻"?比如先采样概念,再投机性地展开 k 个 token,target 模型只验证概念边界。
  5. Concept 层插入位置(论文报告 3/4 处最好) 在 8B+ 上是否仍然在 3/4 处? 还是和 backbone 深度相关?
  6. Codebook (在多语言 / 多 domain 训练后) 学到的是什么? 一个 concept ID 对应的所有 4-token span 在语义上是否聚类? 这是 interpretability 的核心问题,论文完全没碰。

记忆点

立场 NCP 不是 inference-time trick,是新的pretraining objective:NTP+NCP+VQ 三 loss 联合
架构 Encoder → mean-pool 每 k=4 token → product VQ (S×N) → 预测下一概念 (weighted sum) → broadcast 后移 k−1 → Decoder NTP
VQ 配置 S=heads (~12), N=64, codebook size = N×d, 表达力 N^S ≈ 7×10²² >> V^k
关键 ablation 单加 NCP 或单加 VQ 都掉点,三者齐才赢
scaling 同 PPL 省 37% 参数 / 24% token / 19% FLOPs (Pythia + GPT-2 1.5B 内)
陷阱 ĉ 必须是预测而非 ground-truth,且 broadcast 时后移 k−1 防泄漏
为什么 MSE 概念词表 N^S ≈ 10²² 太稀疏,CE 信号太弱;weighted sum + MSE 是 dense 监督
最强基线 ContextLM (同实验室,有 concept 层但无 VQ + NCP,Avg 落后 1.7-2.5)

精读笔记 v1 · 2026-05-07 · 配套论文 PDF: /data/szhang967/papers/paper-notes/models/NCP_2602.08984.pdf