超度量(p-adic)Attention 的数值实验报告 + 实现正确性检查——树 softmax、层级聚合、离散 ℓ 上的 VAPO 学习。
本仓库对超度量 attention(Bourama Toni「Beyond Archimedean Intelligence」提出的 p-adic 学习方向)的 核心结构做 独立、可复现、双库互证 的数值验证:以公共前缀深度取代点积、树 softmax 取代全局 softmax、层级聚合取代加权和。 仅依赖通用数值计算库(NumPy / PyTorch),clone 后开箱即跑。
⚠️ 口径说明:
- 双库一致 ≠ 理论成立。"PASS" 仅代表 numpy 与 torch 算同一公式结果一致(排除单库实现 bug); 理论是否成立由每个 numpy 脚本自身的 容差判定 决定(见「验证清单」与脚本内的
结论行)。- 本仓库是 有限样本数值实验(固定 seed + 有限配置),验证的是结论在容差内的自洽性, 不是数学证明;"数值验证/verification" 指判定方法学的严谨性,不指证明性质。
- 验证实质分层:多数
[T]恒等式(如 T1 归一化)由"每层局部归一化"的定义必然推出, 只要实现没写错就 100% 成立——它们验证的是 实现正确性,不是"树 softmax 是个好 attention"。 真正有信息量的非平凡验证是少数 机制行为 项:NT4/H4/V5(层级树显著异于标准 softmax)、 A5-2(树 softmax 更易集中)、A2(剪枝均匀退化的充要条件)、VAPO 基线对照(B 系列)。 突变测试(K 系列,7/7 真实 bug 全部被恒等式组抓住)为 T 类 PASS 的含金量提供独立支撑。- 判定方式的三层分工:恒等式为确定有理数的(T1/T3/NT2/A3/线性 Φ/穷举格点)用
fractions.Fraction精确对拍(不依赖 float64 容差);机制行为项(NT4/H4/V5/A5-2) 用 符号置换检验 + bootstrap 置信区间(p<0.01 或方向全称判定),不再用"拍脑袋"固定阈值; 给不出统计显著性的降级表述为"工程观察"。
本仓库的数学验证源于长期基于实践的探索与迭代沉淀,并非凭空生成。在推导与双库对拍的论证过程中, AI 以协作工具的身份参与了部分计算推演;而所有结论的灵感、方向与验证设计,均来自人类——AI 是让论证 更严谨的辅助,而非结论的来源。如实披露这一协作过程,是对学术诚实的坚持,也坦然面向 AI 辅助研究走向 常态的未来。
.
├── formulas/ # 数学核心公式(自包含推导,速查)
│ └── 超度量attention核心公式.md
├── verification/ # 前瞻设计草图 + 验证脚本
│ ├── toni_padic_ultrametric_attention_sketch_2026_08_17.md # 超度量 attention 机制设计
│ ├── toni_padic_tree_softmax_math_sketch_2026_08_17.md # 树 softmax 数学完整展开
│ ├── validate_math_tree_softmax.py # 树 softmax(numpy 单库,理论判定)
│ ├── validate_math_tree_softmax_torch.py # 树 softmax(numpy + torch 双库互证,thin 聚合入口)
│ ├── tree_checks_*.py / tree_torch_util.py # 按主题拆分的可独立运行模块(入口聚合,行为不变)
│ ├── tree_checks_exhaustive.py # P2: 小规模穷举(quick ≤10 叶 / full ≤12 叶全部树形,Fraction 精确断言)
│ ├── validate_math_vapo_discrete_learning.py # VAPO/GIST 离散 ℓ 学习实验
│ ├── validate_math_vapo_baselines.py # P0: VAPO vs random/greedy 基线对照(置换检验)
│ ├── validate_math_padic_vp.py # P0: padic_compare 与标准 v_p(低位)一致互证 + 代数律 M6/M7
│ ├── validate_math_mutation.py # P0: 突变测试(bug 注入 → kill rate 7/7)
│ ├── validate_math_statistical_calibration.py # P2: 统计检验工具自校准(置换检验/bootstrap 行为校准)
│ ├── validate_math_exp_error_bound.py # P2: exp 显式误差界 + Decimal 高精度参考(有界验证)
│ └── run_all.bat # Windows 一键跑全部脚本
├── benchmarks/ # S3/S6 工程量化基准(复现 README 耗时表)
│ ├── bench_s3_fd_vs_autograd.py # FD vs autograd Jacobian 耗时微基准
│ └── bench_s6_quick_vs_full.py # quick/full 规模实测(子进程复跑计时)
└── results/ # 运行结果(JSON,quick/full 分文件,含判定与耗时)
另有 `.github/workflows/ci.yml`:push/PR 自动装依赖并逐个跑全部验证脚本(失败即红灯;
注意 `validate_math_vapo_baselines.py` 的 B2"学习增量未证实"是如实记录的发现,不算失败)。
| 概念 | 含义 |
|---|---|
| 相似度 |
用 p-adic 编码的 低位 |
| 树 softmax | 在超度量球树上自底向上局部归一化 + 自顶向下路径累积(全局 softmax 的严格推广) |
| 层级聚合 | 沿球树层级混合 value,保留超度量球嵌套结构 |
| VAPO / GIST | 离散 |
本仓库从验证角度处理 p-adic/超度量 attention:唯一交付物是「树 softmax + 层级聚合」这一 完整超度量 attention 结构的数学自洽性验证(显式性质 + 推导 + 双库数值核验)。它与两个 同样涉及「p-adic/超度量 + 深度学习」但目标不同的公开项目互补而不交叉,对比如下:
| 维度 | 本仓库(ultrametric-verification) | model_guided_research | v-PuNNs-HiPaN |
|---|---|---|---|
| 目的 | 验证超度量 attention 的数学是否自洽 | 在完整 GPT 中尝试 11 种 exotic attention 机制 | 在层级分类任务上跑 v-PuNNs,做 SOTA |
| 是否做 Attention | ✅ 是(树 softmax) | ✅ 是(其中的一种可切换机制) | ❌ 否(逐深度分类,非 attention) |
| 数学结构 | 树 softmax:层级竞争归一化,标准 softmax 的严格推广 | LCP-kernel:直接 α^lcp(q,k),无层级归一化 |
p-adic 特征球神经元 |
| 采用方式 | 整条 attention 用超度量结构(非众多替代之一) | 作为 11 种可选机制之一(--attention-type 切换) |
分类器主体为 p-adic 球 |
| 交付形态 | 纯验证脚本 + 定理/证明,无模型 | 生产级 GPT(nanochat)+ 训练基础设施 | Jupyter 分类实验 + 论文定理 |
| 数据 | 纯合成(随机树/得分);无真实任务 | 文本语料(训练 nanochat) | WordNet / Gene Ontology 等真实层级数据 |
| 与标准 attention 关系 | 严格推广(单层可精确退化) | 替代机制(drop-in) | 不适用 |
三点说明,保持与本仓库定位一致:
- 不做模型、不跑 SOTA、不是替代实现。本仓库不提供可插入生产 Transformer 的 attention 内核, 也不在真实数据上比准确率;这些是上面两仓各自的目标。这里只回答一个问题:在一个完全采用 超度量结构的 attention 里,树 softmax 这一层级归一化在数学上是否良定义、是否按预期退化、数值与 梯度结构是否如定理所述。
- 全量而非部分采用。与本仓库相关的是「树 softmax / 层级聚合」这条完整结构,而非把某种 p-adic kernel 作为备选机制接入既有模型。因此验证对象是整条结构的性质(归一化、退化、剪枝、 可微性、稀疏梯度),而非某一种 kernel 的可行性。
- VAPO/GIST 的边界。本仓库的 VAPO 是一份最小化合成实验,用于检查"离散 ℓ 上无梯度学习 是否至少可行、以及是否依赖指数得分放大",不是真实任务 benchmark(后者见 v-PuNNs-HiPaN)。
| 库 | 角色 | 说明 |
|---|---|---|
| NumPy | 基线计算库 | 全部脚本必选 |
| PyTorch | 互证对照库 | 与 numpy 算同一公式,逐项比对(T 类机器精度) |
# 依赖(结果 JSON 因 torch 脚本生成)
pip install numpy torch
# 树 softmax 单库验证(numpy,含理论判定)
python verification/validate_math_tree_softmax.py
# 树 softmax 双库互证(numpy + torch)
python verification/validate_math_tree_softmax_torch.py
# VAPO 离散学习实验(纯 numpy)
python verification/validate_math_vapo_discrete_learning.py所有脚本固定随机种子、公开参数,任何环境复跑可对拍;双库脚本结果 JSON 写入 results/。
两种运行模式:脚本默认走 quick(8 种子 × 6 种代表性树木形态;VAPO R=10),全套约 4 分钟 (树 numpy 约 15s、树 torch 约 65s、VAPO 约 110s、baselines 约 40s、穷举/互证/突变合计约 1 分钟内), 用于 CI/日常自检。若要 full 长时间扩展验证(50 种子 × 20 种树木形态;VAPO R=25;数小时级), 运行前设环境变量
SGN_VERIFY_FULL=1,或加--full参数,例如set SGN_VERIFY_FULL=1后python verification/validate_math_tree_softmax.py。 本 README 与 formulas 中引用的具体数值(树验证规模、VAPO 收敛率)均为 full 模式结果; quick 模式(默认,用于 CI/日常自检)规模更小、数值略低,但结论一致。Windows 一键运行:双击
verification/run_all.bat(默认 quick 模式),逐个跑全部validate_*.py与tree_checks_exhaustive.py脚本并汇总 PASS/FAIL(exit 0 = 全部通过);加--full参数切换 full 模式。结果 JSON 按 quick/full 分文件写入results/,互不覆盖。编码兼容:脚本头部已
sys.stdout.reconfigure(encoding="utf-8")兜底,Windows GBK 控制台通常可 直接python verification/...运行;若仍报 UnicodeEncodeError,请先set PYTHONIOENCODING=utf-8或改用run_all.bat。Linux/macOS 默认 UTF-8,无需处理。
S3(autograd 换 FD + _MAX_FD_LEAVES 2000→128)实测(本机):
| 叶数 n | FD(中心差分) | autograd(逐叶 backward) | 说明 |
|---|---|---|---|
| 32 | 21.5 ms | 128 ms | 小树两者均亚秒 |
| 128 | 384 ms | 2491 ms | FD 上限收缩点:>128 叶不再跑 FD |
| 512 | 6.7 s | 45.9 s | FD 随 n 近 O(n²) 增长(4 倍叶数 ≈ 17× 耗时) |
结论要点:
- FD 是真正的耗时源(2n 次 numpy 前向,近 O(n²)):实测 128→512 叶 FD 耗时放大 17.5×, 外推 2000 叶单次 ≥ 100s。
_MAX_FD_LEAVES=128收缩后,>128 叶种子直接跳过 FD (可微性由更小树覆盖),单次 Jacobian 上限从"分钟级"压回 <0.4s —— D1/D4/A6 不再受 O(n²) 拖累。- autograd 收益在正确性而非速度:本机 CPU 上逐叶 backward 比 FD 反而慢 ~6×(Python 调度 + 张量内核开销); 它的价值是 D2/D3 提供了独立于数值差分的解析梯度验证路径(autograd 解析 = 中心差分,双库互证), 免维护手写反向公式——速度收益主要来自 FD 上限收缩,而非差分方法本身。
- 成效验证:quick 全量回归 9 脚本 PASS=9/FAIL=0(树 numpy 全套 16.6s)。
S6(quick 收缩 + CI 矩阵)实测:
| 指标 | quick(CI/日常) | full(数值回填口径) | 收缩比 |
|---|---|---|---|
| 种子数 × 形态 | 8 × 6 | 50 × 20 | 48/1000 ≈ 4.8% |
| 树 numpy 全套 | 16.6s | ≈285s(core 19.4s + agg/prune 260.7s,仅 numpy 树部分) | 单库约 17× |
| 全套(含 torch/VAPO) | ≈ 4 分钟 | 数小时级 | — |
| CI 任务 | — | — | 9 脚本 × 3 版本矩阵(3.12/3.13/3.14)= 27 次验证,换解释器不红 |
- quick 保留 6 种代表性形态(浅/中/深、二叉/高分支、早停率 25-30%),统计检验项(NT4/H4/V5) 效应量与 full 一致(quick 下 p<0.01 稳定达标),保证收缩不减验证效力。
- CI 三版本矩阵规避 PEP 701 多行 f-string 语法(Python <3.12 直接 SyntaxError), 版本兼容性由 CI 强制保证而非文档声明。
基准脚本运行说明(benchmarks/):
| 脚本 | 命令 | 预计耗时 | 输出内容 |
|---|---|---|---|
| S3 微基准 | python benchmarks/bench_s3_fd_vs_autograd.py |
约 1 分钟 | 32/128/512 叶的 FD 与 autograd 单次 Jacobian 耗时表 + 汇总(FD 缩放比、autograd/FD 比、Jacobian 一致性) |
| S6 规模实测 | python benchmarks/bench_s6_quick_vs_full.py |
约 20-30s | quick 配置对照表(48 vs 1000 采样点、4.8%、效力保持)→ 子进程复跑 numpy 树全套并实测墙钟 |
| S6 full 口径 | python benchmarks/bench_s6_quick_vs_full.py --full |
约 5-10 分钟 | 同 S6,但按 full(50 种子 × 20 形态)复跑并计时,可与 README ≈285s 对照 |
参数与口径说明:
- S3 脚本无需参数:档位硬编码为完全二叉 depth 5/7/9 → 32/128/512 叶(脚本内
_DEPTHS), 与 README 表逐行对应;数值随机器负载波动,对照量级即可。 - S6
--full参数:等价于环境变量SGN_VERIFY_FULL=1(与全部验证脚本同口径约定); 不传时默认 quick。脚本通过读tree_softmax_util.NONCOMPLETE_CONFIGS自检当前模式的实际采样点数。 - S6 计时方式:以子进程复跑
verification/validate_math_tree_softmax.py(stdout 原样透传), 墙钟即脚本尾部"耗时 X.Xs";--full会把该参数透传给子进程。 - 依赖:两者均需能 import
verification/共享模块(脚本自动把仓库根下的verification加入sys.path,任意 cwd 运行均可);S3 额外需要 torch(走tree_torch_util._jacobian_autodiff),S6 仅需 numpy。 - Windows 编码:两脚本头部已做 utf-8 兜底,与其余验证脚本一致。
| 类别 | 验证项 | 结论 | 验证实质 |
|---|---|---|---|
| T1 | 归一化:任意 p 叉树,Σα_j=1 且 α_j≥0 | ✅ | 实现正确性(定义必然) |
| T2 | 退化:单层树 + Φ=e^x ⇒ 标准 softmax | ✅(严格推广) | 机制行为 |
| T3 | 均匀退化:完全树全等分 ⇒ α_j=1/n | ✅ | 实现正确性(定义必然) |
| NT1/NT2 | 非完全树归一化、均匀退化 | ✅ | 实现正确性(定义必然) |
| NT4/H4/V5 | 非完全树与标准 softmax 差异、层级聚合差异、剪枝差异 | ✅(符号置换 p<0.01) | 机制行为(非平凡) |
| E1-E3 | 边界情形(全零兜底、退化、负得分域界定) | ✅ | 实现正确性 |
| H1-H3 | 层级聚合(Aggregate A/C、B 模式) | ✅ | 实现正确性 |
| A1-A6 | pruning 等权保持(乘法平衡)、球权恒等式、深度数值精度、剪枝树梯度零块 | ✅ | A2 为机制行为(非平凡),其余实现正确性 |
| A5-2 | 树 softmax 集中阈值 < 标准 softmax(构造样本全称方向判定 + bootstrap 95% CI,工程观察) | ✅ | 机制行为(非平凡发现) |
| W1/B1-B3/L1-L2 | W_B=max 结构、B 模式层级加解析式、线性 Φ 语义界限 | ✅ | 实现正确性 |
| P1 | 置换同构不变性:叶权只依赖树的带权同构类(兄弟子块任意置换 + BFS 重编号,诱导叶映射下逐叶一致 ≤ FRAC_TOL) | ✅(869 次置换,full 口径) | 实现正确性(结构稳健) |
30+ 验证项、25 单库 / 20 双库全部 PASS(50 个固定种子 × 20 种树木形态)。核心结论:树 softmax 是良定义的概率映射,且是 标准 softmax 的严格推广;剪枝树保持可微性与稀疏梯度结构。其中多数 PASS 验证的是实现正确性; NT4/H4/V5、A2、A5-2 是有真信息的机制行为验证(见「口径说明」第 3 条)。 判别力由突变测试独立背书(K1:7 个真实 bug 突变体全部被恒等式组抓住,kill rate 7/7=100%; MUT7 为数学等价突变体——Φ 的标度倍被每层归一化消去——单列为标度不变性性质验证)。
D 系列(Jacobian 存在性、autograd 解析梯度 vs 中心差分一致性)验证的是连续得分输入下
树 softmax 运算图的可微性。实际 p-adic attention 的得分
离散
研究结论(基线对照背书,validate_math_vapo_baselines.py,R=25×5 试次/方,2000 次置换检验;
此处 B1–B4 为基线判定项,勿与树验证的聚合 B 系列(B1–B3)混淆):
在同一任务/预算下对照 random search 与 greedy 两个基线——random 收敛率 100-99%、greedy 100-99%、
VAPO 93-98%(2key/4key,Wilson 95% CI);
学习增量判定 B2(VAPO−random,置换检验 p<0.05)未通过(2key Δ=-7% p=1.0000,4key Δ=-1% p=0.8686);
样本效率 B3(VAPO 中位评估数 < greedy)通过(VAPO 1185/1021 vs greedy 1676)。
即:VAPO 的高收敛率应归因于指数得分的尖锐性(S7 低位口径下扰动命中低位 digit,p^ℓ 即压过其它 key)
加随机命中,而非学习动力学。本实验的"可行性"定位(离散 ℓ 上无梯度搜索在该得分下能找到目标)成立,
但不能读作"p-adic attention 已被证明能学习/泛化"。
padic_compare 自 S7 起按标准 p-adic 赋值实现:从最低位起数 q−k 被 p 整除的幂次
(v_p(x) 的标准低位口径),与整数算术的独立实现 standard_vp 逐对一致(M2 一致率 100.00%,
100000 随机对 × 50 种子,validate_math_padic_vp.py);q=k 时 v_p=∞ 截断为 N_DIGITS(M1 定义自检)。距离
- 统计检验工具自校准(C1–C4,
verification/validate_math_statistical_calibration.py): 先校准检验管道本身、再让 S5 的真实判定可信。合成 H0 数据下(full 观测值,quick/full 同规模)—— C1 置换检验 type-I 率 0.007(期望≈1%,二项 3σ 上界 0.028)、 C2_s5_significance误报率 0.007(含效应量闸门,≤0.05)、 C3 bootstrap 95%CI 覆盖率 0.915(真实均值 μ=0.6 落入比例,3σ 接受区间 [0.90, 1.00])、 C4 强效应(均值 0.8σ)下判定命中率 1.000(功效兜底,≥0.98)。 - exp 显式误差界(E1–E4,
verification/validate_math_exp_error_bound.py): exp 情形叶权为超越数、无法走 Fraction 精确对拍,改用 Decimal(50 位)泰勒截断级数作参考真值, 并推导显式误差界逐项实证(full 观测值,quick/full 同规模)—— E1 余项公式 |T_{44}−T_{36}|=1.42e-20 ≤ E_N=6.98e-19(余项律不被过量低估)、 E2 float64 vs Decimal 参考 max|Δ|=1.11e-16 ≤ 1e-9、 E3 float64 距真值 ≤ 推导界 9.77e-17 + 容差(max_d=5)、 E4 多层累积有界(24 棵树,dev 不随深度/规模暴涨,恒 <1e-9)。 把 exp 情形的"自洽对拍"升级为"有界验证"。(此组 E 系列与树 softmax 边界情形的 E1–E3 分属不同脚本,互不冲突。) - v_p 代数律(M6/M7,
verification/validate_math_padic_vp.py):见上文「记号确认」节。 - 置换同构不变性(P1,
verification/tree_checks_core.py):见「验证清单」表。
本仓库验证的是通用数学结构与无梯度学习方法,多数结论可独立推导;与外部工作存在直接灵感关联的如下:
| 主题 | 灵感来源 | 说明 |
|---|---|---|
| 超度量 attention 框架 · 赋值深度即公共前缀深度 | Toni, B., Beyond Archimedean Intelligence: Toward an Intrinsic p-Adic Theory of Learning, arXiv:2607.14562 [math.DS], 2026. 链接 | 本仓库的根基:公共前缀深度取代点积、信息按嵌套超度量球组织、尺度由 valuation 深度决定均源于该理论框架;开放问题 #6 要求以赋值深度表述 attention |
| 离散 ℓ 上无梯度学习(VAPO / GIST-VAPO) | N’guessan, G. L. R., v-PuNNs: van der Put Neural Networks for Transparent Ultrametric Representation Learning, arXiv:2508.01010 [cs.LG], 2025. 链接 | VAPO(Valuation-Adaptive Perturbation Optimization)与 GIST-VAPO 的出处;本仓库 validate_math_vapo_discrete_learning.py 复现其"离散空间无梯度扰动学习"思路 |
| p-adic 学习基础(分类/回归/表示) | Martins, A. F. T., Learning with the p-adics, arXiv:2512.22692 [cs.LG], 2025. 链接 | p-adic 作为非阿基米德学习空间的系统奠基;ℤ_p 系数表示、p-adic 线性/回归的工程可行性背景 |
| p-adic 神经网络与普适逼近 | Albeverio, S., Khrennikov, A., Tirozzi, B., p-adic dynamical systems and neural networks, 1999.(及 Mihara, T., p-adic Character Neural Network, arXiv:2603.29905, 2026.) | 原始 p-adic 神经网络(以特征函数为激活)+ 单可逆 p-adic character 激活的普适逼近定理;为"在 p-adic 上构造神经网络"提供前人根基 |
其余部分(树 softmax 层级归一化、层级聚合、成败条件 A2/A3/D4)为自包含的数学推导与数值验证; 标准 softmax 的层级推广性质可独立证明。
本仓库对应超度量/p-adic attention 方向的前瞻设计草图 + 数值实验报告,聚焦理论自洽与数值可复现; 工程化实现(内核/硬件路径)不在本仓库范围。
本文验证沿用作者另一数学验证库 math-verification 的同一方法论 (NumPy/PyTorch 双库互证、T/S/E 分级判定、固定种子可复现);两库议题互不相关。