earlyprototype/lucier-gpt2-activ-tensor-reson-experiments

GitHub: earlyprototype/lucier-gpt2-activ-tensor-reson-experiments

通过迭代激活张量重注入探测小型语言模型吸引子盆地的实验框架,揭示GPT-2 Small独有的语义收敛异常现象。

Stars: 0 | Forks: 0

# 激活张量共振 (ATR) ### *当你将语言模型的声音回放给它自身,直到词语消失殆尽时,还剩下什么* 受 Alvin Lucier 的迭代反馈作品 *I Am Sitting in a Room* 启发,本项目将类似的操作应用到了小型开放权重语言模型上。Lucier 的过程是通过循环激励将语音消解为房间的共振频率,而 **激活张量共振** 则是将语义内容消解为模型的稳定状态——然后追问这些状态究竟由何构成。

Cross-prompt convergence matrix — 125 prompts, block structure showing distinct attractor basins in GPT-2 Small

GPT-2 Small:125 个提示词 × 迭代后的余弦相似度。区块结构展现了五个吸引子盆地。

## 简述发现 *适合想先睹为快结果的读者。完整的记录、每一个数字和所有限定条件详见:[FINDINGS.md](docs/FINDINGS.md)。* - GPT-2 Small 将 125 个语言提示词解析为 **五个吸引子盆地**,其收敛时的分类如下:`prolet` 43.2%,`Divine` 27.2%,`till` 15.2%,`Anarch` 13.6%,`solidarity` 0.8% ——其中五个里有四个在嵌入空间中具有语义连贯性。 - 最初的奠基性假设——即盆地是 **训练语料库的主题指纹**,可以从任何模型中读取——**被其自身的验证程序所推翻**:在 *相同* 语料库上训练的 GPT-2 Medium 将每个提示词坍缩为单个 token `D`;Pythia-160m 汇聚到 `questioned`;Pythia-410m 则根本无法固化。 - 一项空白对照实验重新定位了盆地:**纯噪声会收敛成 18 个非语义吸引子**,与真实的五个毫无交集。这些盆地属于模型的 *语言驱动机制*,而非一般意义上的权重。 - 34 个从未收敛的提示词恰好就是那 34 个 `Divine` 提示词——这是 **在永不停歇的张量上得出的稳定读数**,该研究极其尖锐地将动力学与解码过程分离开来。 - 在这一证伪之后幸存下来的内容是:一种廉价、无需训练的 **迭代动力学机制探针**,它能够清晰地将四个模型区分为四种性质截然不同的景观——以及一个未解的异常现象:*为什么唯独 GPT-2 Small 能将语言解析为语义盆地。* ## 灵感来源

A sparse room with a reel-to-reel tape recorder and microphone — evoking Alvin Lucier's experimental setup

