mcpField
E
equivariant-architecture-designer

equivariant-architecture-designer

github.com/lyndonklデータ・データベース18782 回インストール10 週間前に更新
リポジトリ

equivariant-architecture-designer について

equivariant-architecture-designerは、指定した対称性に基づくニューラルネットワークを設計する研究者やエンジニア向けのスキルです。アーキテクチャ、層、トポロジー、実装ライブラリを選び、仕様を作成します。

主な機能

  1. 01対称群に合うアーキテクチャの選定
  2. 02等変層とコンポーネントの選択
  3. 03ネットワークトポロジーの設計
  4. 04実装ライブラリの選択
  5. 05層ごとのアーキテクチャ仕様の作成

活用シーン

  1. 01回転に対応する画像モデルの設計
  2. 023D点データ向けモデルの仕様策定
  3. 03不変な分類出力の設計
  4. 04対称群に適したライブラリの選択

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lyndonkl/claude --skill equivariant-architecture-designer

インストール後、Claude Code で/equivariant-architecture-designerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
methodology.md
templates.md
resources/evaluators/
rubric_architecture.json

詳細

等変アーキテクチャ設計

ワークフロー

このチェックリストをコピーして、進捗を記録してください。

Architecture Design Progress:
- [ ] Step 1: Review group specification and requirements
- [ ] Step 2: Select architecture family
- [ ] Step 3: Choose specific layers and components
- [ ] Step 4: Design network topology
- [ ] Step 5: Select implementation library
- [ ] Step 6: Create architecture specification

ステップ 1:群の仕様と要件を確認する

検証済みの群の仕様を集めます。対象となる群、必要なのが不変性か等変性か、データ領域(画像、点群、グラフなど)、タスクの種類(分類、回帰、生成)、計算上の制約を確認してください。群が指定されていない場合は、まずユーザーと協力して特定してください。

ステップ 2:アーキテクチャファミリーを選択する

アーキテクチャ選択ガイドを使って、対称性群に適したアーキテクチャファミリーを選びます。主なファミリーは、グリッド上の離散群には G-CNN、連続 2D 群には Steerable CNN、点データ上の E(3) には e3nn/NequIP、グラフ上の置換には GNN、集合上の置換には DeepSets です。表現力と効率のトレードオフを考慮してください。

ステップ 3:具体的なレイヤーとコンポーネントを選択する

レイヤーパターンに基づいてレイヤーの種類を選択します。各レイヤーについて、畳み込みの種類(通常、群、ステアラブル)、非線形性(等変性を保つ必要があるため、ゲート方式、ノルムベース、またはテンソル積を使用)、正規化(バッチ正規化は等変性を損なうため、レイヤー正規化または等変バッチ正規化を使用)、プーリング(不変な出力には不変プーリングを使用し、等変な出力には構造を保持)を決定します。詳細な設計方法については、方法論の詳細を参照してください。

ステップ 4:ネットワークのトポロジーを設計する

ネットワーク全体の構造を設計します。エンコーダーアーキテクチャ(特徴量の抽出方法)、各段階での特徴表現(リー群の場合は既約表現)、プーリング/集約戦略、タスク要件に合った出力ヘッドを決めます。一般的な設計にはトポロジーパターンを使用してください。群のサイズに応じて、深さと幅のバランスを取ります。

ステップ 5:実装ライブラリを選択する

ライブラリリファレンスに基づいてライブラリを選びます。対象の群、フレームワークの好み(PyTorch/JAX)、性能要件に合わせてください。よく使われる選択肢は、e3nn(E(3)/O(3)、PyTorch)、escnn(離散群、PyTorch)、pytorch_geometric(置換、PyTorch)です。選択したライブラリが対象の群に対応していることを確認してください。

ステップ 6:アーキテクチャ仕様を作成する

出力テンプレートを使って設計を文書化します。レイヤーごとの仕様、表現の種類、ライブラリの依存関係、想定されるパラメーター数、疑似コードまたは実際のコードスケルトンを含めてください。この仕様は、実装とその後の等変性検証の指針になります。すぐに使える実装テンプレートについては、コードテンプレートを参照してください。この出力の品質基準は、品質ルーブリックで定義されています。

対称性群別のアーキテクチャ選択ガイド

群領域推奨アーキテクチャライブラリ
Cₙ, Dₙ2D 画像G-CNN、群等変 CNNescnn, e2cnn
SO(2), O(2)2D 画像Steerable CNN、調和ネットワークescnn
SO(3)球面球面 CNNe3nn, s2cnn
SE(3), E(3)点群等変 GNN、テンソル場ネットワークe3nn, NequIP
Sₙ集合DeepSetspytorch, jax
Sₙグラフメッセージパッシング GNNpytorch_geometric
E(3) × Sₙ分子E(3) 等変 GNNe3nn, SchNet
タスクの種類別
タスク出力の種類主な考慮事項
分類不変スカラー不変プーリングを使用
回帰(スカラー)不変スカラー分類と同様
セグメンテーション点ごとの等変出力出力まで等変性を保持
力の予測等変ベクトルl=1 既約表現として出力
姿勢推定等変変換回転と並進を出力
生成等変構造等変デコーダー

