ラグランジュの未定乗数法 (method of Lagrange multiplier) |
2017-04-15 - 2017-06-24 (update) |
|
|
*ラグランジュの未定乗数法 とは
制約条件を表す関数{$g=0$}のもとで,目的関数{$f$}の極値を計算するための方法です.ラグランジュの未定乗数法は,コンピュータビジョンに関わるアルゴリズムの導出過程にも時々登場します.
解説用の例として,関数{$g(x,y)=x+y-1=0$}が表す直線上で,目的関数{$f(x,y)=2x^2+3y^2$}の極値を推定する問題を考えます.この例に限定された解き方になりますが,制約条件から{$y=1-x$}として関数{$f$}から{$y$}を消去し,関数{$f$}を{$x$}の2次関数として表現することで極値を計算できます.
これに対し,ラグランジュの未定乗数法は組織的な手順から方程式を設定して極値を計算します.詳しい解説や例題などは,[1]の文献が参考になります.
{{small:[1]金谷健一, "これなら分かる最適化数学―基礎原理から計算手法まで", 共立出版, 2005}}
{{small:[link:https://www.amazon.co.jp/これなら分かる最適化数学-基礎原理から計算手法まで-金谷-健一/dp/4320017862] }}
*アリゴリズム
ここでは,ラグランジュの未定乗数法の計算手順を説明します.
**具体例
先に述べた,関数{$g(x,y)=x+y-1=0$}が表す直線上で,目的関数{$f(x,y)=2x^2+3y^2$}の極値を推定する問題を考えます.図1は関数{$g$}が表す直線と関数{$f$}の等高線を表します.
{{small:関数{$f$}は中心が0で,外側に向かうほど値が大きくなる関数です.図1では,その値の増加を等高線で表現しています}}
[img:c5vw]
{{small:図1 関数{$g$}が表す直線と関数{$f$}の等高線}}
図1について,内側の等高線ほど関数{$f$}の値が小さく,外側の等高線ほど関数{$f$}の値は大きくなります.直線上で関数{$f$}の値を見たとき,ある位置{$p$}で極小値をとり,そこから離れると徐々に値は大きくなります.図1から,位置{$p$}は等高線と直線との接点になることが分かります.接点では,等高線と直線の法線方向が平行になります(スケールは不定です).
スケールの不定性を表す定数を{$\lambda$}とすると,以上の関係から次の式(1)を得ることができます.
{$\nabla f=\lambda \nabla g \tag{1}$}
ここで,関数の法線(勾配)方向を表す{$\nabla f$},{$\nabla g$}の値は,各変数の偏微分を使って次のように計算できます.
{$$\nabla f
=\begin{pmatrix}\frac{\partial f}{\partial x}\\\frac{\partial f}{\partial y}\end{pmatrix}
=\begin{pmatrix}4x\\6y\end{pmatrix}$$}
{$$\nabla g
=\begin{pmatrix}\frac{\partial g}{\partial x}\\\frac{\partial g}{\partial y}\end{pmatrix}
=\begin{pmatrix}1\\1\end{pmatrix}$$}
これを式(1)に代入すると,{$x$},{$y$},{$\lambda$}についての2つの式が得られます.
{$$\begin{align*} x&=\frac{1}{4}\lambda \\ y&=\frac{1}{6}\lambda \end{align*}$$}
最後に,この2つの式と関数{$g(x,y)=x+y-1=0$}の連立方程式を解けば,{$x$},{$y$},{$\lambda$}の値を算出できます.
**一般化
変数{$x_1,...,x_n$}について,制約条件を表す関数{$g(x_1,...,x_n)=0$}のもとで目的関数{$f(x_1,x_2,...,x_n)$}の極値を計算する問題を考えます.ここで,{$F=f-\lambda g$}と置くと,式(1)の関係から次の式が成立します.
{$\nabla F=\nabla(f-\lambda g)={\bf 0}$}
これは,関数{$F$}について各変数で偏微分した数値がすべて0であることを表します.
{$$\frac{\partial F}{\partial x_i}=0, (i=1,...,n) \tag{3}$$}
また,{$g=0$}であることから,次の式が成り立ちます.
{$$\frac{\partial F}{\partial \lambda}=g=0 \tag{4}$$}
以上述べた式(3)と式(4)から,関数{$F$}は変数{$x_1,...,x_n$}と{$\lambda$}についてそれぞれ偏微分すると0になる性質があり,そこから合計n+1個の方程式が設定できることが分かります.また,未知数も同数のn+1個であることから,この連立方程式を解くことで解を求めることができます.
なお,先に述べた具体例は,2変数+1変数({$\lambda$})について計算した例になります.
>> ご意見・ご質問など お気軽にご連絡ください.info