記事「MQL5における切断ニュートン共役勾配(TNC)アルゴリズムの実装」についてのディスカッション

 

新しい記事「MQL5における切断ニュートン共役勾配(TNC)アルゴリズムの実装」はパブリッシュされました:

MQL5でボックス制約付き切断ニュートン共役勾配法(TNC, Truncated Newton Conjugate-Gradient)最適化アルゴリズムを実装し、その中核となる構成要素であるスケーリング、境界への射影、ラインサーチ、および有限差分によるヘッセ行列と任意のベクトルとの積の計算について詳しく説明します。また、解析的微分と数値微分の両方に対応した目的関数ラッパーを提供し、ローゼンブロックベンチマークを用いてソルバーを検証します。さらに、ロジスティック回帰の実装例を通じて、TNCをL-BFGSの代替ソルバーとして利用する方法を紹介します。

切断ニュートン共役勾配法(TNC, Truncated Newton Conjugate-Gradient)法は、ニュートン法の挙動を近似する二次最適化アルゴリズムです。最適化の文脈において、ニュートン法は関数の最小値を求めるために用いられる手法です。一般的な手順では、まず初期推定値を設定し、その後、目的関数の勾配とヘッセ行列を計算して変数を更新します。この処理を収束するまで繰り返します。

関数の勾配(一次微分)は、その関数の傾きに関する情報を提供し、最も急激に増加する方向を示します。一方、ヘッセ行列(二次微分)は、関数の形状、すなわちその点における曲率に関する情報を提供します。ヘッセ行列がすべての方向に対して正の曲率を示す場合、その点は局所最小値(谷底)であることを意味します。すべての方向に対して負の曲率を示す場合、その点は局所最大値(山頂)です。また、ある方向では正、別の方向では負の曲率を示す場合、その点は鞍点であることを意味します。

最適化における勾配とヘッセ行列


作者: Francis Dube