神経記号プログラミング言語 Scallop
(scallop-lang.org)- ScallopはAIアプリケーションに 論理規則ベースの記号推論 を組み込むための宣言的言語で、関係データベースのクエリ言語である Datalog を基盤としている
- ソルバーは 離散的・確率的・微分可能な推論 をサポートしており、アプリケーション要件に合わせて推論方式を選択できる
- Pythonバインディングを通じてプログラム内に 論理推論モジュール を組み込め、既存の PyTorch 機械学習パイプラインと統合可能
- ビジョン・NLPタスクでは、CNNやTransformerが生成する神経コンポーネントと 論理規則コンポーネント を組み合わせて構成する
- CLEVRの視覚推論、Pathfinderの接続性判定、手書き数式評価のように、神経コンポーネントと規則を同時に学習 するエンドツーエンドの例を提供する
Scallopの中核構成
-
Language
- ScallopはAIアプリケーションで 記号推論 を扱うための宣言的言語
- 基盤は関係データベース向けの論理規則ベースのクエリ言語である Datalog
-
Solver
- Scallopは拡張可能なDatalogソルバー
- 離散的推論、確率的推論、微分可能推論 モードをサポート
- 各推論モードは異なるAIアプリケーションの要件に合わせて設定可能
-
Framework
- Pythonプログラム内で論理推論モジュールを利用できるバインディングを提供
- 既存の PyTorch 機械学習パイプラインと深く統合できる
例示アプリケーション
- CLEVRは、画像内の単純な3Dオブジェクトについて「青いオブジェクトはいくつあるか?」のような質問に答える 視覚推論 タスク
- 神経コンポーネントが画像の シーングラフ(scene graph) と質問を表す プログラム的クエリ(programmatic query) を生成する
- 推論コンポーネントは、指定された属性に基づいてオブジェクトを選択・比較・カウントする演算を論理規則として記述する
- Scallopはこれらのコンポーネントを共通フレームワークに統合し、エンドツーエンド学習を実行できるようにする
- Pathfinderは、2つの点と破線がある白黒画像において、2点が破線で接続されているかを判定する 長距離接続性推論 タスク
- 点とダッシュを検出するシンプルな神経アーキテクチャと、数行のScallop論理規則で構成できる
- 提示された規則では
dash(x, y)を経路とし、再帰的にpath(x, z), dash(z, y)を接続してis_connected()を判定する - この構成は最新のTransformerより高い性能を示す
- 手書き数式評価は、0から9までの数字と単純な算術演算からなる 手書き記号シーケンス を認識し、式を計算するタスク
- 例では
1 + 3 / 5を入力として結果値1.6を計算する - Scallopでは、確率的入力をパースできる完全な 文脈自由文法パーサー を構築できる
- パーサーと評価器はScallopコード5行で記述可能
- このプログラムは個別の記号認識ニューラルモデルとともにエンドツーエンドで学習でき、学習後は最も可能性の高い数式を見つけて評価結果を返す
- 例では
まだコメントはありません。