サポートベクターマシンや主成分分析の実装の際に必要となってくるラグランジュの未定乗数法について、制約条件を複数に拡張した場合について考えてみます。
目次
2変数の場合
$g(x,y)=0$の元で、$f(x,y)$を最大化したい場合、
$$\cal{L} (x,y,\lambda) = f(x,y)-\lambda g(x,y)$$
とすると、
$$\frac{\partial\cal{L}}{\partial x}=\frac{\partial\cal{L}}{\partial y} = \frac{\partial\cal{L}}{\partial \lambda}=0$$
を満たす変数のペアを見つけることで達成できます。
多変数の場合
$\mathbf{x}\in \mathbb{R}^n$とすることで、上記の式をそのまま利用できます。
$g(\mathbf{x}) = 0$の元で、$f(\mathbf{x})$を最大化したい場合は、
$$\cal{L} (\mathbf{x},\lambda) = f(\mathbf{x})-\lambda g(\mathbf{x})$$
$$\nabla \cal{L} = 0$$
$$\frac{\partial\cal{L}}{\partial \lambda}=0$$
を解けば良いことになります。
複数制約条件の場合
制約条件を以下のように複数に設定します。
$$\mathbf{G} = \begin{pmatrix} g_1(\mathbf{x}\cdots g_n(\mathbf{x})\end{pmatrix}^\mathrm{T}\in\mathbb{R}^n$$
この時、
$$\mathbf{\lambda}\in \mathbb{R}^n$$
とすると、ラグランジアンは以下のように書けます。
$$\cal{L}(\mathbf{x},\mathbf{\lambda})=f(\mathbf{x})-\mathbf{\lambda}^\mathrm{T}\mathbf{G}$$
上記から、
$$\nabla_\mathbf{x} \cal{L} =\nabla_\mathbf{\lambda} \cal{L} =0$$
を解けば良いことになります。
