たけし備忘録

自分の好奇心の赴くままに勉強メモ LL系が大好き Python bash Julia C

リアプノフの安定定理の証明

リアプノフの安定定理

リアプノフの安定定理とは次のようなものである。

リアプノフの安定定理

自励系

$$ \dot{x} = f(x), x \in \mathbb{R}^{n} $$

において平衡点$x_{e}$を

$$ f(x_{e}) = 0 $$

となる点とする。

平衡点を含む閉領域$\Omega$において次の条件

(1) 正定値性 $$ V(x_{e}) = 0,\ V(x)>0 \, (x \neq x_{e}) $$

(2) 時間微分の半負定値性 $$ \begin{array}{c} \dot{V}(x) &=& \left( \frac{\partial V(x)}{\partial x} \right)^{T} f(x) \\ &=& \sum_{i=1}^{n} \frac{\partial V(x)}{\partial x_{i}} f_{i}(x) \le 0 \end{array} $$

を満たすスカラー値関数$V(x)$が存在するとする。このような$V(x)$をリアプノフ関数と呼ぶ。

このとき元の自励系による平衡点$x=x_{e}$はリアプノフ安定である。 すなわち自励系の解$x(t)$とその初期値$x(0)$について

$$ \begin{align} & \forall \epsilon>0, \exists \delta>0 \ (s.t) \\ & |x(0) - x_{e}| < \delta \Rightarrow |x(t) - x_{e}| < \epsilon \end{align} $$

が成立する。このようなときに平衡点$x_{e}$をリアプノフ安定であると呼ぶ。

本エントリーではリアプノフの安定定理を証明していきたい。その動機は所有している制御系の書籍にはリアプノフ安定定理の紹介だけは載っているが、厳密な証明が無かったためだ(お金が無いのであまりホイホイと買えないのも理由の一つにある)。

出来得る限り厳密に書いていきたいが、何分自身が数学的な知識に乏しいのと数学的な証明の力が不足しているので色々と穴だらけな証明になると思う。ここが間違ってますよ~、定義が甘いよ~などと指摘してもらえると非常にありがたい。

なお内積やノルムを一般の形式できちんと書くべきであるが、ここでは有限次元ベクトル空間のEuclid空間を想定しているため、標準内積とEuclidノルムを用いることにしている。できるだけ一般の形式に簡単に変換出来るように書きたいが、細かな部分はご容赦願いたい。

以下より証明を述べていこう。

リアプノフの安定定理の証明

リアプノフ関数$V(x)$を平衡点$x_{e}$周りでテイラー展開をする。

$$ V(x) = V(x_{e}) + \left( \frac{\partial V}{\partial x}(x_{e}) \right)^{T} \delta x + \frac{1}{2} \delta x^{T} \left( \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \right) \delta x + o(|\delta x|^{2}) $$

ただし$x^{T}$は$x$の転置であるとし

  • 勾配(Gradient)

$$ \frac{\partial V}{\partial x}(x) = \left[ \frac{\partial V}{\partial x_{1}}(x), \frac{\partial V}{\partial x_{2}}(x), \cdots, \frac{\partial V}{\partial x_{n}}(x) \right]^{T} $$

  • ヘッセ行列(Hessian)

$$ \frac{\partial^{2} V}{\partial x^{2}}(x) = \left[ \begin{array}{cccc} \frac{\partial^{2} V}{\partial x_{1} \partial x_{1}}(x) & \frac{\partial^{2} V}{\partial x_{1} \partial x_{2}}(x) & \cdots & \frac{\partial^{2} V}{\partial x_{1} \partial x_{n}}(x) \\ \vdots & \ddots & & \\ \frac{\partial^{2} V}{\partial x_{n} \partial x_{1}}(x) & \frac{\partial^{n} V}{\partial x_{n} \partial x_{2}}(x) & \cdots & \frac{\partial^{2} V}{\partial x_{n} \partial x_{n}}(x) \end{array} \right] $$

  • 変分(variation)

$$ \delta x = x(t) - x_{e} $$

  • 剰余分

ランダウの記法 $$ \lim_{\delta x \to 0} \frac{o(|\delta x|^{2})}{|\delta x|^{2}} = 0 $$ にしたがう。

と定義した。

