目次
Math
Analysis
Experiment
Simulations

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

ここでは,条件付きの極値問題を解くときに頻繁に用いられる数学的テクニックである,ラグランジュの未定乗数法を学習します.もう名前からして強そうですが,実際,あらゆる分野で重宝されています.行列分解,最適化,脳波解析は勿論,普通のアンケート調査なんかを相手に用いる多変量解析など,実はあらゆる場面でお世話になります.

初めて見た時は意味が分からなかったので飛ばしていましたが,ちゃんと勉強したら案外そんな事もなかったのでまとめます.これが出来るようになるだけで大分と学習が楽になるので頑張りましょう.

▶︎
all
running...

定義と用法

まず,式を載せてみます.本来は多次元に拡張可能なものですが,とりあえずここでは簡単のため2次元で載せます.

ラグランジュの未定乗数法\textbf{ラグランジュの未定乗数法}

制約条件 g(x,y)=0g(x,y) = 0 の元で,f(x,y)f(x,y) を最大化する (x,y)(x,y) を求める問題を考えるとき,ラグランジュ乗数 λ\lambda を用いてラグランジュ関数 LL

L(x,y,λ)=f(x,y)λg(x,y)(1)L(x,y,\lambda) = f(x,y) - \lambda g(x,y) \tag{1}

と置くと,ある (x0,y0)(x_0,y_0) が題意の条件を満たすなら,ある λ0\lambda_0 が存在し,(x0,y0,λ0)(x_0, y_0, \lambda_0) において
Lx=Ly=Lλ=0(2)\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} = \frac{\partial L}{\partial \lambda} = 0 \tag{2}

が成り立つ.

といったようなものです.勿論,雑に定義しているので数学的に正しい議論をしようとするともっと仮定とか必要になりますが,今は置いておきます.

最初は何を言ってるか訳が分からない式だと思います.2変数関数の極値問題を考えていて,それが分からないから悩んでいる人に対して「じゃあ3変数にしようか!!」とか意味が分かりません.

さらにここで深くは触れないですけど,実際ラグランジュ使って解いたところで,これで出てきた解=最大値(最小値)となるとは限らなくて,あくまで停留点,つまり極値の候補しか分からないという.

うーん.意味あるのかそれ...なんて考えてしまい,勉強をやめていました.しかしこれから確認するように,考え方はシンプルだし,とてもありがたいものです.

まず,用語ですがラグランジュの"未定"乗数法というからには,未定ななんらかの値を掛け算して解く方法?みたいに捉えられますね.この未定乗数がλ\lambdaの事です.それから,何故未定かって正味λ\lambdaの値そのものには興味がないというか,どうでもいいのです.λ\lambdaを使って表せるという事実が大事.

ラグランジュの未定乗数法の気持ち

さて,まずは式 (2) の各項について考えていきます.あえて3つ目,L/λ=0\partial L/ \partial \lambda =0から考えていきます.と言っても,計算すればすぐ分かりますので式をどうぞ.

Lλ=(f(x,y)λg(x,y))λ=g(x,y)=0\frac{\partial L}{\partial \lambda} = \frac{\partial(f(x,y) - \lambda g(x,y))}{\partial \lambda} \\ \\[1ex] = -g(x,y) \\ = 0

普通に,関数LLλ\lambdaで偏微分するとこうなりますね.ここで,g(x,y)=0-g(x,y) = 0になるのは制約条件として与えられている g(x,y)=0g(x,y) =0 によります.

では残りの二つについて,すなわちL/x=L/y=0\partial L/ \partial x = \partial L/ \partial y = 0について考えます.同じくLを展開していくと

Lx=f(x,y)xλg(x,y)x=0f(x,y)x=λg(x,y)xLy=f(x,y)yλg(x,y)y=0f(x,y)y=λg(x,y)y\frac{\partial L}{\partial x} = \frac{\partial f(x,y)}{\partial x} - \lambda\frac{\partial g(x,y)}{\partial x}=0 \\ \\[1ex] \therefore \frac{\partial f(x,y)}{\partial x} = \lambda \frac{\partial g(x,y)}{\partial x} \\ \\[1ex] \frac{\partial L}{\partial y} = \frac{\partial f(x,y)}{\partial y} - \lambda\frac{\partial g(x,y)}{\partial y}=0 \\ \\[1ex] \therefore \frac{\partial f(x,y)}{\partial y} = \lambda \frac{\partial g(x,y)}{\partial y}

と,それぞれ表せます.ただの移項なのでここまでは大丈夫でしょう.そして,でてきたこの二つの式をベクトルの形に整理すると次のようになります.