レイヤーパターン

等変畳み込みパターン

標準 G 畳み込み:

(f ⋆ ψ)(g) = ∫_G f(h) ψ(g⁻¹h) dh
  • 入力:群 G 上の特徴マップ
  • カーネル:G 上の関数
  • 出力:G 上の特徴マップ

ステアラブル畳み込み:

  • 予測可能な変換を行うステアラブルカーネルを使用します
  • 既約表現によってパラメーター化されます
  • 連続群に対してより効率的です

e3nn テンソル積レイヤー:

# Combine features with different angular momenta
tp = o3.FullyConnectedTensorProduct(
    irreps_in1, irreps_in2, irreps_out
)
output = tp(input1, input2)
等変非線形性

問題:標準的な非線形関数(ReLU など)は等変性を損ないます。

解決策:

種類仕組み使用する場面
ノルムベース
ゲート式不変量を使って等変量をゲート制御汎用
テンソル積Clebsch-Gordan による非線形性e3nn、高品質
不変特徴l=0 成分のみに適用シンプル、高速
等変正規化

バッチ正規化:等変性を損ないます(向きごとに統計量が異なります) 解決策:

  • レイヤー正規化(サンプルごとに正規化)
  • 等変バッチ正規化(既約表現チャネルごとに正規化)
  • インスタンス正規化(多くの場合問題ありません)
不変性のためのプーリング

等変特徴から不変な出力を得るには:

方法式使用する場面
平均プーリング群にわたる平均連続群
合計プーリング要素の合計集合、グラフ
最大プーリングmax
アテンションプーリング重み付き和重要度が異なる場合

トポロジーパターン

エンコーダー・デコーダー(セグメンテーション、生成)
Input → [Equiv. Encoder] → Latent (equiv.) → [Equiv. Decoder] → Output
  • エンコーダー:段階的な特徴抽出
  • 潜在表現:等変表現
  • デコーダー:対称性を保って再構成
エンコーダー・プーリング(分類)
Input → [Equiv. Encoder] → Features (equiv.) → [Invariant Pool] → [MLP] → Class
  • 最後にプーリングして不変特徴を取得します
  • 最終 MLP は不変表現に対して動作します
メッセージパッシング(グラフ/点群)
Nodes → [MP Layer 1] → [MP Layer 2] → ... → [Aggregation] → Output
  • 各レイヤー:近傍を集約し、ノードを更新します
  • 集約:不変性には合計/平均、等変性にはノードごとの処理を使用します

ライブラリーリファレンス

e3nn(PyTorch)

群:E(3)、O(3)、SO(3) 強み:完全な既約表現のサポート、テンソル積、球面調和関数 用途:分子モデリング、3D 点群、物理学

from e3nn import o3
irreps = o3.Irreps("2x0e + 2x1o + 1x2e")  # 2 scalars, 2 vectors, 1 tensor
escnn(PyTorch)

群:離散群(Cₙ、Dₙ)、連続 2D(SO(2)、O(2)) 強み:画像処理、充実したドキュメント 用途:回転/反射対称性を持つ 2D 画像

from escnn import gspaces, nn
gspace = gspaces.rot2dOnR2(N=4)  # C4 rotation group
pytorch_geometric(PyTorch)

群:置換(Sₙ) 強み:グラフ、バッチ処理、多数の GNN レイヤー 用途:グラフの分類/回帰、ノード予測

from torch_geometric.nn import GCNConv, global_mean_pool
その他のライブラリー
ライブラリー群フレームワーク備考
NequIPE(3)PyTorch分子動力学
MACEE(3)PyTorch分子ポテンシャル
jraphSₙJAXグラフネットワーク
geomstatsリー群NumPy/PyTorch多様体学習

出力テンプレート

ARCHITECTURE SPECIFICATION
==========================

Target Symmetry: [Group name and notation]
Symmetry Type: [Invariant/Equivariant]
Task: [Classification/Regression/etc.]
Domain: [Images/Point clouds/Graphs/etc.]

Architecture Family: [e.g., E(3) Equivariant GNN]
Library: [e.g., e3nn]

Layer Specification:
1. Input Layer
   - Input type: [e.g., 3D coordinates + features]
   - Representation: [e.g., positions (l=1) + scalars (l=0)]

2. [Layer Name]
   - Type: [Convolution/Tensor Product/Message Passing]
   - Input irreps: [specification]
   - Output irreps: [specification]
   - Nonlinearity: [Gated/Norm/None]

3. [Continue for each layer...]

N. Output Layer
   - Aggregation: [Mean/Sum/Attention]
   - Output: [Invariant scalar / Equivariant vector / etc.]

Estimated Parameters: [count]
Key Dependencies: [library versions]

Code Skeleton:
[Provide implementation outline or pseudo-code]

NEXT STEPS:
- Implement the architecture using the specified library
- Verify equivariance through numerical testing after implementation

コメント