微分不可能な関数の最適化

昨日のエントリーの続きです。

で、実際、昨日のエントリーで書いたモンテカルロ(粒子)フィルターの尤度関数は2次微分どころか1次微分もできません。つまりNewton法や準Netwon法のような関数最適化アルゴリズムが使えません。この場合、統計学をよくご存知の方なら「それだと最尤法(尤度関数の最大化)を使ってパラメータ推計ができないじゃん」と思われるに違いありません。

しかし、実は1次微分(2次微分も)ができなくても関数の最適化はできるんですよ(正確に言うと局所的な最小値が求まる)。

その方法をNelder-Meadのシンプレックス法といいます。たとえば2つの変数x,yに関する関数f(x,y)があった時に、3つの点を計算する(たとえば(x1, y1), (x2, y2), (x3, y3)の3点)とf(x,y)の値が(1)もっとも大きいところ、(2)次に大きいところ (3)一番小さいところのが求まります。すると、「f(x,y)がより小さいであろう」と思われる方向が分かるので、その方向に向かって新しい点(x4,y4)を探しに行くという方法です。

この方法をつかえば、1次微分(2次微分も)ができなくても局所的な最小値は求まります。この方法を使ってモンテカルロフィルターの尤度を最適化してやればよいわけです(正しくはモンテカルロフィルターの負対数尤度を最小化します)。

興味のある方がおられたら矢野の論文[草稿]を読んでみてください。