用途
Symmetry Validation Suite 用于在投入等变架构之前,通过经验性测试协议和指标验证假设的对称性是否真正在数据或模型中成立。错误的对称性假设会损害模型性能:对称性过多会过度约束模型,而缺失对称性则浪费模型容量。该技能帮助用户在承诺使用等变架构之前进行验证。
主要能力
该技能提供一套完整的工作流程,包含六个步骤:
-
列出待测试的对称性假设:从先前的发现工作中收集候选对称性。对每个假设记录变换类型、期望是不变性还是等变性,以及置信水平。优先测试低置信度的假设。如果没有假设,则与用户一起通过领域分析先识别候选对称性。
-
设计变换测试集:为每个对称性创建测试协议,包括从数据分布中采样代表性输入、定义变换采样策略(随机旋转、全排列等)、确定适当的样本量以达到统计显著性,并考虑边缘情况和边界条件。
-
运行不变性/等变性测试:对于不变性测试,对输入 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))||。跨样本聚合并计算统计量。
-
验证群结构:检查所声称的变换是否构成有效的群,包括测试封闭性(两个变换的复合仍是一个变换)、结合性、验证单位元存在、验证逆元存在。对于李群,检查生成元在交换子下是否封闭。
-
分析变换下的数据分布:检查变换后的数据是否保持在分布内。对训练数据应用变换,比较原始数据与变换后数据的统计量,检查可能破坏假设的分布偏移,识别保持有效性的变换范围。这可以捕获“近似对称性”的情况,即对称性仅在边界内成立。
-
记录验证结果:使用输出模板创建验证报告。对每个对称性说明假设、测试方法、定量结果、通过/失败决定。建议使用硬等变约束、软约束(正则化)、数据增强还是完全不使用对称性。
使用方式
该技能以检查清单形式跟踪进度,用户可复制并跟踪以下步骤:列出对称性假设、设计变换测试集、运行不变性/等变性测试、验证群结构、分析变换下的数据分布、记录验证结果。
技能提供了具体的测试协议代码示例:
不变性测试协议:
def test_invariance(model, data_samples, transform_fn, n_transforms=100):
"""
Test if model output is invariant to transformations.
Returns:
mean_error: Average ||f(T(x)) - f(x)||
max_error: Maximum error observed
pass_rate: Fraction with error < threshold
"""
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):
"""
Test if f(T(x)) = T'(f(x)) for equivariance.
Returns:
mean_error: Average ||f(T(x)) - T'(f(x))||
relative_error: Error normalized by output magnitude
"""
errors = []
for x in data_samples:
# Method 1: Transform then model
x_T = input_transform(x)
y1 = model(x_T)
# Method 2: Model then transform
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:对称性可能不成立
决策矩阵:
- 确认精确对称性:使用硬等变约束
- 强近似:使用等变架构
- 弱近似:考虑软约束或增强
- 对称性破缺:不强制此对称性
- 部分对称性:使用条件/局部等变性
输出模板:技能提供对称性验证报告模板,包含测试的对称性列表、群结构测试结果、分布分析、总结(确认的对称性、拒绝的对称性、继续架构设计所需的群规范)。
适用场景
该技能适用于以下场景:在机器学习或科学计算中,用户怀疑数据或模型具有某种对称性(如旋转不变性、平移等变性、置换等变性等),并考虑使用等变神经网络或其他对称性感知架构。在投入架构设计之前,使用该技能验证对称性假设是否成立,以避免因错误假设导致的性能损失。
限制
该技能的具体实现细节、依赖库、安装方式、平台支持等信息在提供的资料中暂未提供。技能中提到的“Methodology Details”、“Test Implementation Examples”、“Group Structure Tests”、“Quality Rubric”等引用内容在资料中未展开,具体内容暂未提供。