忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ラグランジュの未定乗数法のビジュアル化

導入

「ラグランジュの未定乗数法」を大学で最初に習ったとき、正直全くわかりませんでした。しかし時は経ち、結局あれは何だったのかとビジュアル化して考えたところ、「なんだ、結局ただのベクトルの平行条件じゃん」と、名前がかっこいい割には実は単純なことしかしていないと気づきました。
昨今はYoutubeでビジュアルで解説しているものがあるので、そちらを見るとよいかもしれません。海外Youtube(英語)のほうが力が入っている気がします。
以下は私の備忘録として残します。

1.極値を出したい式のビジュアル化

そもそも、式をビジュアル化できていませんでした。そしてこれこそが盲点でした。
今回は例として、極値を出したい式は放物線、制約条件は半径1の円にします。

といっても、放物線 「y=x^2」 という形では使えません。無理やり形を変形する必要があります。放物線を変形した式「f = y - x^2」です。
そしてこの式のビジュアル化が盲点でした。これは3次元で考えないと成り立ちません。

ビジュアル化の具体的な方法は、f=0の場合にグラフを1つ描き、次はf=1の時のグラフを描き、ということを繰り返します。すると以下の図になります。地図の等高線と同じ見方です。fが標高に対応します。

2.制約条件のビジュアル化

では、制約条件の半径1の円「y^2 + x^2 = 1」をビジュアル化します。これは2次元です。
放物線と同じ3次元空間に置きたいので、3次元空間に浮いた円をイメージします。ただしf軸を上下に自由に動けるイメージです。
以下図のようになります。等高線的に書くと、結局円が1つです。

3.ラグランジュの未定乗数法が求めている極値

結局極値はどこを求めているかというと、これは「接する点」を求めています。つまり以下図の場所です。
矢印で指している部分が極値です。しかし「接する点」と呼んだ方が理解しやすいと思います。

4.接する点を求めるためのアイデアとは

これが一番重要です。接する点を求めるアイデアは、「極値を求める式の法線ベクトルと、制限式の法線ベクトルが平行になる」というものです。
実はベクトルの考えだったのです。ここに気づくと理解が深まります。

5.ラグランジュの未定乗数法の左側式と右側式の意味、そしてλとはなにか

これは右側も左側も結局、「法線ベクトルを出す式」です。偏微分は「法線ベクトルを出す式」だったという、今まで気づかなかった知見がここで得られました。
λは、法線ベクトルの倍率を合わせるための係数でした。
結局、「ベクトルの平行条件」を行っているのが「ラグランジュの未定乗数法」だとわかりました。

拍手[0回]

PR

固有値を考える~行列の3重対角化とはなんだ?~

3重対角化をすると固有値の計算が早くなるらしい。 
固有値を解くための大まかな流れを描いてみた。

 1.固有値を解きたい行列を用意
           | a11,  a12, a13, a14, a15|
           | a21,  a22, a23, a24, a25|
           | a31,  a32, a33, a34, a35|
           | a41,  a42, a43, a44, a45|
           | a51,  a52, a53, a54, a55|
 
 2.行列を3重対角化(HouseHolder変換を使う)
           | b11, b12,     0,     0,     0|
           | b21, b22, b23,     0,     0|
           |     0, b32, b33, b34,     0|
           |     0,     0, b43, b44, b45|
           |     0,     0,     0, b54, b55|

 3.この変換後の行列を解く(QR法とか、ランチョス法とか)

ここでいつもムズムズしていた。
「そもそも3重対角化って現実世界でいうところの何をしてんの?可視化したい」
これらを大雑把に理解してみる。

・・・色々思い悩んだが、結局以下のアイデアにたどり着いた。
3重対角化行列は、有限要素法(FEM)でいうところの1次元のバネ連結モデルの行列に激似だ。

   1次元のバネ連結モデルのイメージ(X方向のみ動く)
      

   1次元のバネ連結モデルにバネの方程式を適用し、行列で描いたもの
           |  -k1,          k1,            0,            0,     0|    | dx1 |      | f1 |
           |   k1, -(k2+k1),          k2,            0,     0|    | dx2 |      | f2 |
           |     0,          k2, -(k3+k2),          k3,     0| × | dx3 |  =  | f3 |
           |     0,            0,          k3, -(k4+k3),   k4|    | dx4 |      | f4 |
           |     0,            0,            0,          k4,  -k4|    | dx5 |      | f5 |


どうだろう、左側の行列は3重対角化そのまんまではないか!!!
ということで、「3重対角化にする」ということは、「1次元のばね連結モデルに置き換える」と言っていいのでは?

