導関数不要最適化(DFO)
DFO ソルバーは、ブラックボックス モデルの最適化を目的としており、キャリブレーション(非線形最小二乗法)問題(DFLS) または一般的な目的関数を持つ問題(DFNO)のいずれかを扱うことができます。
キャリブレーション: DFLS(導関数不要非線形最小二乗法) [
handle_solve_dfls
|e04fff
|e04ffc
]DFNO(導関数不要非線形最適化) [
handle_solve_dfno
|e04jdf
|e04jdc
]
複雑な数値モデルの最適化は、産業界(金融、マルチフィジックスシミュレーション、 工学など)で最も一般的に見られる問題の1つです。これらの最適化問題を、 ガウス-ニュートン法(非線形最小二乗構造を持つ 問題の場合)や CG法(構造化されていない非線形目的関数の場合)などの標準的な最適化アルゴリズムで解くには、 モデルの導関数の良好な推定値が必要です。 厳密な導関数が簡単に計算できる場合は、導関数ベースの手法を使用することが望ましいです。しかし、導関数を 明示的に記述したり、AD手法を適用したりすることは、モデルがブラックボックスの場合には不可能かもしれません。 代替案として、有限差分法による導関数の推定は、 すぐに実用的でなくなったり、計算コストが高すぎたりする可能性があります。このような状況下では、 ユーザーが導関数を提供する必要のないモデルベースのDFOソルバーが魅力的な最適化ソルバーとなります。
nAGのモデルベースのDFO DFLSおよびDFNOソルバーには、いくつかの魅力的な特徴があります:
- ノイズに対する耐性が証明されている
- 最小二乗ソルバーは、わずか2回の目的関数評価で進捗を開始できる
- ソルバーと関連ルーチンのシンプルなインターフェースを持つnAG最適化モデリングスイート(NOMS)に統合されている
- オプションの逆通信インターフェース
図1. モデルベースのDFOアルゴリズムhandle_solve_dfls
の2回の反復を示すアニメーション。
ポスター
nAGのDFO/DFLS機能について議論した2019年のポスターが nAGのウェブサイトで入手可能です。 |
例
このJupyterノートブックは、目的関数が決定論的でないノイズのある問題の最適化を紹介しています。 この例では、有限差分法で勾配を推定する導関数ベースのソルバーの代わりにDFOソルバーを使用する利点について議論し、説明しています。
詳細情報
OptCornerのブログ記事 導関数の代償 - 導関数フリー最適化
例 [ Python例 | C例 | Fortran 90例 ]
例 [ Python例 | C例 | Fortran 90例 ]
参考文献
- C. Cartis, J. Fiala, B. Marteau, and L. Roberts (2019) モデルベースの導関数フリー最適化ソルバーの柔軟性と堅牢性の改善. ACM Transactions On Numerical Software.
- C. Cartis and L. Roberts (2017) 導関数フリーのガウス-ニュートン法. Mathematical Programming Computation.
- Powell M. J. D. (2009) 導関数を用いない制約付き最適化のためのBOBYQAアルゴリズム. Report DAMTP 2009/NA06 University of Cambridge.
nAGライブラリのPython版の入手方法
- nAGライブラリのPython版のインストール方法に関する説明
- リポジトリ内のJupyterノートブックの実行方法に関する説明