(f(x,y)xf(x,y)y)=λ(g(x,y)xg(x,y)y)(3)\begin{pmatrix} \displaystyle \frac{\partial f(x,y)}{\partial x}\\ \\ \displaystyle \frac{\partial f(x,y)}{\partial y} \end{pmatrix} =\lambda \begin{pmatrix} \displaystyle \frac{\partial g(x,y)}{\partial x}\\ \\ \displaystyle \frac{\partial g(x,y)}{\partial y} \end{pmatrix} \tag{3}

綺麗になりました.さて,ここで得られた形は,関数の勾配ベクトルそのものです.勾配ベクトルとは,多変数関数 f(x1,...,xd)f(x_1,...,x_d) に対して,その偏微分を並べたベクトル一般に,多変数の関数をそれぞれの変数で偏微分して並べたものです.数学的な記法では(f\nabla f)と書きます.

これを使うと,更に式 (3) を以下のように綺麗に表せます.

f=λg\nabla f = \lambda \nabla g

ff の勾配は gg の勾配が λ\lambda 倍されたものであるという事になります.勾配の定義を思い出してもらうと,その向きはその点で取った接線に垂直な線,法線ベクトルを指します.

よって,この式の意味するところは ffgg の法線ベクトルが平行であるという事になります.平行の定義ですね.

逆説的になりますが,同じ点で得られた法線ベクトルが平行という事は,この二つの関数が接線を共有している,つまり接しているという事になります.

まとめると,式(2)

Lx=Ly=Lλ=0\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} = \frac{\partial L}{\partial \lambda} = 0

は言い換えると,

f=λgg(x,y)=0\nabla f = \lambda\nabla g \land g(x,y) =0

となります.g(x,y)=0g(x,y) =0 を満たす中で,ffgg の勾配ベクトルが平行,すなわち両者が接している点が,極値の候補だということですね.
ちなみに,接線が平行であれば法線ベクトルが同じ向きを向いているか,反対方向を向いているか,またその長さがそれぞれどうであるかには興味がありません.そこを調整するために導入されているのが未定乗数 λ\lambda である,途いう風にも解釈できます.

視覚的に考えてみます.

まず,関数 f(x,y)f(x,y)が取り得る値をx,yx,y平面上で等高線として表します.
下の図は,それを上から見た図だと思ってください.

次に,与えられた制約条件 g(x,y)=0g(x,y) = 0 の境界を描きます.すると図の曲線のようなものが得られます.制約条件ということは,求める解はこの曲線上のどこかになるわけで,それがちょうど等高線と接する点ということになります.

何故なら,接しておらず交差している場合,制約条件を満たす範囲にf(x,y)>k,f(x,y)<kf(x,y) > k, f(x,y) <kの領域が存在してしまうためです.それならそっちにずれた方が値が大きく(小さく)なりますよね.制約条件にぎりっぎり引っかかる,かすめる時が極値になっているわけです.

図では,点線になっている等高線は境界曲線と接しておらず交差しているため,曲線上にもっと高い,あるいは低い点が存在するはずです.イメージは下の図.

ここら辺は普通に微分の考え方ですね.制約条件を満たしつつ,与えられた関数に従う点を求めるのだから,接点を求めるわけですね.

例題

g(x,y)=x+y1=0g(x,y) = x+y-1=0の制約条件のもと,関数f(x,y)=1x2y2f(x,y) = 1-x^2-y^2の最大値を求めよ.

まずはラグランジュを使わず,普通に考えて目安をつけてみましょう.関数 ff の等高線を描いてみると,

このようになります.(0,0)(0,0) を中心として,同心円状に広がっています.ここに,制約条件である g(x,y)g(x,y) を描くと

このような線が得られます.今回聞かれているのは,この光速条件を満たす関数 f(x,y)f(x,y) 上の点であるため,両者が接する点が求めたい解であることが分かります.

さて,この点を求めるのが今回の課題です.制約条件の元の極値問題なので,ラグランジュの未定乗数法を使ってみます.まずラグランジュ関数 LL は以下のようになります.

L(x,y,λ)=f(x,y)λg(x,y)=1x2y2λ(x+y1)L(x,y,\lambda) = f(x,y) - \lambda g(x,y) \\ \qquad \qquad\qquad\qquad= 1-x^2-y^2 -\lambda(x+y-1)

続いて,x,y,λx,y,\lambdaのそれぞれについて偏微分すると,