ということは、例え乱雑に繋がったバネモデルでも、固有値は1次元のバネ連結モデルに置き換えられる、と言えるだろう。

   こんな感じの並列部分があるバネモデルでも置き換えられる。
         

「3重対角化」は、複雑なモデルを非常に単純なモデルに置き換えるのが目的なんだな。
少しムズムズが収まった。

今日はここまでで限界だ。ここまで書き進めると別の興味が沸いてくる。
「3重対角化を進める過程と、バネが統合される過程の対応を見たい」
それはきっと私には厳しい。ここまでにする。

拍手[0回]

固有値をまた考える~べき乗法の可視化~

固有値解法のべき乗法を図形で理解してみる。
早速だが、下図がべき乗法を可視化した図だ。前回の「固有値方程式をまた考える」から、対称行列の固有値方程式は結局楕円ということがわかった。ここではこの楕円とべき乗法がどのように関係するか、可視化してみた。


図1:べき乗法の反復1回目 V1 = A*V0

上図を説明する。べき乗法では、最初に適当なベクトルV0を用意してそれを行列Aに掛ける。そして次のベクトルV1(=A*V0)ができる。さて上図の一番大きなポイントは、V1が楕円の法線ベクトルとなっていることだ。※理由は後述する。

図2:べき乗法の反復2回目 V2= A*V1

図2では、このV1をまた行列Aに掛けて、V2を得る。このV2も楕円の法線ベクトルとなる。そしてさらにVを掛け続けたのが下図だ。


図3:べき乗法の反復を複数回実施

VをAに掛け続けると、やがてVは値が変化しなくなる。なぜ変化しなくなるのか。それは上図を見ればわかるとおり、楕円の短辺の上に来てしまうと法線ベクトルはそれ以上変化しなくなってしまうからだ。そしてこれこそが固有ベクトルだ。


どうだろう、絵にしてしまうとべき乗法はなんと単純なんだろう。


さて、ではなぜV*Aが楕円の法線ベクトルを求めることに対応しているのだろうか。私はこれを以下の2つから大雑把に考えてみた。

条件1.
前回の「固有値をまた考える」から、対称行列の固有値問題は以下の問題と等価である。
「楕円上の点を、拘束条件が円と接するとしてラグランジュの未定乗数法で解く問題」
つまりA*Vとは以下のように傾きの意味になる。
傾き =       A     *   V   
|∂f/∂x|    |a, b, c|  | vx|
|∂f/∂y| = |d, e, f| *| vy|
|∂f/∂z|    |c, f, g|   | vz|

条件2.
全微分を考える。楕円の式がfとして、全微分のdfが0のとき、楕円が成立すると考える。
つまり以下の式。
df = dx(∂f/∂x) + dy(∂f/∂y) + dz(∂f/∂z) = 0
ここで、dfが0となるためには上式の2つのベクトル(dx, dy, dz)と(∂f/∂x, ∂f/∂y, ∂f/∂z)の内積が0にならなければいけない。(dx,dy,dz)は楕円上を微小距離動く方向、つまり接線方向となる。この接線方向との内積が0ということは、(∂f/∂x, ∂f/∂y, ∂f/∂z)は楕円の法線方向である。そしてこの法線方向は条件1で既に計算できる。そう、A*Vが(∂f/∂x, ∂f/∂y, ∂f/∂z)、つまり法線ベクトルなのだ。


いかがだろうか。
「なんだ、べき乗法って単純だな」なんて感じられたのであれば、可視化は成功だ。




この可視化を使用すれば、重複した固有値がなぜべき乗法で解けないかも簡単に理解できる。


図4:楕円が円のときの反復

上図は重複固有値の楕円、つまり円だ。円であれば、V*Aが全く変化しないことはすぐにわかるだろう。つまり結果は収束しない・・・いや、寧ろどの向きでも既に収束しているというべきか。


さて、今日はこれくらいにしておこう。今後は以下の可視化を考えている。
・QR法
・ヤコビ法
・逆べき乗法
・ランチョス法
・二分法
・サブスペース法

あとは以下も興味深い
・非対称行列(楕円ではない?もしくは中心点がずれている?まだわからない)
・複素数の固有値


拍手[3回]

固有値方程式をまた考える。

行列が対称行列の場合、固有値方程式はどうもラグランジュの未定乗数法になるようだ。

|a1, a2, a3| |x|       |x|
|a2, a4, a5| |y| =  λ|y|
|a3, a5, a6| |z|       |z|

展開してみると

a1x  + a2y + a3z = λx
a2x  + a4y + a5z = λy
a3x  + a5y + a6z = λz