補題1: 平衡点$x_{e}$における$V(x)$の勾配が0であること

ここで $$ \frac{\partial V}{\partial x}(x_{e}) = 0 $$ で無ければならない。

もし $$ \frac{\partial V}{\partial x}(x_{e}) \neq 0 $$

であれば

$$ \left( \frac{\partial V}{\partial x}(x_{e}) \right) ^{T} \delta x \lt 0 $$

となる適当な$\delta x$が存在する。この関係の符号は、$V(x)$の$x_{e}$における勾配と変分$\delta x$の向きに関してのみ依存する。この関係を保つような$\delta x$を$|\delta x| \to 0$とすることで$V(x)$のテイラー展開における2次項は1次項に比較して

$$ \lim_{|\delta x| \to 0} \left| \frac{1}{2} \delta x^{T} \left( \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \right) \delta x \right|= 0 $$

とすることが出来る。同様に剰余分も0となる。これより$V(x)$の符号は勾配と変分の内積に依存することになり、もし

$$ \frac{\partial V}{\partial x}(x_{e}) \neq 0 $$

であるならば

$$ V(x) < 0 $$

となるような$x$が存在することになり、$V(x)$の正定値性に反するため結局

$$ \frac{\partial V}{\partial x}(x_{e}) = 0 $$ でなければならない。

補題2: リアプノフ関数の局所正定値性の証明

局所正定値性とは次のようなものである。

局所正定値性

スカラー値関数$V(x)$とその零点$x_{e}$に対して正数$a>0$が存在し、任意の$x$に対して$x_{e}$の$a$近傍$|\delta x| = |x-x_{e}|<a$に対して$c>1$なる$c \in \mathbb{R}$が存在して

$$ \frac{1}{c}|\delta x|^{2} \le V(x) \le c|\delta x|^{2} $$ が成立する。

以下でリアプノフ関数の局所正定値性を示そう。

補題1までの議論によればリアプノフ関数の勾配は$x_{e}$で0となるため結局

$$ V(x) = \frac{1}{2} \delta x^{T} \left( \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \right) \delta x + o(|\delta x|^{2}) $$

である。ここで$V(x_{e})=0$であることを用いた。

補題1と同様の議論により、$o(|\delta x|^{2}) \to 0$となるような十分小さい$\delta x$を考える。この$\delta x$の大きさを

$$ | \delta x | < a $$

と出来る十分小さい正数$a>0$が存在する。このとき$o(|\delta x|^{2})$は$V(x)$の二次項に比較して十分小さいとみなすことが出来るとする。すなわち$V(x)$の符号は二次項の符号と一致する。

また$V(x)$の正定値性により$V(x)$のヘッセ行列は正定である。

$$ \delta x^{T} \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \delta x > 0 $$

正定値行列の固有値はすべて正であるため、$V(x)$のヘッセ行列の固有値はすべて正である。さらに$x$は$n$次元ベクトル(有限次元ベクトル)を想定しているため、ヘッセ行列の$n$個の固有値の最大のものを$\lambda_{max}$、最小のものを$\lambda_{min}$であるとする。このとき次の不等式が明らかに成立する。

$$ \lambda_{min} |\delta x|^{2} \le \delta x^{T} \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \delta x \le \lambda_{max} |\delta x|^{2} $$

ここで $$ c = \max \left( \lambda_{max}, \frac{1}{\lambda_{min}} \right) $$

とすれば $$ \frac{1}{c} \le \lambda_{min} \le \lambda_{max} \le c $$

ゆえに

$$ \frac{1}{c} |\delta x|^{2} \le \delta x^{T} \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \delta x \le c |\delta x|^{2} $$

以上よりリアプノフ関数に対する平衡点$x_{e}$近傍での局所正定値性が示された。

証明本文

ここまでの補題1と補題2によって準備は整った。

さて、まずは補題1によってリアプノフ関数$V(x)$は次のように表されるのであった。

$$ V(x) = \frac{1}{2}\delta x^{T} \frac{\partial^{2} V}{\partial x^{2}} \delta x + o(|\delta x|^{2}) $$

さらに補題2によって