Lx=2xλLy=2yλLλ=xy+1\frac{\partial L}{\partial x} = -2x-\lambda\\ \\[1ex] \frac{\partial L}{\partial y} = -2y - \lambda\\ \\[1ex] \frac{\partial L}{\partial \lambda} = -x - y +1

が導けます.極値の候補は,これらがゼロになる点なので

2xλ=02yλ=0xy+1=0-2x-\lambda = 0\\ -2y - \lambda = 0\\ -x - y +1 = 0

の連立方程式を解くと,関数ffの制約条件ggの元での最大値は(12,12)(\frac{1}{2}, \frac{1}{2})であり,対応するラグランジュ乗数は -1 である事が分かります.

いつ使うのか

ここでは,あまり細部について解説はせずに,よく使われるメジャーな手法の中でラグランジュ未定乗数法がどのように使われるのかを確認してみます.

主成分分析

こんど

主成分分析

こんど

正準相関分析

x=(x1xn),y=(y1ym)x = \begin{pmatrix} \displaystyle x_1\\ \vdots\\ \displaystyle x_n \end{pmatrix} , y = \begin{pmatrix} \displaystyle y_1\\ \vdots\\ \displaystyle y_m \end{pmatrix}

n,mn,m 変数データについて,

u=a1x1+a2x2+...+anxnv=b1y1+b2y2+...+bmymu = a_1x_1 + a_2x_2 + ... + a_n x_n\\ v = b_1y_1 + b_2y_2 + ... + b_m y_m
としたとき,

cor(u,v)cor(u,v) が最大になる a,ba,b を求める.

cor(u,v)=cov(u,v)V[u]V[v]cor(u,v) = \frac{cov(u,v)}{\sqrt{V[u]}\sqrt{V[v]}}

より,cor(u,v)cor(u,v)の最大化は,V[u]=V[v]=1\sqrt{V[u]} = \sqrt{V[v]} = 1の時であり,これより

f(a,b)=cov(u,v)g1(a,b)=V[u]1(=0)g2(a,b)=V[v]1(=0)f(a,b) = cov(u,v)\\ g_1(a,b) = V[u]-1 (=0)\\ g_2(a,b) = V[v] -1 (=0)\\

という,制約付きの最適化問題に帰着される.この問題はラグランジュの未定乗数法によって解く.

Support vector machine (SVM)

機械学習で最もよく使われる古典的な手法の一つであるSVMにも用いられます(というか,機械学習はだいたいが制約付きの最適化問題なので他の手法でも頻繁に使います.)

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

最後に,解説は今回はとりあえず省きます (筆者がちゃんと勉強できていない)が,2次元ではなくより一般の次元,複数の制約条件におけるラグランジュの未定乗数法の形をまとめます.

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

dd 変数関数 ff の,制約条件 g1,...,gmg_1,...,g_m の元での極値を考えると,

ラグランジュ関数は
L(x1,...,xd,λ1,...,λm)=f(x1,...,xd)i=1mλigi(x1,...,xd)L(x_1, ...,x_d, \lambda_1,...,\lambda_m ) \\ = f(x_1,...,x_d) - \sum_{i=1}^m \lambda_i g_i (x_1,...,x_d)

と表され,題意を満たす点 (x1,...,xd)(x_1,...,x_d)

i=1mλigix1=...=i=1mλigixd=0\sum_{i=1}^m \lambda_i \frac{\partial g_i}{\partial x_1} = ... = \sum_{i=1}^m \lambda_i \frac{\partial g_i}{\partial x_d} = 0

あるいは
Lx1=...=Lxd=Lλ1=...=Lλm=0\frac{\partial L}{\partial x_1} = ... =\frac{\partial L}{\partial x_d} =\frac{\partial L}{\partial \lambda_1} = ...=\frac{\partial L}{\partial \lambda_m} =0

を満たす.

この時,特に一つ目の条件
i=1mλigix1=...=i=1mλigixd=0\sum_{i=1}^m \lambda_i \frac{\partial g_i}{\partial x_1} = ... = \sum_{i=1}^m \lambda_i \frac{\partial g_i}{\partial x_d} = 0

は,言い換えると

rank(g1x1g1xdgmx1gmxd)<m\text{rank} \left( \begin{array}{cccc} \frac{\partial g_1}{\partial x_1} & \ldots & \frac{\partial g_1}{\partial x_d} \\ \vdots & \ddots & \vdots \\ \frac{\partial g_m}{\partial x_1} & \ldots & \frac{\partial g_m}{\partial x_d} \end{array} \right) < m

ということを意味します.ヤコビ行列のrankですね.

ホーム

Math
Analysis
Experiment
Simulations