ラグランジュの未定乗数法
ここでは,条件付きの極値問題を解くときに頻繁に用いられる数学的テクニックである,ラグランジュの未定乗数法を学習します.もう名前からして強そうですが,実際,あらゆる分野で重宝されています.行列分解,最適化,脳波解析は勿論,普通のアンケート調査なんかを相手に用いる多変量解析など,実はあらゆる場面でお世話になります.
初めて見た時は意味が分からなかったので飛ばしていましたが,ちゃんと勉強したら案外そんな事もなかったのでまとめます.これが出来るようになるだけで大分と学習が楽になるので頑張りましょう.
定義と用法
まず,式を載せてみます.本来は多次元に拡張可能なものですが,とりあえずここでは簡単のため2次元で載せます.
ラグランジュの未定乗数法
制約条件 g(x,y)=0 の元で,f(x,y) を最大化する (x,y) を求める問題を考えるとき,ラグランジュ乗数 λ を用いてラグランジュ関数 L を
L(x,y,λ)=f(x,y)−λg(x,y)(1)
と置くと,ある (x0,y0) が題意の条件を満たすなら,ある λ0 が存在し,(x0,y0,λ0) において
∂x∂L=∂y∂L=∂λ∂L=0(2)
が成り立つ.
といったようなものです.勿論,雑に定義しているので数学的に正しい議論をしようとするともっと仮定とか必要になりますが,今は置いておきます.
最初は何を言ってるか訳が分からない式だと思います.2変数関数の極値問題を考えていて,それが分からないから悩んでいる人に対して「じゃあ3変数にしようか!!」とか意味が分かりません.
さらにここで深くは触れないですけど,実際ラグランジュ使って解いたところで,これで出てきた解=最大値(最小値)となるとは限らなくて,あくまで停留点,つまり極値の候補しか分からないという.
うーん.意味あるのかそれ...なんて考えてしまい,勉強をやめていました.しかしこれから確認するように,考え方はシンプルだし,とてもありがたいものです.
まず,用語ですがラグランジュの"未定"乗数法というからには,未定ななんらかの値を掛け算して解く方法?みたいに捉えられますね.この未定乗数がλの事です.それから,何故未定かって正味λの値そのものには興味がないというか,どうでもいいのです.λを使って表せるという事実が大事.
ラグランジュの未定乗数法の気持ち
さて,まずは式 (2) の各項について考えていきます.あえて3つ目,∂L/∂λ=0から考えていきます.と言っても,計算すればすぐ分かりますので式をどうぞ.
∂λ∂L=∂λ∂(f(x,y)−λg(x,y))=−g(x,y)=0
普通に,関数Lをλで偏微分するとこうなりますね.ここで,−g(x,y)=0になるのは制約条件として与えられている g(x,y)=0 によります.
では残りの二つについて,すなわち∂L/∂x=∂L/∂y=0について考えます.同じくLを展開していくと
∂x∂L=∂x∂f(x,y)−λ∂x∂g(x,y)=0∴∂x∂f(x,y)=λ∂x∂g(x,y)∂y∂L=∂y∂f(x,y)−λ∂y∂g(x,y)=0∴∂y∂f(x,y)=λ∂y∂g(x,y)
と,それぞれ表せます.ただの移項なのでここまでは大丈夫でしょう.そして,でてきたこの二つの式をベクトルの形に整理すると次のようになります.
∂x∂f(x,y)∂y∂f(x,y)=λ∂x∂g(x,y)∂y∂g(x,y)(3)
綺麗になりました.さて,ここで得られた形は,関数の勾配ベクトルそのものです.勾配ベクトルとは,多変数関数 f(x1,...,xd) に対して,その偏微分を並べたベクトル一般に,多変数の関数をそれぞれの変数で偏微分して並べたものです.数学的な記法では(∇f)と書きます.
これを使うと,更に式 (3) を以下のように綺麗に表せます.
∇f=λ∇g
f の勾配は g の勾配が λ 倍されたものであるという事になります.勾配の定義を思い出してもらうと,その向きはその点で取った接線に垂直な線,法線ベクトルを指します.
よって,この式の意味するところは f と g の法線ベクトルが平行であるという事になります.平行の定義ですね.
逆説的になりますが,同じ点で得られた法線ベクトルが平行という事は,この二つの関数が接線を共有している,つまり接しているという事になります.
まとめると,式(2)
∂x∂L=∂y∂L=∂λ∂L=0
は言い換えると,
∇f=λ∇g∧g(x,y)=0
となります.g(x,y)=0 を満たす中で,f と g の勾配ベクトルが平行,すなわち両者が接している点が,極値の候補だということですね.
ちなみに,接線が平行であれば法線ベクトルが同じ向きを向いているか,反対方向を向いているか,またその長さがそれぞれどうであるかには興味がありません.そこを調整するために導入されているのが未定乗数 λ である,途いう風にも解釈できます.
視覚的に考えてみます.
まず,関数 f(x,y)が取り得る値をx,y平面上で等高線として表します.
下の図は,それを上から見た図だと思ってください.
次に,与えられた制約条件 g(x,y)=0 の境界を描きます.すると図の曲線のようなものが得られます.制約条件ということは,求める解はこの曲線上のどこかになるわけで,それがちょうど等高線と接する点ということになります.
何故なら,接しておらず交差している場合,制約条件を満たす範囲にf(x,y)>k,f(x,y)<kの領域が存在してしまうためです.それならそっちにずれた方が値が大きく(小さく)なりますよね.制約条件にぎりっぎり引っかかる,かすめる時が極値になっているわけです.
図では,点線になっている等高線は境界曲線と接しておらず交差しているため,曲線上にもっと高い,あるいは低い点が存在するはずです.イメージは下の図.
ここら辺は普通に微分の考え方ですね.制約条件を満たしつつ,与えられた関数に従う点を求めるのだから,接点を求めるわけですね.
例題
g(x,y)=x+y−1=0の制約条件のもと,関数f(x,y)=1−x2−y2の最大値を求めよ.
まずはラグランジュを使わず,普通に考えて目安をつけてみましょう.関数 f の等高線を描いてみると,
このようになります.(0,0) を中心として,同心円状に広がっています.ここに,制約条件である g(x,y) を描くと
このような線が得られます.今回聞かれているのは,この光速条件を満たす関数 f(x,y) 上の点であるため,両者が接する点が求めたい解であることが分かります.
さて,この点を求めるのが今回の課題です.制約条件の元の極値問題なので,ラグランジュの未定乗数法を使ってみます.まずラグランジュ関数 L は以下のようになります.
L(x,y,λ)=f(x,y)−λg(x,y)=1−x2−y2−λ(x+y−1)
続いて,x,y,λのそれぞれについて偏微分すると,
∂x∂L=−2x−λ∂y∂L=−2y−λ∂λ∂L=−x−y+1
が導けます.極値の候補は,これらがゼロになる点なので
−2x−λ=0−2y−λ=0−x−y+1=0
の連立方程式を解くと,関数fの制約条件gの元での最大値は(21,21)であり,対応するラグランジュ乗数は -1 である事が分かります.
いつ使うのか
ここでは,あまり細部について解説はせずに,よく使われるメジャーな手法の中でラグランジュ未定乗数法がどのように使われるのかを確認してみます.
主成分分析
こんど
主成分分析
こんど
x=x1⋮xn,y=y1⋮ym
の n,m 変数データについて,
u=a1x1+a2x2+...+anxnv=b1y1+b2y2+...+bmym
としたとき,
cor(u,v) が最大になる a,b を求める.
cor(u,v)=V[u]V[v]cov(u,v)
より,cor(u,v)の最大化は,V[u]=V[v]=1の時であり,これより
f(a,b)=cov(u,v)g1(a,b)=V[u]−1(=0)g2(a,b)=V[v]−1(=0)
という,制約付きの最適化問題に帰着される.この問題はラグランジュの未定乗数法によって解く.
Support vector machine (SVM)
機械学習で最もよく使われる古典的な手法の一つであるSVMにも用いられます(というか,機械学習はだいたいが制約付きの最適化問題なので他の手法でも頻繁に使います.)
一般のラグランジュの未定乗数法
最後に,解説は今回はとりあえず省きます (筆者がちゃんと勉強できていない)が,2次元ではなくより一般の次元,複数の制約条件におけるラグランジュの未定乗数法の形をまとめます.
一般のラグランジュの未定乗数法
d 変数関数 f の,制約条件 g1,...,gm の元での極値を考えると,
ラグランジュ関数は
L(x1,...,xd,λ1,...,λm)=f(x1,...,xd)−i=1∑mλigi(x1,...,xd)
と表され,題意を満たす点 (x1,...,xd) は
i=1∑mλi∂x1∂gi=...=i=1∑mλi∂xd∂gi=0
あるいは
∂x1∂L=...=∂xd∂L=∂λ1∂L=...=∂λm∂L=0
を満たす.
この時,特に一つ目の条件
i=1∑mλi∂x1∂gi=...=i=1∑mλi∂xd∂gi=0
は,言い換えると
rank∂x1∂g1⋮∂x1∂gm…⋱…∂xd∂g1⋮∂xd∂gm<m
ということを意味します.ヤコビ行列のrankですね.
Math |
Analysis |
Experiment |
Simulations |