[日本語](https://ohara-lab-su.github.io/aenet_env/ja/index.html) | [English](https://ohara-lab-su.github.io/aenet_env/en/index.html) | [GitHub](https://github.com/ohara-lab-su/aenet_env) # ANN学習の設定と物理的意味 ## 呼び出しと学習方式 設定は `c01_train_ann.py` 冒頭に置き、実際の処理は `aenet_env.training` と `aenet_env.aenet_backend` の関数を使います。学習アルゴリズムは外部ænet実装に委譲します。元素ごとの局所記述子から原子エネルギーを予測し、全エネルギーを原子寄与の和として近似する局所型モデルです。局所型の近似は長距離相互作用の厳密な再現を自動的に保証しません。 | 設定 | v0.0.3例 | 意味・変更時の注意 | |---|---|---| | `ROOT`, `REFERENCES`, `OUTPUT` | `SiO2`, `SiO2/references`, `SiO2/ann` | 入力XSFと出力先。相対パスは実行時の作業ディレクトリ基準。条件ごとに出力を分離。 | | `SPECIES` | `('Si','O')` | 化学種と元素別ANN。教師構造の元素集合・順序と一致させる。 | | `RADIAL_CUTOFF` | `6.0 Å` | 動径近傍の範囲。配位殻、セル周期像、外挿範囲を考慮。 | | `ANGULAR_CUTOFF` | `3.5 Å` | 角度・方向情報の範囲。局所架橋など対象の幾何が含まれるか検討。 | | `RADIAL_ORDER` | `10` | 動径Chebyshev展開の次数。解像度・特徴数・過学習の兼ね合い。 | | `ANGULAR_ORDER` | `3` | 角度Chebyshev展開の次数。カットオフと組み合わせて検証。 | | `MINIMUM_DISTANCE` | `0.5 Å` | 記述子の下限距離設定。構造の衝突判定の物理的下限とは別。 | | `HIDDEN_NODES` | `30` | `architecture()` は30ノードの`tanh`隠れ層を2層使用。容量と過学習の調整。 | | `ITERATIONS` | `1000` | 学習反復上限。方式間で1反復の意味は一致しない。 | | `TEST_PERCENT` | `10` | 内部テスト割合。独立した外部検証セットを別に確保。 | | `DEVICE` | `cpu` | Torch経路の計算デバイス。Fortran APIには適用されない。 | | `FORCE_WEIGHT` | `0.0` | Torch経路の力の損失重み。0では力を直接学習しない。 | | `GENERATE_EXE`, `TRAIN_EXE` | `generate.x`, `train.x` | Fortran系の実行ファイル。PATHまたは絶対パスを確認。 | ## 方式別の変更点 - `fortran_legacy`:`prepare_fortran_dataset` で `.stp`、`generate.in`、`train.in` と学習データを準備し、`train_fortran_legacy` で `train.x` を実行。 - `fortran_normal`:同じFortran形式データを準備し、`TrainingConfig(iterations=ITERATIONS, testpercent=TEST_PERCENT, method=BFGS())` を `train_fortran_api` に渡す。**添付例の有効経路**。 - `aenet_python_torch`:`ChebyshevDescriptor` と `TorchTrainingConfig`、`Adam(mu=0.001, batchsize=16)` を使う。`FORCE_WEIGHT` と `DEVICE` が反映される。 - `separate_aenet_pytorch`:`SEPARATE_TRAINER`, `SEPARATE_INPUT`, `SEPARATE_MODELS`、変換実行ファイルを別途設定。上記Torch経路とは別実装。 ## 注意事項と評価 記述子カットオフは結合長そのものではなく、中心から見える局所環境の範囲を規定します。小周期DFTセルでは周期像による人工相関に注意してください。学習データの構造・エネルギー・力・元素順・単位を揃え、同一親構造から派生した近似重複を訓練・テストにまたがって混在させないようにします。汎化精度は独立した検証集合でも評価します。エネルギー誤差、力誤差(力を評価する場合)、構造族ごとの誤差、外挿、学習に使わなかった局所環境での挙動を確認します。学習モデルの存在とRMC_POT適用の成功は別の検証段階です。 関連資料: [v0.0.3 READMEに基づくプロジェクトガイド](project_readme.md)。