autodiff
Luna-Flow/autodiff は、フォワードモード自動微分によって通常の MoonBit プログラムの正確な 1 階導関数を計算します。Luna Flow のトレイトに対して書かれたプログラムを を満たす双対数 上で実行すると、導関数が 成分に現れます。このリポジトリは、双対数型、スカラードライバー、除算と平方根のチェック付き定義域、linear-algebra のベクトル上の勾配とヤコビ行列、そして luna-poly の多項式の導関数を提供します。
このマニュアルは MoonBit 0.10 上のバージョン 0.2.0 を対象としています。
パッケージ
| パッケージ | インポートパス | 役割 | ページ |
|---|---|---|---|
autodiff | Luna-Flow/autodiff | ワンストップのファサード:Dual、diff、value_and_diff、再エクスポートされたトレイト | API · チュートリアル · 設計 |
dual | Luna-Flow/autodiff/dual | Dual[T] 型とその算術、規則、インスタンス | API · チュートリアル · 設計 |
forward | Luna-Flow/autodiff/forward | スカラードライバー diff と value_and_diff | API · チュートリアル · 設計 |
core | Luna-Flow/autodiff/core | 代数的ファサード:Dual と luna-generic の構造トレイト | API · チュートリアル · 設計 |
elementary | Luna-Flow/autodiff/elementary | 解析的ファサード:Dual と arithmetic の関数トレイト | API · チュートリアル · 設計 |
checked | Luna-Flow/autodiff/checked | チェック付きファサード:DivChecked、SqrtChecked、コンテキストとエラー | API · チュートリアル · 設計 |
linalg | Luna-Flow/autodiff/linalg | linear-algebra/immut 上の勾配とヤコビ行列 | API · チュートリアル · 設計 |
poly | Luna-Flow/autodiff/poly | 密な多項式と 1 変数の疎な多項式(luna-poly)の導関数 | API · チュートリアル · 設計 |
さらに 2 つのパッケージにはマニュアルのページがありません。examples には各レイヤーを数行で示す 5 つの小さな関数(basic_diff_example、square_diff_example、gradient_example、jacobian_example、polynomial_derivative_example)が含まれています。src/examples/examples.mbt を読んでください。tests は、linear-algebra と luna-poly の統合テストを含む、全パッケージのブラックボックステストスイートです。アーキテクチャガイド はパッケージ間の依存関係を示し、リポジトリの規約 はこのマニュアルの命名規則をまとめています。
読み進め方
自動微分が初めての方。 まず autodiff チュートリアル から始め、次に双対数と有限差分を比較する dual チュートリアル に進んでください。
ライブラリを使う方。 Luna-Flow/autodiff をインポートし、autodiff API と dual API を手元に置いてください。ベクトルや多項式には linalg チュートリアル や poly チュートリアル を、失敗を値として扱う必要がある場合は checked チュートリアル を参照してください。
コントリビュートする方。 まず代数、微分規則、そして新しい演算がすべて守るべき誤差の上界について dual の設計 を読み、次に アーキテクチャガイド と、変更するパッケージの設計ページを読んでください。
インストール
moon add Luna-Flow/autodiff@0.2.0
ブリッジにはそれぞれのライブラリも必要です。linalg には moon add Luna-Flow/linear-algebra を、poly には moon add Luna-Flow/luna-poly を実行します。
ツールチェーン
このマニュアルのコードと例には、MoonBit moonc 0.10 以降と、moon.mod / moon.pkg のマニフェスト形式が必要です。テストスイートは wasm-gc、wasm、js、native の各ターゲットで実行されます。
検証
moon check --target all
./run_test.sh
moon info