c
オペレーションズ・リサーチ曲がった空間での最適化
佐藤 寛之
2
次関数の最小化問題という慣れ親しんだ最適化問題を通して,最急降下法と呼ばれるアルゴリズムを紹 介する.これはいわゆるまっすぐな空間での最適化である.続いて,各変数の2
乗和が1
という条件が付い た場合は,最適化問題が単位円や単位球面上で考えられることを説明し,曲がった空間での最急降下法を紹 介する.さらに,このような曲がった空間での最適化,すなわちリーマン多様体上の最適化という比較的新 しい研究分野の概要をなるべく簡明に紹介する.最後に,諸問題への応用例についても触れる.キーワード:最適化,ユークリッド空間,超球面,リーマン多様体,最急降下法,
2
次関数1. はじめに
皆さんは,この記事のタイトルを見てどのような感 想を抱くでしょうか? 「最適化」は,この特集の他の 記事でも多く取り扱われていますね.この記事では,最 適化問題と言えば「与えられた関数(目的関数)を制 約条件の下で最小化する問題」だとします.
では,「曲がった空間」とは何でしょうか? 「曲がっ た空間」について考えるためには,まず「まっすぐな 空間」から考える必要があるでしょう.それでは「まっ すぐな空間」を記述する数学的道具とは何でしょうか?
高校で習う平面ベクトルや空間ベクトルは,それぞ れ
2
次元の世界,3
次元の世界を記述する道具です.平面ベクトルのことを
2
次元ベクトル,空間ベクトル のことを3
次元ベクトルとも言います.4
次元や5
次 元,あるいは一般にn
次元の世界がどんなものなのか を想像するのは難しいですが,2
次元ベクトルが成分を 二つもち,3
次元ベクトルが成分を三つもつことから,n
次元ベクトルというものがあるとすれば,成分をn
個もつのが自然でしょう.また,2
次元ベクトルと3
次 元ベクトルは成分の個数こそ異なるものの,共通する 性質がたくさんあります.たとえば,「二つのベクトルx, y
に対してx + y = y + x
が成り立つ」という性質(交換法則)は
n
次元ベクトルに関しても成り立つべ きでしょう.このように,n
個の成分をもち,かつ,2
次元ベクトルや3
次元ベクトルが満たす交換法則など の性質を満たすもの全体の集合としてn
次元ベクトル 空間(これをR
nと表します)を定義することができ,R
nの要素としてn
次元ベクトルx = (x
1, x
2, . . . , x
n)
さとう ひろゆき 東京理科大学工学部
〒
162–8601
東京都新宿区神楽坂1–3
を定義することができます.したがって,平面は
2
次 元ベクトル空間R
2であり,(高校で学習する)空間は3
次元ベクトル空間R
3です.ベクトル空間の正確な定 義についてはたとえば[1]
を参照してください.さら に,高校で学習するのと同様にR
nでも内積を定義す ることができ,このような内積が定義されているR
n を(標準的)ユークリッド空間と言います.要するに,「まっすぐな空間」がユークリッド空間です.
次に「曲がった空間」についてですが,簡単な例と しては,
R
2の中での単位円やR
3の中での単位球面が 挙げられます.さらに,これらの概念を拡張したもの を考えたいのですが,この先はこれ以降の節を通して 少しずつ紹介していきます.なお,ベクトルを「
x
」ではなく「x
」のように表す 記法もよく使われます.この記事では,これ以降はそ れにならってベクトルを太字で表すことにします.ま た,y = f (x)
という関係があるとき,f(x)
を関数と 言いますが,x
にy
を対応させる規則そのもの,つま りf
のことを関数と言うこともあります.そのため,この記事では「関数
f(x)
」や「関数f
」のように引数 のある表記とない表記が混在しており,微妙にニュア ンスが異なるのですが,さほど気にする必要はありま せん.2. 「まっすぐな空間」での最適化
2.1
具体的な問題ここで,少し唐突ですが次の問題を考えてみましょう.
問題
1. 2x
2+ 4xy + 5y
2が最小となる実数の組(x, y)
を求めよ.高校の数学でもよく見かける問題ですが,これも最 適化問題です.さて,この問題は少し手計算をする
と簡単に解けます.すなわち,
2x
2+ 4xy + 5y
2= 2(x+y)
2+3y
2より,x+y = y = 0
,つまりx = y = 0
のとき最小となり,最小値は0
となります.この実数 の組(x, y) = (0, 0)
のように目的関数を最小とするも のを,この問題に対する最適解と言います.ところで,
(x, y)
は実数の組ですが,2
次元ベクトル とみなすこともできます.これをx
とおきたいのです が,x
とx
が混在するとややこしいので,今後は(x, y)
の代わりに(x
1, x
2)
と書くことにしましょう.これらは 単に記法が異なるだけですので,本質的には全く同じ ことです.さて,x = (x
1, x
2)
とおきましょう.また,先ほどの
x
とy
の2
次式もx
1とx
2で書き直し,さら にこれを2
変数x
1とx
2の関数とみなしてf(x
1, x
2)
と書くことにします.すなわち,f(x
1, x
2) = 2x
21+ 4x
1x
2+ 5x
22(1)
とおきます.すると,先ほどの問題は2
変数関数f(x
1, x
2)
が最小となる(x
1, x
2)
を求める問題ですが,x = (x
1, x
2)
とおくと,ベクトルを変数とする関 数f( x )
が最小となるx
を求める問題と考えること もできます.この問題自体は手計算で簡単に解けま したが,もっと一般的な問題,すなわちn
変数関数F (x
1, x
2, . . . , x
n)
,あるいは同じことですがn
次元ベ クトルx
を変数とする関数F( x )
が最小となるx
を 求める問題は,手計算ではそう簡単に解けそうにない ことが想像できると思います.そこで,コンピュータ を利用した解法が重要となってきます.しかし,コン ピュータに問題を解かせるためには,その具体的な計 算手順(アルゴリズム)を人間が指示する必要があり ます.ここからは最適化のアルゴリズムを考えていき ますが,一般論を扱うには高校の学習内容を超えた予 備知識が必要となってしまいますので,まずは解のわ かっている問題1
を詳しく考えていきましょう.ところで,
x
を,原点を基点とした位置ベクトルと みなせば,x
を点と考えることもできます.すると,関 数f
は平面上の点x
に対して値f( x )
を割り当てるも のであり,この値を「高さ」とみなせば,f( x )
が最小 となるx
は,この関数によって定義される「地形」の「谷底」になります.
f( x )
の値が等しくなるような点x
を曲線で結ぶと,これはちょうど地図上の等高線に 対応するものになります.最適解(0, 0)
のことをx
∗と 書くことにして,実際にx
∗が「谷底」になっている ことを見るために,図1
において4
本の楕円で示したf
の「等高線」を観察してみましょう.点
x
が与えられたとき,どの方向に進めば最も関数図
1
関数f
の等高線およびR
2上の最急降下法により生 成される点列f
の値が減少するでしょうか.実際に自分が谷を下っ ていると考えると,とりあえず一番傾斜が急な下り坂 の方向に進むのがよさそうだと言えるでしょう.この ことをもう少し数学的に考えてみましょう.方向だけを考えたいので,ベクトルの長さは
1
に固 定して考えます.高校で習うベクトルの長さのことを 標準ノルム(この記事ではこれを単にノルムと言いま す)と言い,a
のノルムをa
と表します.つまり,a = (a
1, a
2)
に対してa = √
a
21+ a
22です.さて,点
x
からノルム1
の任意のベクトルd = (d
1, d
2)
の方向に進んだときのf
の「方向微分係数」を 計算するために,g
d(t) = f( x + t d )
とおいてg
d(0)
を 求めましょう.つまり,点x
からd
の方向に微小に進ん だときのf
の変化率を計算しようというわけです.d
は いったん固定しておいて,g
d(t)
は単なるt
の1
変数関数 だとみなします.すると,g
d(t) = f(x
1+td
1, x
2+td
2)
より,式(1)
に注意して計算を進めると,g
d(t) = (4(x
1+ td
1) + 4(x
2+ td
2))d
1+ (4(x
1+ td
1) + 10(x
2+ td
2))d
2(2)
となり,g
d(0) = (4x
1+ 4x
2)d
1+ (4x
1+ 10x
2)d
2とわ かります.ここで,2
変数関数f(x
1, x
2)
においてx
2を定数とみなし,
x
1だけを変数だと考えたうえでf
をx
1について微分したものをf
のx
1に関する偏導関数 といい,∂f
∂x
1 のように表します.ここの例では∂f
∂x
1( x ) = 4x
1+ 4x
2, ∂f
∂x
2( x ) = 4x
1+ 10x
2(3)
ですから,高校での記法と同様に内積の記号として「·
」を用いると,実は
g
d(0) = ∂f
∂x
1( x ) × d
1+ ∂f
∂x
2( x ) × d
2=
∂f
∂x
1( x ), ∂f
∂x
2( x )
· (d
1, d
2)
= ∇f( x ) · d (4)
となります.ここで,
∇f( x ) =
∂f
∂x
1( x ), ∂f
∂x
2( x )
とおきました.これを
R
2での点x
におけるf
の勾配 ベクトルと呼び,∇
は「ナブラ」と読みます.式
(4)
より,ノルム1
のベクトルd
が∇ f( x )
と ちょうど反対の方向を向いているとき,すなわちd =
−∇f( x )/∇f( x )
のとき,g
d(0)
が最小となり,こ の方向に進むと目的関数を最も小さくすることができ るとわかりました.この意味で,−∇ f( x )
のことをf
のx
における最急降下方向とも言います.したがって,最急降下方向
−∇f( x )
に進むことは,まさに,最も傾 斜が急な下り坂の方向に進むことに他ならないのです.そこで,
x
からd = −∇ f( x )/ ∇ f( x )
の方向に進ん で,目的関数f
の値がf( x )
より小さくなる点を探す ことにしましょう.このように,点x
から次の点を探 すための方向をx
における探索方向と言います.しかし,
g
d(0)
は微分係数ですから,点x
のごく近 くでは関数f
の値が最も小さくなる方向が−∇ f( x )
だということに過ぎません.したがって,点x
から−∇ f( x )
の方向に進めば進むほどf
がどんどん小さく なる,というわけではないことに注意しましょう.ま た,x
から−∇ f( x )
の方向に適切な距離だけ進んだと しても,一般には最適解が見つかるとは限りません.それでは,実際にはどのくらい進めばよいのでしょ うか? 理想的には,
1
変数t
の関数g
d(t) = f( x +t d )
が最小となるような正の実数t
が見つかればよいと言 えるでしょう.このようなt
を探すプロセスを(正確 な)直線探索と言います.ただし,現実的にはg
d(t)
が「ある程度」小さくなるような
t > 0
を見つければ上手 くいく場合も多く,直線探索を必ずしも正確に行う必 要はありません.直線探索の詳細について興味がある 読者は[2]
を参照してください.いずれにせよ,このようにして決まる,点
x
から探 索方向d
の方向にどれくらい進むかを表すt
のことを ステップ幅と言い,次の点をx + t d
として計算するこ とになります.ところで,探索方向を表すベクトルの ノルムが変わっても,どれくらい進むかを表すステッ プ幅をそれに応じて変えれば同じことです.たとえば,−∇f( x )/∇f( x )
の方向にステップ幅1
だけ進むの表
1
問題1
に対するR
2上の最急降下法の計算結果k x
(k)f ( x
(k)) ∇f ( x
(k))
0 1.000 3.864 9.175
1 5 . 430 × 10
−12 . 957 × 10
−11 . 097 2 7 . 652 × 10
−22 . 262 × 10
−27 . 021 × 10
−15 3 . 179 × 10
−31 . 014 × 10
−56 . 422 × 10
−310 2 . 623 × 10
−62 . 659 × 10
−112 . 407 × 10
−515 8 . 339 × 10
−96 . 974 × 10
−171 . 685 × 10
−8と,
−∇f( x )
の方向にステップ幅1/∇f( x )
だけ進む のは同じです.つまり,探索方向を−∇ f( x )/ ∇ f( x )
としても−∇ f( x )
としても考え方は同じですから,こ れ以降では探索方向は簡単にd = −∇f( x )
とします.そして,ここまで述べてきたように,現在の点が
x
の とき,探索方向をd = −∇ f( x )
として適切にステッ プ幅t
を決めて次の点x + t d
を計算する,という操 作を次々に反復するアルゴリズムのことを,最急降下 法と言います.k
を0
以上の整数として,第k
反復目 の点をx
(k),探索方向をd
(k),ステップ幅をt
(k)と書 くことにすると,最急降下法での点の更新式はx
(k+1)= x
(k)+t
(k)d
(k)= x
(k)−t
(k)∇f( x
(k)) (5)
となります.つまり,現在x
(k)という点にいるとすると,ここから最も急な方向に下るという役割を
−∇ f ( x
(k))
が果たしており,この方向にどれくらい進むかを決め るのがt
(k)です.最初は最も急な方向に下り始めたと しても,同じ方向に進み続ければいずれは上り坂にな るかもしれません.上り坂になるまで進んでは困りま すので,点x
(k)から方向−∇f( x
(k))
に進んで下り続 けて,平坦になったところで止まるようにt
(k)を決め るのが正確な直線探索というわけです.例として,初期点を
x
(0)= (12/13, 5/13)
とおき,コンピュータを用いて数値を計算した結果を表
1
に載 せます.ステップ幅は,正確な直線探索によるものを用 いました.ちなみに実際に手計算をすると,正確な直 線探索ではt
(k)= − ( ∇ f( x
(k)) · d
(k))/(2f( d
(k)))
とな ることが確かめられます.是非確認してみてください.表
1
を見ると,最急降下法の反復を繰り返すとx
(k)が
0
に近づいているのがわかります.つまり,x
(k)が 最適解(0, 0)
に近づいているということです.また,f( x
(k))
はもちろん最小値0
に近づいています.さら に,∇ f( x
(k))
も0
に近づいていることがわかりま すね.高校で学習するように,1
変数関数が極小とな る点においてはその微分係数が0
となりますが,同様 に,(制約条件なしの下で)多変数関数が極小となる 点においてはその勾配が零ベクトルとなります.したがって,ここの結果でもし
∇ f( x
(k))
が0
に近づい ていなかったならば,プログラミングのミスなどによ り最適化の計算が適切にできていないと考えられます.また,実際にどのように
x
(k)が計算されるのかを,k = 0, 1, 2
まで図1
に示しました.図では,勾配ベク トル∇ f( x
(k))
を矢印で表していますが,実際にはその 反対方向である最急降下方向−∇ f( x
(k))
に直線探索を することに注意してください.また,図中の653/169
という値は初期点における目的関数値f( x
(0))
です.2.2
一般化問題
1
を一般化すると,次のような一般の多変数の2
次関数の最小化問題が得られます.問題
2. n
2+n+1
個の実数の定数a
1,1, a
1,2, . . . , a
1,n, a
2,1, a
2,2, . . . , a
2,n, . . . , a
n,1, a
n,2, . . . , a
n,n, b
1, b
2, . . . , b
n, c
に 対 し て ,n
変 数 関 数F (x
1, x
2, . . . , x
n) =
nk=1
nl=1
a
k,lx
kx
l+
nm=1
b
mx
m+ c
が最小となる実数の 組(x
1, x
2, . . . , x
n)
を求めよ.もちろんこの問題も,上に述べた最急降下法で解く ことができます.しかし,最急降下法は考え方が自然で わかりやすいものの,最適解に近づくまでに反復回数 を比較的多く要し,あまり実用的ではありません.そ こで,最急降下法を改良したアルゴリズムに共役勾配 法というものがあり,こちらは最適解への収束速度が 速く,現在でも盛んに研究が行われています.そして,
2
次の項の係数a
k,lがある条件を満たすとき,問題2
の最適解はあるn
元連立1
次方程式の解と一致するこ とが知られています[2]
.n
元連立1
次方程式はありと あらゆる分野で現れる重要な問題ですが,n
が大きく なるとそう簡単には解けません.そこで,実用的な解 法として,問題2
に共役勾配法を適用するというもの があり,実際によく用いられています.2
次関数の最 小化より連立1
次方程式を解くほうが簡単に思えるか もしれませんが,コンピュータにとっては必ずしもそ うではないというのが面白いですね.3. 「曲がった空間」での最適化
それではいよいよ「曲がった空間」での最適化に進 みましょう.先ほどと同じく,まずは簡単な問題から 考えることにします.
3.1
具体的な問題問題
3. x
2+ y
2= 1
のとき,2x
2+ 4xy + 5y
2が最 小となる実数の組(x, y)
を求めよ.この問題も高校の数学の知識で解けますね.実際,条
図
2
関数f
の単位円S
1における勾配およびS
1上の最 急降下法により生成される点列件
x
2+ y
2= 1
から,(x, y)
は単位円上の点と考えら れるので,x = cos θ, y = sin θ (0 θ < 2π)
とおく ことができます.すると,2x
2+ 4xy + 5y
2は1
変数θ
の関数となるので,これをh(θ)
とおくと,h(θ) = 2 cos
2θ + 4 cos θ sin θ + 5 sin
2θ
= 2 sin 2θ − 3
2 cos 2θ + 7 2
= 5
2 sin(2θ + α) + 7
2 (6)
となり,ここで,
α
は− π/2 < α < 0
かつtan α =
−3/4
を満たす角です.−1 sin(2θ + α) 1
より,sin(2θ + α) = −1
のときh(θ)
は最小値1
を取ります.このとき
cos θ
とsin θ
を計算することで,元の問題の 解は,(x, y) = (2/ √
5, − 1/ √
5), ( − 2/ √ 5, 1/ √
5)
であ ると求まります.このような問題は制約条件つき最適化問題と呼ばれ,
さまざまな最適化アルゴリズムが研究されています
[3]
. この記事では,通常の「まっすぐな空間」での制約条 件つきの問題を,「曲がった空間」での制約条件なし の最適化問題とみなす比較的新しい考え方を紹介しま す.それはリーマン多様体上の最適化と呼ばれる分野 で,特に2000
年代に入ってから盛んに研究されてい ます.問題
3
も解が手計算で求められましたが,より一般的 な問題をコンピュータに解かせるためのアルゴリズムを 導出するために,この問題を詳しく見ていきましょう.やはり
(x, y)
の代わりにx = (x
1, x
2)
という記号を用 いることにし,関数f
は先ほどと同じものとします.問 題1
で見たように,∇f( x ) = (4x
1+ 4x
2, 4x
1+ 10x
2)
となりますが,先ほどと同様に
−∇ f( x )
の方向に直線 探索を行うと,明らかに制約条件が満たされなくなり ます.実は,上述の解答のように,x
が単位円という「曲がった空間」に存在するという考え方が,これから 述べるアルゴリズムの鍵となります.この場合は「曲 がった空間」というより「曲がった線(曲線)」と言う ほうがしっくりくるかもしれませんね.
問題
1
では平面R
2全体で解を探しましたが,ここ ではx
21+ x
22= 1
を満たす点全体,すなわち単位円S
1= {x ∈ R
2| x = 1 }
上で解を探すのだと考えま しょう.そこで,まず∇ f( x )
は一般に単位円からは み出た方向を向いていますから,せめて接線方向を向 くように射影しましょう.点x
を始点とするベクトル∇ f ( x )
をx
におけるS
1の接線に直交射影(正射影)すると,
∇ f( x ) − ( x · ∇ f( x )) x
となります.これを,S
1上の点x
におけるf
の勾配と言い,grad f( x )
と 書くことにします(図2
).勾配という名称は∇f
と共 通しますが,平面R
2上で考えるか単位円S
1上で考え るかというところが異なります.なお,grad
は勾配を 表す英単語gradient
の略称です.このように点x
に おけるS
1の接線方向を向いたベクトルを,S
1のx
に おける接ベクトルと呼びます.さて,問題
1
と同じように− grad f( x )
を探索方向d
とします.この探索方向はx
においてS
1の接線方 向を向いていますから,−∇ f( x )
に比べると「単位円 に沿って探そう」という気持ちが強く表れていると言 えるでしょう.しかし,それでもなお,適切なステッ プ幅t
が見つかった場合に次の点をx + t d
とすること はできません.これもまた単位円S
1からはみ出てし まうためです.そこで,さらにこのはみ出た点をS
1に 引き戻す必要があります.そのための方法は色々とあ るのですが,ここでは最も簡単なものを紹介しましょ う.すなわち,はみ出た点x + t d
をそれ自身のノル ムで割って( x + t d )/ x + t d
とすることで,ノルム を1
にしてS
1に乗せてしまうというものです.幾何 学的に言えば,はみ出た点x + t d
から原点(0, 0)
に 線分を引いて,単位円S
1との交点を次の点にすると いうことです.この様子も図2
に示しています.以上のことから,
S
1上でのステップ幅t > 0
を決 めるには,直線x + t d
の代わりに単位円S
1上の曲線( x + t d )/ x + t d
を用いて,いわば,直線探索なら ぬ「曲線探索」を行うことになります.これで準備は整いました.まとめる前に記号を導入 しておきます.
R
2上の任意のベクトルb
の,S
1上の 点x
における接線への直交射影をP
x( b )
とし,点x
に表
2
問題3
に対するS
1上の最急降下法の計算結果k x
(k)− x
∗f ( x
(k)) − 1 grad f ( x
(k)) 0 8 . 323 × 10
−12 . 864 4 . 947 1 3 . 964 × 10
−17 . 549 × 10
−13 . 580 2 5 . 525 × 10
−21 . 525 × 10
−25 . 514 × 10
−13 1 . 682 × 10
−41 . 415 × 10
−71 . 682 × 10
−34 4 . 759 × 10
−120 4 . 758 × 10
−11おける
S
1の接ベクトルc
に対してx + c
をS
1に引き 戻した点をR
x( c )
と書くことにしましょう.つまり,P
x( b ) = b − ( x · b ) x , R
x( c ) = x + c x + c (7)
です.すると,S
1上のf
の勾配grad f( x )
はgrad f( x ) = P
x( ∇ f( x )) (8)
と書けること,および,「曲線探索」の際にはf(R
x(t d ))
の値を小さくするようなステップ幅t > 0
を探すこと になるということに注意してください.さらに,S
1上 での関数f
が極小となるx
ではgrad f( x )
が0
にな ることが知られています.そこで,grad f( x )
が0
に なった時点で計算を停止すればよいわけです.ただし,コンピュータによる数値計算には誤差がありますから,
実際には
grad f ( x )
が十分小さくなったら(たとえ ば10
−6未満)計算を停止します.こうして単位円S
1 上の最急降下法を記述することができます.S
1上の目的関数f
に対する最急降下法手順
0
: 初期点x
(0)∈ S
1を選び,k = 0
とする.手順
1
:grad f( x
(k))
が十分小さければ計算を終了 し,そうでなければd
(k)= − grad f( x
(k))
と する.手順
2
:t
(k)> 0
をf(R
x(k)(t d
(k)))
が(近似的に)最小となるような
t
として計算し,次の点x
(k+1)= R
x(k)(t
(k)d
(k))
を計算する.k
の 値を1
増やして手順1
へ戻る.最適解の一方
(2/ √ 5, − 1/ √
5)
をx
∗とおきます.S
1 上の最急降下法を用いて実際に数値計算をした結果 が表2
です.ただし,話の都合上,ステップ幅は常にt
(k)= 0.1
と固定しました.後述するようにS
1は1
次 元なので,正確な探索を行うといきなり最適解が得ら れてしまうためです.ここまで考え方をわかりやすく 説明するために単位円S
1上で議論しましたが,本来こ のような方法はより高次元の問題に対して用いるほう が真価を発揮します.ともかく,表2
を見ると,x
(k) がどんどん最適解x
∗に近づき,勾配のノルムも0
に 近づいているため,最適化が上手く行えていることが わかります.また,目的関数の値は最小値f( x
∗) = 1
に近づいていることがわかります.なお,
f( x
(4)) − 1
が0
となっていますが,これはあくまでもコンピュー タの精度では0
と区別できないほど0
に近いというこ とです.3.2
一般化問題
4.
ni=1
x
2i= 1
のとき,n
2個の実数の定数a
1,1, a
1,2, . . . , a
1,n, . . . , a
n,1, a
n,2, . . . , a
n,nに対してn
変数 関数G(x
1, x
2, . . . , x
n) =
nk=1
nl=1
a
k,lx
kx
lが最小とな る実数の組(x
1, x
2, . . . , x
n)
を求めよ.問題
3
で単位円S
1= { (x
1, x
2) ∈ R
2| x
21+ x
22= 1 }
を考えたのと同様に,集合S
n−1= { (x
1, x
2, . . . , x
n) ∈ R
n| x
21+x
22+ · · · +x
2n= 1 }
を考えると,問題4
に対して も同様にアルゴリズムを導出することができます.そし て,この集合S
n−1のことを,(n−1)
次元超球面(ある いは単に球面)と言います.R
nの1
点(x
1, x
2, . . . , x
n)
を定めるにはn
個の成分x
1, x
2, . . . , x
nの値を定める必 要がありますが,S
n−1上の点(x
1, x
2, . . . , x
n)
について は,n−1
個の成分を定めると関係式x
21+x
22+· · ·+x
2n= 1
から残りの成分は(符号を除いて)自動的に定まり ます.これがS
n−1の次元がn − 1
であることの説明 です.あるいは,S
n−1上の点(x
1, x
2, . . . , x
n)
の成分 はn − 1
個が自由に動けるので,自由度がn − 1
であ るとも言えます.R
2内の円をS
1と書くことを不思議 に感じた読者もいるかもしれませんが,このような事 情があったわけです.S
1上の点(x
1, x
2)
は一方の成分x
1を定めると関係式x
21+ x
22= 1
から他方の成分x
2が
x
2= ± √
1 − x
21と定まります.したがって,S
1は1
次元,あるいは自由度が1
であると言えます.これ が,(x
1, x
2) ∈ S
1をx
1= cos α, x
2= sin α
と一つの 変数α
で表せることにも関係しているのです.同様に,R
3の中のいわゆる普通の球面S
2は2
次元球面です.ここまで見てきた(超)球面のように,「曲がった空 間」を抽象化した概念を多様体と呼びます.また,多 様体
M
上の各点x
に対して,x
における接ベクトル 全体の集合をx
における接空間と呼び,各接空間に内 積が適切に定められているとき,M
をリーマン多様体 と呼びます.これらの用語の正確な定義はここでは述 べませんが,要するに,リーマン多様体とは曲面を一 般化した概念です.この記事のタイトルにある「曲がっ た空間」はリーマン多様体のことを指していたのです.そこで,より一般的な次の問題が考えられます.
問題
5.
リーマン多様体M
上の関数f
を最小化せよ.この問題では,
M
は球面に限りませんし,目的関数f
は問題1
や3
における2
次関数を指すわけではなく,より一般の関数です.もちろん
M
やf
が具体的に与 えられないと解きようがありませんが,解法アルゴリ ズムはS
1の場合と同様に考えることができます.S
1のときと同様,ユークリッド空間の中で適切に定 義されたリーマン多様体M
では,その上の関数に対し てユークリッド空間における勾配を接空間に射影する ことで,M
上の勾配が得られます.また,式(7)
のよ うに,M
からはみ出た点をM
上に引き戻す働きをす るR
をレトラクション(retraction)
と呼びます.ちなみに,
retract
にはまさに「引き戻す」という意味があります.こうした道具を使えば,問題
5
に対する一般 の最急降下法も同様に導出できます.さらに,最近は リーマン多様体上の共役勾配法も研究が進んでいます.4. 終わりに
「まっすぐな空間(ユークリッド空間)での最適化」か ら始めて,その考えを基礎にして「曲がった空間(リー マン多様体)での最適化」を紹介してきました.ユー クリッド空間での話はリーマン多様体での話の特殊な 場合ですが,ユークリッド空間でのさまざまな研究が 積み重ねられてきたからこそ,リーマン多様体での議 論への拡張が可能になったということは重要です.
最後に,「曲がった空間での最適化」,すなわちリー マン多様体上の最適化の応用例を紹介します.まず,問 題
4
は行列の固有値問題という重要な問題と密接な関 係があります.たとえば重要と判断されたページから順に並んだ結果が出てき ますが,ここでも固有値問題が応用されています.ま た,統計学において膨大なデータから重要な情報を取 り出したり,制御工学において制御モデルの次元(制 御対象の状態変数の個数)を小さくするためにもさま ざまな最適化問題を解く必要があるのですが,これら の中にも問題
5
の形で定式化できるものが多くあり,研究が盛んに行われています.
謝辞 本稿の執筆の機会を与えてくださり,原稿に 対しても多数の有益なコメントをくださった宮代隆平 先生に,厚く御礼申し上げます.
参考文献