1969 年,作曲家 [**Alvin Lucier**](https://en.wikipedia.org/wiki/Alvin_Lucier) 创作了 [***I Am Sitting in a Room***](https://en.wikipedia.org/wiki/I_Am_Sitting_in_a_Room) ——这是一部过程化音乐作品:他录下自己的讲话,在房间里播放这段录音,重新录制结果,然后不断重复。随着每一次迭代,讲话声逐渐消解为房间的共振频率。言辞消失了。建筑开始“说话”。 🎬 [**观看原始表演**](https://www.youtube.com/watch?v=v9XJWBZBzq4) ——Lucier 对该作品的试音与表演。 ## ATR 的运作原理 1. 将提示词输入模型 2. 从最后一层的输出中,提取所有 token 位置上的 **完整内部激活张量** 3. 对其进行 L2 缩放至初始能量(房间的摩擦力) 4. 将其作为下一次前向传播的输入重新注入,覆盖原有的 token 嵌入 5. 重复此过程,直到状态停止移动 6. 聆听残存的声音 ``` Prompt → Tokenise → Embed → [Layer 0 ... Layer N] → Extract residual tensor ↑ | └──────── Normalise & Re-inject ─────────┘ ``` 这是幂迭代的非线性类比:经典版本收敛于线性算子的主特征向量,而 ATR 收敛于完整 transformer 前向映射的不动点。我们在 [ISOMORPHISM.md](docs/ISOMORPHISM.md) 中详细探讨了它与 Lucier 声学过程的对应关系——以及确切在何处产生了偏离。正式规范详见 [TECHNICAL.md](docs/TECHNICAL.md);通俗易懂的版本请见 [UNDERSTANDING.md](docs/UNDERSTANDING.md)。 ## 第一幕 —— 消解 *无器官身体是一个马克思主义者。* 为了确保多样性,我们挑选了五个提示词:一个问题、一个事实、一句符合语法的童谣、一段无意义的话、一个命令。 📓 [`lucier_total_resonance.ipynb`](experiments/gpt2_small/lucier_total_resonance.ipynb) 词语逐渐流失和消解。首先是关联性消失,接着是语义,然后是语法。一些零散的首字母缩写、化学符号、标点符号和破碎的俚语最终沉淀为一种最终形态:一个被无限重复的残缺词汇。这五个提示词中有四个经历了几乎一模一样的下坠过程,来到了同一个安息之地——BPE 子词 `prolet`。一个碎片。一丝暗示。 ``` [iter 2] ash → [5] Canad → [10] Ag → [20] FT → [50] capit → [100] injustice → [250] Rousse → [500] prolet ``` **地理** [Canad(a)] → **金融** [Ag, FT] → **政治哲学** [injustice, Rousse(au), prolet(ariat)] 这里发生了什么?这些最初看似无意义的输出开始让人感到熟悉。有点像新冠疫情爆发前“文化战争”那种熟悉感。GPT-2 Small 是完全基于 WebText 训练的——这是大约 2018 年从 Reddit 精选出站链接中抓取的 40GB 文本 [(Radford et al., 2019)](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf)。 不开玩笑。 第五个提示词——*"The cat sat on the mat and then the"*——在初期经历了相同的下坠,但在第 20 次迭代时脱离了原有路径,最终停留在了一个完全不同的地方:`Divine`。 在规模化测试中,这种模式依然成立。对涵盖七种语域的 125 个提示词进行扫掠,该模型的语言空间坍缩为 **五个盆地**,其收敛时的分类如下(并非任意停止时刻的分类——请参见 [门控重新扫掠](docs/FINDINGS.md#run-5)): | 盆地 | 收敛时的占比 | 语义邻域 (W_E) | |:---|:---:|:---| | **`prolet`** | 43.2% | 政治哲学 —— *bourgeoisie, capitalists, revolutionaries* | | **`Divine`** | 27.2% | 神学 —— *Sacred, God, celestial* | | **`till`** | 15.2% | 时间/功能性(异类) | | **`Anarch`** | 13.6% | 政治哲学 —— *Marx, Trotsky, Bolshevik* | | **`solidarity`** | 0.8% | 集体行动 —— *sympathy, activism, comrades* | ![句子消解 —— 五个提示词消解为各自的吸引子](https://static.pigsec.cn/wp-content/uploads/repos/cas/30/3087766e9a8749c5b2a6466414240e975172e781d1f8b68f5c8dcfd5495b6b70.png) ![语义消解的 3D PCA 轨迹](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b1322b6bae08f5c6cc0aa2fe071f9dc1429b55cb59849e1fdf6db6532d6c972a.png) 在漫长的一个春天里,这看起来像是一个关于训练数据的发现:迭代任何模型,其语料库的主题质心就会像房间的基调一样从权重中浮现。这就是当时的有效假设。 后来,我们让其他的“房间”也开始了歌唱。 ## 第二幕 —— 其他的房间 同样的操作,四个模型,每个模型 125 个提示词: | 模型 | 训练基于 | 残余物 | |:---|:---|:---| | **GPT-2 Small** (124M) | WebText (Reddit 2018) | 五个语义盆地 —— `prolet`, `Divine`, `Anarch`, `till`, `solidarity` | | **GPT-2 Medium** (345M) | *相同的语料库* | 一个盆地。每个提示词都收敛到字母 **`D`**。在第 10 次迭代时锁定。 | | **Pythia-160m** | The Pile | 一个盆地 —— `questioned` (94%) | | **Pythia-410m** | The Pile | 无法固化。1000 次迭代后,仍在变动。残片与标点符号。 | | | | |:---:|:---:| | ![GPT-2 Medium 收敛矩阵](https://static.pigsec.cn/wp-content/uploads/repos/cas/29/299fbe509d7a27ca519841cd11b222cd5a45ec6621e8686e37dfb5e688cc0af5.png) | ![Pythia-160m 收敛矩阵](https://static.pigsec.cn/wp-content/uploads/repos/cas/1b/1b0d41d8e3b23feac96b6121bb049718634ab492f2952768ed49ffe105b623f0.png) | | *GPT-2 Medium:只有一个区块。一切都是 `D`。* | *Pythia-160m:只有一个区块。一切都是 `questioned`。* | | ![Pythia-410m 收敛矩阵](https://static.pigsec.cn/wp-content/uploads/repos/cas/9c/9ca50b59d7c07784962a2c19fb03981d3aed6e1f8179f750a5c2dfbd7beab25e.png) | ![GPT-2 Small 收敛矩阵](https://static.pigsec.cn/wp-content/uploads/repos/cas/2e/2e4522bffbb120b698ec68518bafec4d4b31e72248aa074e531b42699a5b9a49.png) | | *Pythia-410m:没有区块。房间永远无法平静。* | *GPT-2 Small:五个区块。一个异常现象。* | 指纹假设没能在这张表中幸存下来。GPT-2 Medium 听到的和 GPT-2 Small 一样都是 Reddit 的内容;但它的无器官身体只会说 `D`。 而一个足以打破任何残存确定性的对照实验是:将 **纯噪声** ——完全没有提示词——输入到 GPT-2 Small 中,它同样会收敛,但是收敛到了*十八个*散落的标点符号盆地中,没有一个属于前面的那五个。真实的语言比噪声汇聚到 **更少** 的吸引子中,并且是具有语义的。无论这五个盆地究竟是什么,它们都不是权重的普遍属性。它们属于由 *语言形态的输入* 所占据的激活空间区域。只有当房间里曾存在过声音时,房间才会像那样歌唱。 来自研究极远处的另一幅图像。那 34 个从未通过收敛阈值的提示词恰好就是那 34 个 `Divine` 提示词:一个永不停歇的张量,却永远解码出同一个词。一个无法平静的房间,不断诉说着 *Divine, Divine, Divine*。 第一幕与第二幕的完整记录——每一次运行、每一个数字、每一个假设的处置(包括已被推翻的假设)——详见 [FINDINGS.md](docs/FINDINGS.md)。 ## 如今这变成了什么 ATR 最初旨在成为一种偏见审计技术,结果却证伪了自身:跨模型的证据推翻了普遍指纹的论断,而空白模型将盆地的归属从“权重”重新定位到了“权重的语言驱动机制”。然而,这种操作实际测量出的结果却更加离奇,且我们认为也更有趣: - **一种廉价且具有动力学特性的探针。** 无需标注数据,无需训练,在消费级硬件上每次运行只需几秒到几分钟。它回答了这样一个问题:*该模型的迭代前向映射有哪些稳定状态,它们如何依赖于你的起始位置?* - **一种机制检测器。** 四个模型产生了四种定性不同的景观——少数语义盆地/单一汇聚通道/单一汇聚通道/无固化。这些差异是模型固有的(属于张量层面,而非解码的伪影——详见 [SCALING_ARTEFACT_ANALYSIS.md](docs/SCALING_ARTEFACT_ANALYSIS.md))。 - **一个带有杀伤力的开放性问题。** 为什么在这个组合中,唯独 GPT-2 Small 能够将语言解析为一小部分语义连贯的吸引子?这个问题正是本项目下一步的探索方向。 ## 仓库结构 ``` ├── README.md ← the piece (you are here) ├── atr_engine.py ← core ATR engine (hooks, metrics, gated runs) ├── prompt_library.py ← 125 prompts across 7 categories ├── requirements.txt │ ├── experiments/ │ ├── RESULTS_SUMMARY.md ← run-by-run record of the validation series │ ├── gpt2_small/ ← original 5-prompt piece, 125-prompt sweep, │ │ reproducibility gate, gated re-sweep, │ │ random-noise null model, spectral scaffold │ ├── gpt2_medium/ ← 125-prompt sweep (→ `D`) │ ├── pythia_160m/ ← 125-prompt sweep (→ `questioned`) │ ├── pythia_410m/ ← 125-prompt sweep + 1000-iter deep run │ ├── cos_sim_diagnostic.ipynb ← tensor-level convergence across models │ └── readout_guardrails.ipynb ← readout confidence metrics (margin, entropy) │ └── docs/ ├── FINDINGS.md ← ⭐ the canonical record: results, hypotheses, caveats ├── TECHNICAL.md ← formal method specification ├── UNDERSTANDING.md ← accessible mechanism explanation ├── ISOMORPHISM.md ← Lucier ↔ transformer correspondence ├── SCALING_ARTEFACT_ANALYSIS.md ← artefact-vs-intrinsic attribution ├── VALIDATION_PLAN.md ← the pre-registered validation design (historical) ├── ATR_METHOD_COMPARISON.md ← ATR in the interpretability landscape ├── JOURNEY_MAP.md ← project timeline, discoveries, glossary └── sessions/ ← AI-assisted review session records ``` ## Notebooks —— 快速参考 | Notebook | 用途 | 状态 | |:---|:---|:---:| | [`lucier_total_resonance.ipynb`](experiments/gpt2_small/lucier_total_resonance.ipynb) | 原始作品(5 个提示词,500 次迭代) | ✅ 已运行 | | [`00_reproducibility_gate.ipynb`](experiments/gpt2_small/00_reproducibility_gate.ipynb) | 同机重复性检查 | ✅ 已运行 | | [`01_attractor_dominance.ipynb`](experiments/gpt2_small/01_attractor_dominance.ipynb) | 125 个提示词的景观(各模型目录 ×4) | ✅ 已运行 | | [`gated_resweep.py`](experiments/gpt2_small/gated_resweep.py) | 收敛门控盆地分类 | ✅ 已运行 | | [`03_random_baseline.ipynb`](experiments/gpt2_small/03_random_baseline.ipynb) | 空白模型 —— 以噪声代替提示词 | ✅ 已运行 | | [`01b_deep_convergence.ipynb`](experiments/pythia_410m/01b_deep_convergence.ipynb) | Pythia-410m 运行 1000 次迭代 | ✅ 已运行 | | [`cos_sim_diagnostic.ipynb`](experiments/cos_sim_diagnostic.ipynb) | 跨模型张量收敛情况 | ✅ 已运行 | | [`readout_guardrails.ipynb`](experiments/readout_guardrails.ipynb) | 读数置信度审计(单提示词演示) | ✅ 已运行 | | [`spectral_resonance.ipynb`](experiments/gpt2_small/spectral_resonance.ipynb) | SVD 预测的逐头共振 (H4) | 🔬 脚手架,未运行 | ## 环境要求 ``` pip install -r requirements.txt ``` ## 注意事项 诚实的清单——包括样本量、待处理的统计数据、在此处“可重现”的含义及其局限性——统一维护在一个位置:[FINDINGS.md § Caveats](docs/FINDINGS.md#caveats)。核心要点包括:单随机种子扫掠、N=2 的同机重复性、深度收敛运行使用了 8 个提示词的子,以及 W_E 置换检验已设计但尚未运行。 ## 参考文献 - Radford, A., Wu, J., et al. (2019). *Language Models are Unsupervised Multitask Learners.* OpenAI. [PDF](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) - Biderman, S., et al. (2023). *Pythia: A Suite for Analyzing Large Language Models Across Training and Scaling.* [arXiv:2304.01373](https://arxiv.org/abs/2304.01373) - Lucier, A. (1969). [*I Am Sitting in a Room.*](https://en.wikipedia.org/wiki/I_Am_Sitting_in_a_Room) Lovely Music. [YouTube 表演](https://www.youtube.com/watch?v=v9XJWBZBzq4) - Nanda, N. & Bloom, J. (2022). [TransformerLens](https://github.com/TransformerLensOrg/TransformerLens)
标签:Apex, DLL 劫持, GPT-2, NoSQL, 凭据扫描, 可解释性, 大语言模型, 机器学习, 激活值分析, 神经网络, 逆向工具