symmetry-validation-suite について
等変アーキテクチャを選ぶ前に、データやモデルで候補となる対称性が成り立つかを検証する、チェックリスト形式のスキルです。変換テスト、群構造の確認、分布分析、検証レポートの作成を案内します。
主な機能
- 01対称性仮説のチェックリスト
- 02不変性・等変性テスト
- 03変換テストセットの設計
- 04群構造の検証
- 05変換後データ分布の確認
- 06検証レポートの推奨事項
活用シーン
- 01アーキテクチャ選定前の対称性評価
- 02変換サンプルの分布内性の確認
- 03ハード制約、ソフト制約、データ拡張の選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill symmetry-validation-suiteインストール後、Claude Code で/symmetry-validation-suiteを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/methodology.mdtest-examples.mdresources/evaluators/rubric_validation.json詳細
対称性検証スイート
誤った対称性の仮定はモデルの性能を損ないます。対称性が強すぎると過度な制約になり、対称性を見落とすとモデルの能力を無駄にします。同変アーキテクチャを採用する前に検証してください。
ワークフロー
このチェックリストをコピーして、進捗を記録してください。
Symmetry Validation Progress:
- [ ] Step 1: List symmetry hypotheses to test
- [ ] Step 2: Design transformation test sets
- [ ] Step 3: Run invariance/equivariance tests
- [ ] Step 4: Verify group structure
- [ ] Step 5: Analyze data distribution under transforms
- [ ] Step 6: Document validation results
ステップ 1:検証する対称性の仮説を列挙する
これまでの探索作業で得られた対称性の候補を集めます。それぞれについて、変換の種類、不変性と同変性のどちらが期待されるか、確信度を記録します。確信度の低い仮説を優先して検証してください。仮説がない場合は、まずユーザーとドメイン分析を行い、対称性の候補を特定してください。
ステップ 2:変換テストセットを設計する
対称性ごとに、テスト手順を作成します。データ分布から代表的な入力をサンプリングします。変換のサンプリング方法(ランダム回転、すべての置換など)を定義します。統計的有意性を確保するための適切なサンプル数を決定します。エッジケースと境界条件も考慮してください。指針については、変換のサンプリングを参照してください。詳細な方法については、方法の詳細を参照してください。
ステップ 3:不変性/同変性テストを実行する
不変性テストでは、入力 x に変換 T を適用し、出力 f(x) と f(T(x)) を計算して、誤差 ||f(T(x)) - f(x)|| を測定します。同変性テストでは、f(T(x)) と、出力変換である T' を適用した T'(f(x)) を計算し、誤差 ||f(T(x)) - T'(f(x))|| を測定します。実装の詳細については、テストプロトコルを使用してください。サンプル全体で集計し、統計量を計算します。コード例については、テスト実装例を参照してください。
ステップ 4:群構造を検証する
主張する変換が有効な群を形成しているか確認します。閉性(2 つの変換の合成も変換であること)をテストします。結合則をテストします。単位元の存在を確認します。逆元の存在を確認します。リー群では、交換子に関して生成子が閉じていることを確認します。群構造テストを参照してください。
ステップ 5:変換後のデータ分布を分析する
変換後のデータが分布内にとどまるか確認します。学習データに変換を適用します。元データと変換後データの統計量を比較します。仮定を破る可能性のある分布シフトがないか確認します。有効性が保たれる変換の範囲を特定します。これにより、対称性が範囲内でのみ成り立つ「近似的対称性」のケースを検出できます。
ステップ 6:検証結果を記録する
出力テンプレートを使用して検証レポートを作成します。対称性ごとに、仮説、テスト方法、定量的な結果、合否判定を記載します。厳密な同変性制約、ソフト制約(正則化)、データ拡張、または対称性を使用しない方法のいずれを採用すべきかを推奨します。この出力の品質基準は、品質評価基準で定義されています。
テストプロトコル
不変性テストプロトコル
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 の場合はすべて列挙) |
群構造テスト
閉性テスト
For random g₁, g₂ ∈ G:
Compute g₃ = g₁ · g₂
Verify g₃ ∈ G (within numerical tolerance)
結合則テスト
For random g₁, g₂, g₃ ∈ G:
Compute (g₁ · g₂) · g₃
Compute g₁ · (g₂ · g₃)
Verify equality (within tolerance)
単位元と逆元のテスト
For random g ∈ G:
Verify g · e = e · g = g
Find g⁻¹ and verify g · g⁻¹ = e
解釈ガイド
エラーしきい値
| エラーレベル | 解釈 |
|---|---|
| < 1e-6 | 厳密な対称性(数値精度) |
| 1e-6 to 1e-3 | 強い近似対称性 |
| 1e-3 to 0.01 | 弱い近似対称性 |
| > 0.01 | 対称性が成り立たない可能性が高い |
判定マトリクス
| 検証結果 | 推奨事項 |
|---|---|
| 厳密な対称性を確認 | ハードな同変制約を使用 |
| 強い近似対称性 | 同変アーキテクチャを使用 |
| 弱い近似対称性 | ソフト制約またはデータ拡張を検討 |
| 対称性が破れている | この対称性を強制しない |
| 部分的な対称性 | 条件付き/局所同変性を使用 |
出力テンプレート
SYMMETRY VALIDATION REPORT
==========================
Tested Symmetries:
1. [Transformation]: [Invariance/Equivariance]
- Sample size: [N samples × M transforms]
- Mean error: [value]
- Max error: [value]
- Pass rate: [%] at threshold [value]
- RESULT: [PASS/FAIL/PARTIAL]
- Recommendation: [Hard constraint/Soft/Augmentation/None]
2. [Transformation]: [Invariance/Equivariance]
...
Group Structure:
- Closure: [PASS/FAIL]
- Associativity: [PASS/FAIL]
- Identity/Inverse: [PASS/FAIL]
Distribution Analysis:
- Transform range where symmetry holds: [bounds]
- Detected breaking factors: [list]
SUMMARY:
- Confirmed symmetries: [list]
- Rejected symmetries: [list]
- Proceed to architecture design with: [group specification]