对称性验证套件Skill symmetry-validation-suite

对称性验证套件是一个用于实证测试数据或模型中对称性假设的技能。它提供完整的测试协议、统计指标和工作流程,帮助用户在构建等变架构前验证对称性的正确性,避免因错误假设导致性能下降。关键词:对称性验证、等变性测试、数据验证、模型测试、人工智能、机器学习、深度学习、数据科学。

机器学习 0 次安装 0 次浏览 更新于 3/22/2026

name: 对称性验证套件 description: 当您需要实证测试数据或模型中假设的对称性是否实际成立时使用。在用户提到测试不变性、验证等变性、检查对称性假设是否正确、调试与对称性相关的模型失败,或在承诺使用等变架构前需要数据驱动的验证时调用。提供测试协议和指标。

对称性验证套件

这是什么?

此技能提供实证测试来验证对称性假设。在承诺使用等变架构前,您应该验证声称的对称性是否确实成立。此技能提供具体的测试协议和指标。

为什么要验证? 错误的对称性假设会损害模型性能。过多对称性会过度约束;缺失对称性会浪费容量。

工作流程

复制此检查清单并跟踪进度:

对称性验证进度:
- [ ] 步骤1:列出要测试的对称性假设
- [ ] 步骤2:设计变换测试集
- [ ] 步骤3:运行不变性/等变性测试
- [ ] 步骤4:验证群结构
- [ ] 步骤5:分析变换下的数据分布
- [ ] 步骤6:记录验证结果

步骤1:列出要测试的对称性假设

从先前的发现工作中收集候选对称性。对于每个,记录:变换类型、期望不变性还是等变性、置信度。优先测试低置信度假设。如果无假设存在,与用户通过领域分析共同识别候选对称性。

步骤2:设计变换测试集

对于每个对称性,创建测试协议:从数据分布中采样代表性输入。定义变换采样策略(随机旋转、全排列等)。确定统计显著性的适当样本大小。考虑边缘情况和边界条件。参见变换采样获取指导。详细方法请参阅方法细节

步骤3:运行不变性/等变性测试

不变性测试:对输入x应用变换T,计算输出f(x)和f(T(x)),测量误差||f(T(x)) - f(x)||。等变性测试:计算f(T(x))和T’(f(x)),其中T’是输出变换,测量误差||f(T(x)) - T’(f(x))||。使用测试协议获取实现细节。跨样本聚合并计算统计量。完整代码示例参见测试实现示例

步骤4:验证群结构

检查声称的变换是否形成有效群:测试闭包(两个变换的组合是一个变换)。测试结合性。验证恒等元存在。验证逆元存在。对于李群,检查生成元在交换子下闭合。参见群结构测试

步骤5:分析变换下的数据分布

检查变换后数据是否保持在分布内:对训练数据应用变换。比较原始与变换后数据的统计量。检查可能破坏假设的分布偏移。识别保持有效性的变换范围。这捕获“近似对称性”情况,其中对称性仅在边界内成立。

步骤6:记录验证结果

使用输出模板创建验证报告。对于每个对称性:陈述假设、测试方法、量化结果、通过/失败决策。推荐是否使用硬等变约束、软约束(正则化)、数据增强或根本不使用对称性。输出质量标准定义在质量评估

测试协议

不变性测试协议

def test_invariance(model, data_samples, transform_fn, n_transforms=100):
    """
    测试模型输出是否对变换不变。

    返回:
        mean_error: 平均||f(T(x)) - f(x)||
        max_error: 最大观察误差
        pass_rate: 误差 < 阈值的比例
    """
    errors = []
    for x in data_samples:
        y_orig = model(x)
        for _ in range(n_transforms):
            x_transformed = transform_fn(x)
            y_transformed = model(x_transformed)
            error = norm(y_transformed - y_orig)
            errors.append(error)

    return {
        'mean_error': mean(errors),
        'max_error': max(errors),
        'std_error': std(errors),
        'pass_rate': sum(e < threshold for e in errors) / len(errors)
    }

等变性测试协议

def test_equivariance(model, data_samples, input_transform, output_transform):
    """
    测试f(T(x)) = T'(f(x))对于等变性。

    返回:
        mean_error: 平均||f(T(x)) - T'(f(x))||
        relative_error: 误差归一化到输出幅度
    """
    errors = []
    for x in data_samples:
        # 方法1:变换后建模
        x_T = input_transform(x)
        y1 = model(x_T)

        # 方法2:建模后变换
        y = model(x)
        y2 = output_transform(y)

        error = norm(y1 - y2)
        relative = error / (norm(y2) + eps)
        errors.append({'absolute': error, 'relative': relative})

    return aggregate_stats(errors)

统计显著性

可靠结果:

  • 使用至少100个数据样本
  • 每个样本测试至少50个随机变换
  • 报告均值、标准差和百分位数(95th、99th)
  • 基于数值精度期望设置阈值
  • 如果比较方法,使用假设检验

变换采样

连续群

采样策略
SO(2) 均匀随机角度 θ ∈ [0, 2π)
SO(3) 均匀随机四元数或轴角
SE(3) 结合SO(3)旋转 + 均匀平移
平移 在预期数据范围内均匀

离散群

采样策略
Cₙ 所有n个旋转
Dₙ 所有2n个元素(旋转 + 反射)
Sₙ 随机排列(如果n ≤ 6,则全枚举)

群结构测试

闭包测试

对于随机 g₁, g₂ ∈ G:
  计算 g₃ = g₁ · g₂
  验证 g₃ ∈ G(在数值容差内)

结合性测试

对于随机 g₁, g₂, g₃ ∈ G:
  计算 (g₁ · g₂) · g₃
  计算 g₁ · (g₂ · g₃)
  验证相等性(在容差内)

恒等元和逆元测试

对于随机 g ∈ G:
  验证 g · e = e · g = g
  找到 g⁻¹ 并验证 g · g⁻¹ = e

解释指南

误差阈值

误差级别 解释
< 1e-6 精确对称性(数值精度)
1e-6 到 1e-3 强近似对称性
1e-3 到 0.01 弱近似对称性
> 0.01 对称性可能不成立

决策矩阵

验证结果 推荐
确认精确对称性 使用硬等变约束
强近似 使用等变架构
弱近似 考虑软约束或增强
对称性破坏 不强制执行此对称性
部分对称性 使用条件/局部等变性

输出模板

对称性验证报告
==========================

测试的对称性:

1. [变换]: [不变性/等变性]
   - 样本大小: [N 样本 × M 变换]
   - 平均误差: [值]
   - 最大误差: [值]
   - 通过率: [%] 在阈值 [值]
   - 结果: [通过/失败/部分]
   - 推荐: [硬约束/软/增强/无]

2. [变换]: [不变性/等变性]
   ...

群结构:
- 闭包: [通过/失败]
- 结合性: [通过/失败]
- 恒等元/逆元: [通过/失败]

分布分析:
- 对称性成立的变换范围: [边界]
- 检测到的破坏因素: [列表]

总结:
- 确认的对称性: [列表]
- 拒绝的对称性: [列表]
- 继续进行架构设计: [群规范]