ラグランジュの未定乗数法

Takami Torao
  • このエントリーをはてなブックマークに追加

ある関数 \(f(x)\) に条件 \(g(x)=0\) が設定されているとき、未定乗数 \(\lambda\) を導入して \(f(x)\) の極値 (最大値/最小値となる \(x\)) を求める方法。

図で表してみよう。右に例示する 2 次元の \(\vector{x}=(x,y)\) において、で示した \(f(x,y)\) がで示した条件 \(g(x,y)\) を満たすのはそれらの交差部分となる水色の曲線である。この曲線に対する極値の \((x', y')\) を求める。

\(n\) 個の変数 \(\vector{x} = (x_1, x_2, \ldots, x_n)\) に対し \(m\) 個の条件 \[g_1(\vector{x}) = g_2(\vector{x}) = \ldots = g_m(\vector{x}) = 0\] のもとで関数 \(f(\vector{x})\) を最大化する \(\vector{x}\) を考える。

\(\vector{\lambda} = (\lambda_1, \ldots, \lambda_m)\) を導入して \(L(\vector{x}, \vector{\lambda})\) を以下のように定義する。 \[ L(\vector{x}, \vector{\lambda}) = f(\vector{x}) - \sum_{i=1}^m \lambda_i g_i(\vector{x}) \] ある \(\vector{x}'\) が条件 \(\vector{g}(\vector{x}') = \vector{0}\) を満たすのであれば \[ \frac{\partial L}{\partial x_1'} = \cdots = \frac{\partial L}{\partial x_n'} = \frac{\partial L}{\partial \lambda_1'} = \cdots = \frac{\partial L}{\partial \lambda_m'} = 0 \] が成り立つ。ここで \(\vector{\lambda}\) をラグランジュ乗数、\(L(\vector{x}, \vector{\lambda})\) をラグランジュ関数と呼ぶ。実際の関数 \(f(\vector{x})\) をこの微分方程式に適用して解くことで \(\vector{x}'\) の値を得ることが出来る。

適用例

多項分布の推定において、対数関数 \( f(x) = a + b \log x \) の極値を求めるときに \(\frac{d P(x)}{d x} = \frac{b}{x} = 0\) となる問題をラグランジュの未定乗数法で回避している。