ここから別途、ラグランジュの未定乗数法を考える。
極値を求めたい関数fが以下だとする。

f = a1/2*x^2 + a2xy + a3xz + a4/2*y^2 + a5yz + a6/2*z^2

そして拘束条件gが以下とする。(球の式だ)

g = 1/2*x^2 + 1/2*y^2 + 1/2*z^2 + C


ラグランジュ方程式を立ててみると、
∂f/∂x - λ∂g/∂x = a1x  + a2y + a3z -λx = 0
∂f/∂y - λ∂g/∂y = a2x  + a4y + a5z -λy = 0
∂f/∂z - λ∂g/∂z = a3x  + a5y + a6z -λz = 0

ということで、固有値方程式と完全に一致した。

つまり対称行列の固有値方程式は、fの極値を拘束条件が球上で、求める問題ということだ。
じゃあfって何だ?

・・・

楕円体?

・・・

つまり対称行列の固有値方程式は、楕円体上のx,y,zを、球の拘束条件で極値を求めるということか。

・・・

つまり、楕円体に球をすっぽり入れて、しかし壁にぴったり当たるような内接球を1つ、
次にすっぽりでは無く一部入って一部出ているような、半内接、半外接球を1つ、
そして最後に、楕円体をすっぽり覆った外接球を1つ。

この3つの状態を固有値と呼んでいる?

なんとなく、この内接円、中間接円(っていうのか?)、外接円の半径が固有値になりそうだな。そして固有ベクトルは、楕円球と球の接する2点を結んだベクトルのことだろう。

・・・

それなりに説明できてしまった。
これを書き始めたときは、固有値とラグランジュ未定乗数の関係しか考えていなかったのに。
固有値って、以外と楽しいな。

拍手[2回]

固有値方程式ってなんだよ。こんにゃろう。

固有値とはなんだろうか。

自分を測定した値は、また自分と同じ形になった。
同じ形だが、ちょっと大きくなってる、または小さくなっている。

そんなことあるのだろうか。
イメージしやすいとすれば、レンズや鏡だろう。

でも、測定した値というのとはちょっと違うか。

よし、こんなときはFFで考えよう。
以前の内容で、測定をライブラで例えたな。それで行ってみよう。

FF3の「まどうしハイン」は、バリアチェンジで弱点を変えた!
よし、ライブラだ!
(トゥルルル トゥルルル)
弱点:火炎

・・・さて、つまり固有値は火炎だな。
めでたしめでたし。


意味わからんな。
なにがいけなかったのだろうか。

まず、固有値方程式は普通、行列と変数配列で記述される。
Ax = λx
まどうしハインは何にあたる?変数配列のxだ。

よし、ここは無理やり・・・まどうしハインの細胞1つ1つを変数xと捕らえてみよう。
そうすると、xは細胞の位置ということか。

ではAはなんだ?
細胞と細胞の関係を表している?いや、測定といったな。測定方法を現している。
つまりxという細胞の集まりを、Aという方法で測定してみると、
あら不思議、またxの集まりになっちゃった。・・・意味わからん。

xの細胞同士が特殊な形で集まっていたのだろうか。
特殊な形を、ある対応する測定方法で見てみると、その真の意味がわかるというのか。

つまりあれだな。背水の陣で考えるわけだな。
敵の軍勢は残り数百。それに比べて私達は1万。一気に殲滅せん!、という状況にいるとする。

ある側近が言った。
「殿、あの方角にあるのは断崖の渓谷に大きな滝。まさに逃げ場はありません」

殿「ぬはは、今こそ積年の戦いに終止符を打ってくれるわ!」

そこで軍師が言った。
「否、これは好期にあらず。あれは背水の陣!孫子も言っておられる。殿、ここで攻めると大損害ですぞ」

・・・ということで、敵の軍勢xを、孫子の兵法Aで測定すると、敵の軍勢xはその数百体よりも数倍する力λをもつ、
いかがだろうか。
なんとなくわかった気がしないでもない。

んー待てよ、ちょっと考えの前後が違うか。

孫子の兵法によると、背水の陣Aの状態とは、敵兵xがいたとしても、数倍の力λを持つのだよ、という教えか。
条件がきわめて限定であるが故の結晶のような結果か。

固有値方程式とは、ある兵法の教えAがはまりにはまって実現する、最高潮の状態、って感じ?
ただ、その教えがはまる状態って、そんなにないよ、という感じか。

しかしこれではまだ応用できないな。本質ではないのかな。

拍手[0回]

プロフィール

HN:
sh
性別:
非公開

P R