mcpField
S
symbolic-equation

symbolic-equation

github.com/lingzhi227データ・データベース4401.6k 回インストール35 週間前に更新
リポジトリ

symbolic-equation について

symbolic-equationは、データから解釈可能な科学方程式を発見するスキルです。物理・科学的な関係をモデル化する研究者向けに、LLM主導の進化的探索と複数の島による集団管理を行います。

主な機能

  1. 01変数、目的変数、適合度の指定
  2. 02島モデルによる方程式の多様性維持
  3. 03LLMによる方程式候補の生成
  4. 04適合度に基づく評価と登録
  5. 05有力な方程式の簡略化と解釈

活用シーン

  1. 01実験データから科学的関係を導出
  2. 02物理的背景に沿った方程式の探索
  3. 03適合度による方程式の順位付けと解釈

インストール

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

$npx skills add https://github.com/lingzhi227/agent-research-skills --skill symbolic-equation

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

同梱ファイルreferences/llmsr-patterns.md

詳細

記号方程式の発見

LLM による進化的探索を用いて、データから解釈可能な科学方程式を発見します。

入力

  • $0 — データセットの説明、変数名、物理的な背景

参考資料

  • LLM-SR のパターン(プロンプト、進化、サンプリング):~/.claude/skills/symbolic-equation/references/llmsr-patterns.md

ワークフロー(LLM-SR に基づく)

ステップ 1:問題の仕様を定義する

以下を含む仕様を作成します。

  1. 入力変数:型を持つ物理量(例:x: np.ndarray、v: np.ndarray)
  2. 出力変数:予測対象の量
  3. 評価関数:適合度指標(通常はパラメーター最適化を伴う負の MSE)
  4. 物理的な背景:方程式の発見を導く領域知識
# Example specification
@equation.evolve
def equation(x: np.ndarray, v: np.ndarray, params: np.ndarray) -> np.ndarray:
    """Describe the acceleration of a damped nonlinear oscillator."""
    return params[0] * x
ステップ 2:マルチアイランドバッファーを初期化する
  • 多様な集団を保つために N 個のアイランドを作成します(デフォルト:10 個)
  • 各アイランドは独立した方程式のクラスタを保持します
  • クラスタは適合度の特徴に基づいて方程式をグループ化します
ステップ 3:進化的探索ループ

収束するか、最大サンプル数に達するまで、以下を繰り返します。

  1. アイランドを選択:アイランドをランダムに選択します
  2. プロンプトを作成:クラスタから上位の方程式をサンプリングします(スコアに基づくソフトマックス重み付け)
  3. LLM が提案:改良版として新しい方程式を生成します
  4. 評価:テストデータで実行し、適合度スコアを計算します
  5. 登録:有効な場合、アイランドのクラスタに追加します
ステップ 4:プロンプトの構築

以前の方程式をバージョン付きの系列として提示します。

def equation_v0(x, v, params):
    """Initial version."""
    return params[0] * x

def equation_v1(x, v, params):
    """Improved version of equation_v0."""
    return params[0] * x + params[1] * v

def equation_v2(x, v, params):
    """Improved version of equation_v1."""
    # LLM completes this
ステップ 5:アイランドのリセット(多様性の維持)

定期的に(デフォルト:4 時間ごと)、以下を行います。

  1. 最良スコアに基づいてアイランドを並べ替えます
  2. 下位 50% のアイランドをリセットします
  3. リセットした各アイランドに、生き残ったアイランドから最良の方程式をシードとして与えます
  4. クラスタのサンプリング温度を再開します
ステップ 6:最良の方程式を抽出する

探索の完了後、以下を行います。

  1. 各アイランドから最良の方程式を収集します
  2. 適合度スコアで順位付けします
  3. 可能であれば簡約します(代数的簡約)
  4. 物理的な解釈とともに報告します

クラスタのサンプリング

クラスタスコアに対する、温度スケジュール付きソフトマックス:

temperature = T_init * (1 - (num_programs % period) / period)
probabilities = softmax(cluster_scores / temperature)
  • 温度が高いほど、探索が活発になります
  • 温度が低いほど、最良のクラスタの活用が優先されます
  • クラスタ内では、短いプログラムが優先されます(オッカムの剃刀)

ルール

  • 方程式では標準的な数学演算のみを使用します
  • パラメーター最適化には scipy BFGS または Adam を使用します
  • 適合度 = 負の MSE(高いほど良好)
  • 方程式の評価にはタイムアウト保護を設けます
  • 再帰方程式は許可されません
  • 純粋な適合度よりも物理的な解釈可能性を優先します

関連スキル

コメント