変分法 — 「関数を微分する」とはどういうことか
探しているのが「数」ではなく「形」のとき、微分はどう姿を変えるのか。汎関数と第一変分、オイラー=ラグランジュ方程式、最速降下線がサイクロイドになる理由、そして機械学習でいちばん使われる変分問題であるELBOまでを一本につなぎます。
探しものが「数」ではなく「形」のとき
普通の最適化は、数を探す問題です。学習率をいくつにするか。何層積むか。答えは1個の数、あるいは数の並びで書けます。微分してゼロになる場所を探す、という手順がそのまま使えます。
ところが世の中には、答えが数では書けない問題があります。
滑り台を設計するとします。出発点と到着点は決まっている。摩擦はない。ボールがいちばん早く下まで届く滑り台の形は、どんな形でしょうか。直線でしょうか。急な坂を作って一気に加速させ、あとは水平に走らせるべきでしょうか。
ここで探しているのは数ではなく曲線そのもの、つまり関数です。候補は無限にあり、しかも「候補に番号を振って並べる」ことすらできません。それでも私たちは、この問題にも「微分してゼロ」を持ち込みたい。そのために作られた道具が変分法(calculus of variations)です。
歴史的には1696年、ヨハン・ベルヌーイがこの滑り台の問題(最速降下線問題)を公開の挑戦として出したのが出発点です。ニュートンやライプニッツを含む当代一流の数学者たちが個別に解き、その50年ほど後にオイラーとラグランジュが「この手の問題を一般に解く手続き」へ整理しました。いま私たちが変分法と呼んでいるのは、その手続きのことです。
汎関数 — 関数を1個入れると、数が1個出てくる箱
まず言葉を1つだけ用意します。汎関数(functional)です。
普通の関数は、数を入れると数が出ます。 のように。汎関数は、関数を入れると数が出ます。区別のために丸括弧ではなく角括弧を使って と書きます。
例を並べると腑に落ちます。
- 曲線 を入れると、その長さが出てくる箱
- 曲線 を入れると、ボールが滑り落ちる時間が出てくる箱
- 確率分布 を入れると、そのエントロピーが出てくる箱
- 予測関数 を入れると、テストデータ全体での平均損失が出てくる箱
最後の例に注目してください。機械学習で「損失を最小化する」と言うとき、私たちは本当は関数 を動かして汎関数を最小化しているのです。普段はニューラルネットのパラメータ を動かすことで間接的にやっているので気づきませんが、問題の正体は変分問題です。
ここで難しさの正体をはっきりさせておきます。パラメータが100万個ある学習でも、探索空間は100万次元の「有限次元」です。ところが「あらゆる関数」を候補にすると、空間は無限次元になります。関数の値は各点ごとに独立に決められるので、自由度は点の数だけ、つまり非可算無限個あるわけです。だから「候補を1つずつ試す」も「全部の偏微分を並べる」も原理的に無理で、まったく別の道具立てが要る——それが変分法が独立した分野として存在する理由です。
変分法が扱うのは、次の形に書ける汎関数です。
記号の意味を1つずつ言います。 が探している曲線、 はその傾き、 は「その地点の と高さと傾きを見て、コストを1つ返す関数」でラグランジアンと呼ばれます。積分は「区間全体にわたってコストを足し合わせる」という意味です。
要するに式(1)は、「道すじの各点で少しずつコストがかかる。全部足したものが、その道すじの総コストだ」と言っているだけです。滑り台なら各区間を通過するのにかかる時間、曲線の長さなら各区間の微小な長さがコストにあたります。
「関数を微分する」とは、形を少し揺らすこと
普通の微分を思い出します。 が何を測っていたかというと、「入力を だけずらしたら、出力がどれだけ動くか」でした。極小点では、どちらへずらしても1次の変化がゼロになる。だから「微分してゼロ」を探すわけです。詳しくはAIのための微分で扱っています。
変分法もまったく同じ発想でいきます。違うのは、ずらす対象が数ではなく形だということです。
いま候補の曲線 があるとします。これを少しだけ揺らしてみます。揺らし方を表す関数を (イータ)と書き、揺らしの強さを (イプシロン)と書いて、
という新しい曲線を作ります。言い換えると、元の曲線に「でこぼこの型紙」を薄く重ねる操作です。 が揺らしの倍率で、これを0に近づければ元の曲線に戻ります。
ここで1つだけ条件を付けます。。つまり両端では揺らさない。滑り台の出発点と到着点は動かせないからです。
すると は、 というただ1つの数の関数になります。無限次元だった問題が、揺らし方 を1つ選ぶごとに、いつもの1変数の微分に化けるのです。この での微分係数を第一変分と呼び、 と書きます。
つまり、「この曲線をこの型紙で少し揺らしたら、総コストは増えるか減るか」を1つの数で答えたものが第一変分です。
そして極小の条件はこうなります。あらゆる揺らし方 について 。どんなでこぼこを重ねても得も損もしない形、それが答えの候補です。
「あらゆる」が効いているところが肝心です。1種類の揺らし方でゼロになるだけでは足りません。滑り台の真ん中だけを持ち上げる型紙、逆に真ん中だけを凹ませる型紙、前半を上げて後半を下げる型紙——考えつく限りのでこぼこを重ねて、そのすべてで1次の変化が消える。そこまで要求して初めて「これ以上いじりようがない形」だと言えます。逆に言えば、1つでも損得の出る揺らし方が見つかれば、その方向へ形を動かせば必ず改善できるわけです。この「悪い方向が1つも残っていない状態」という言い方は、パラメータを動かす普通の学習で「勾配がゼロ」と言っているのとまったく同じ意味です。舞台が広がっただけで、考え方は1ミリも変わっていません。
コメント
コメントにはログインが必要です