任意の時間$t \in [0, \infty)$における$x(t)$と、平衡点$x_{e}$に対して正数$a>0$が存在して $$ |\delta x| = |x(t) - x_{e}| < a $$ と出来る。 この下でリアプノフ関数$V(x)$に対して$c>1$なる正数$c$が存在し

$$ \frac{1}{c} |\delta x|^{2} \le \delta x^{T} \frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \delta x \le c |\delta x|^{2} $$

と出来たのであった。これを$V(x)$の形式にすると

$$ \frac{1}{2c} |\delta x|^{2} \le V(x) \le \frac{c}{2} |\delta x|^{2} $$

である。

以上が補題1と補題2による話題であった。ここまでで用いた条件を整理しよう。

用いた条件 (補題1):
1. 二次以上の項が0に近しい$x$であること
2. $V(x)$が正定であること

(補題2):
1. 剰余項が0に近しい$x$であること
2. $x$が有限次元($n$次元)であること
3. $V(x)$が正定であること

基本的には$V(x)$が正定であることと、$x$が十分$x_{e}$に近い範囲であることを用いている。

そして最後に残りの条件である、時間微分の半負定値性

$$ \dot{V}(x) = \left( \frac{\partial V}{\partial x}(x) \right)^{T} f(x) \le 0 $$

を用いて証明を完結させよう。

時間微分の半負定値性によると次が成立する。

$$ \int_{t_{0}}^{t} \frac{d}{dt} V(x(t)) \, dt = V(x(t)) - V(x(t_{0})) \le 0 $$

すなわち初期時刻$t_{0}$および任意の時刻$t \ge t_{0}$において

$$ V(x(t)) \le V(t{0}) $$

が常に成立する。

このことと$V(x)$の局所正定値性が成立する範囲、すなわち$|\delta x(t)| < a$において

$$ \frac{1}{c}|\delta x(t)|^{2} \le \delta x(t)\frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \delta x(t) \le \, \delta x(t_{0})\frac{\partial^{2} V}{\partial x^{2}}(x_{e}) \delta x(t_{0}) \le c |\delta x(t_{0})|^{2} $$

が成立するような$c>1$が存在する。

これより

$$ |\delta x(t)| \le c|\delta x(t_{0})| $$

である。

ここで初期値$\delta x(t_{0})$を

$$ |\delta x(t_{0})| < \frac{a}{c} $$

となるような範囲で取ると

$$ |\delta x(t)| \le c|\delta x(t_{0})| < c\frac{a}{c} = a $$

となる。

(証明終了)

メモ

時間微分の半負定値性

$$ \dot{V}(x) \le 0 $$

が示しているのは、リアプノフ関数$V(x)$が時間経過とともに減少していくことを示している。

もっと言いたいのは、このリアプノフ安定はいったい何を言いたくて、リアプノフ関数は何を想定したものだったのかということだ。

リアプノフ関数を力学系のエネルギーとして考えてみると様々な事象に当てはめることが出来る。

時間経過と共にエネルギー(リアプノフ関数)が減少していくとは、これはある種では熱い物体が放熱し冷めていく様子に似ている。これは焼きなまし法(刀の製鉄を元とした最適化アルゴリズム)と言われるアルゴリズムで基礎とされている考え方だ。

最近流行りの深層学習(ディープラーニング)でも、一つの学習法として制限ボルツマンマシンというものがある。制限ボルツマンマシンは元々ボルツマンマシンという神経系モデルを元にしていて、その内部の動作はエネルギーを最小化するような動きをする。少なくとも時間経過と共にエネルギーが減少していくようなモデルを考えているのだ(ホップフィールドネットワークと言われるものとボルツマンマシンを比較すると面白い)

有用なモデルにはエネルギーが減少するような傾向を求めるものが多い(気がする)。リアプノフの安定定理はこのようなエネルギーが減少する系への一般的な安定性の保証を与えていると考えられる。

ただし注意しなければいけないのは、リアプノフ関数の与え方は示されていないことだ。すくなくとも時間減少するような正定関数が存在すれば安定であることを言っているだけなのだ。これは様々な文献で言われているように十分条件であって、必要十分条件でも必要条件でもないことに注意しなければならない。リアプノフの安定定理を満たしていないからといって安定では無いというわけではないということだ。しかし非線形系のダイナミクスに関する安定性判別には非常に汎用的で強力な定理として知られている。