Shadow Academy トップ > 我流・物理数学 > 双対数(二重数)を利用した自動微分、微分の無限次元行列表現、半階微分


双対数(二重数)を利用した自動微分、
微分の無限次元行列表現、半階微分

最近、人工知能分野の研究が進み、これからは、必要とされる数学の知識が、
物理学科で学んだ範囲を超えることが想定される。
そこで、ここでは、分野を微分に関して限定した範囲内で、
断片的な知識を、備忘録としてまとめてみることにした。

目次

双対数(二重数)とは何か
双対数(二重数)の四則演算
双対数(二重数)を利用した自動微分
双対数(二重数)の行列表現と表現行列
微分の無限次元行列表現
半階微分




双対数(二重数)とは何か

最初に、複素数について習ったときのことを思い出すと、
二乗すると-1になる数を虚数単位iとして定義したのであった。
実は、この「複素数」とは、「二元数(binarion)」の一つである。
では、複素数以外の「二元数」には、どのようなものが存在するのだろうか。

例えば、「その数自体は0ではない」が、「二乗するとはじめて0になる数」、
即ち、「ε2=0」、 及び、「ε ≠ 0」を満たすような「ε」という
「2回掛けると0になる特殊な元」を導入して、複素数の場合と同様に、
abε  (a, b∈ℝ)」という数を考えてみる。
※インターネット上の文献の殆どが、 abの後に、εを書いているが、
これが正式な書き方なのかは断言しかねる。というのも、複素数のとき、
本来は、数字、虚数単位i、円周率π、ネイピア数exyという順序なので、
xiy」の様に書くべきだと教わった記憶があるからであるが……。

このような数体系のことを英語では「dual number」、その訳語として、
「双対数(そうついすう)」、或いは、「二重数」と呼ぶ。
他の「二元数」には、複素数と異なり、「j2=+1」を満たすjを、
虚数単位iの代わりに、新しい元として導入した、「分解型複素数」も存在するが、
実は二元数は本質的にこの3種しかないことが示されている。
※そういえば、双対数(二重数)の実数部分ではない方を何と呼ぶべきだろうか。
インターネット上の文献では、「非実部」、「虚部」、「二重部」、「双対部」、……
等と統一されていない。「ε」のことも「虚数単位」と呼んでいる文献もあるが、
「二重(数)単位」、「双対(数)単位」とでも呼ぶべきなのだろうか。




双対数(二重数)の四則演算

双対数の四則演算は、複素数と同じように計算できる。
例えば、双対数の足し算と引き算は、
(abε) ± (cdε) =(ac) ± (bd)ε
のように加減算としてまとめることができる。
双対数の乗除算に関しても、同様に考えてみる。
まずは、双対数の掛け算が、
(abε)(cdε) =acadεbcεbdε2ac+(adbc)ε
のように計算できる。何故なら、最後の項は、
ε2=0」 によって消失するからである。

最後に、双対数の割り算について考える。
割ることとは、「逆数をかけること」であるから、
先程のcdεが、abεの逆数であるとした場合、
ac=1 かつ adbc=0
という条件を満たす必要がある。まずは、前者の式からcを求めると、
ac=1 ⇔ c=1/a
となる。これを後者の式に代入すると、d
adbc=0 ⇔ d=-b/a2
と求められるので、両者を代入して、
cdε =1/a-(b/a2)ε
という結果を得る。但し、この式は、実数aが「a ≠ 0」であるときに限り成立する。
言い換えれば、「aが0のときは逆数が存在しない」ということである。




双対数(二重数)を利用した自動微分

双対数(二重数)の四則演算に続いて、まずは、二乗してみると、
(abε)2a2+2abεb2ε2a2+2abε
という結果を得る。やはり、最後の項は、 「ε2=0」 によって消失する。
この二乗して0になる性質は、二次以上の微小量を無視することに対応するため、
εは無限小の類似物だと解釈できる。

次に、一般的な累乗、冪乗として、n乗について考えるため、 関数f (x)=xnを導入する。
ここで、xの代わりに、双対数(二重数):xεを代入すると、
f (xε)=(xε)nnC0ε0xnnC1ε1xn-1nC2ε2xn-2 +…
=1・1・xnnεxn-1nC2ε2xn-2 +…
xnεnxn-1 +0・nC2xn-2 +… (∵ε2=0)

f (xε)=(xε)nxnεnxn-1
という結果を得る。やはり、ここでも、物理の近似公式における、
微小量と似た挙動をしている。ひょっとしたら、n乗のみの場合に限らず、
f (xε) =f (x)+f '(x)ε
という関係式が成立するかも知れない。

さらに、もっと、一般的な場合として、ある何らかの関数f (x)が次の多項式の形:
f (x) =c0x0c1x1c2x2c3x3c4x4 +…
で冪級数展開できると仮定しよう。例えば、指数関数や三角関数、双曲線関数のような関数は、
マクローリン展開やテイラー展開できるし、或いは、直交多項式のような特殊関数を想定してもいい。
すると、これをxで微分した導関数は、
f '(x) =c1x0 +2c2x1 +3c3x2 +4c4x3 +…
と計算できる。続いて、ここでも、xの代わりに、 双対数(二重数):xεを代入すると、
f (xε)= c0(xε)0c1(xε)1c2(xε)2c3(xε)3c4(xε)4+ …
=(c0x0c1x1c2x2c3x3c4x4 +…) +(c1x0 +2c2x1 +3c3x2 +4c4x3 +…)ε

という結果を得る。どうやら、一般的に、
f (xε) =f (x)+f '(x)ε
という関係式が成立しそうである。実際、この式は、
「特定の双対数を代入して関数を計算するだけで関数値と微分値が同時に求められる。」
ということを意味している。この技術は、
「自動微分(automatic differentiation, autodiff, AD)」
と呼ばれていて、機械学習などにも用いられているようだ。
「二重数を用いた自動微分」や「双対数を利用した自動微分のしくみ」
等の用語で検索してみると、多くの関連記事が出てくるだろう。

また、この式を使うことによって、例えば、「積の微分」(「ライプニッツ則」等とも呼ばれる):
f (xε)g (xε) =(ff 'ε)(gg 'ε) =fg+(f 'gfg ')ε
∴(fg)'=f 'gfg '
等も求められる。
※先程、指数関数や三角関数、双曲線関数のような関数を想定したが、
マクローリン展開やテイラー展開を用いて、実際に展開して計算してみると、
二次以上の項は消えてしまうことから、「eε=1+ε」、 「eiε=1+iε」、
「cos ε=1」、「sin εε」、 「cosh ε=1」、「sinh εε」、 「tan εε」、「tanh εε」、
「arctan εε」、「arctanh εε」、 等という結果を得る。
偶関数は1、奇関数はεで近似されることが多いようだ。
これらは、概ね、物理学の微小量の近似と同様の結果となっている。




双対数(二重数)の行列表現と表現行列

こうしてみると、全く新しい概念のように思えた、双対数(二重数)という二元数だったが、
蓋を開けてみれば、「物理の近似公式において、二次以上の微小量を無視する」という形で、
既出の概念であったことが分かるだろう。

すると、ここで、四元数(クォータニオン)が、パウリ行列を用いて表せたことが思い出される。
それでは、この双対数(二重数)という二元数も何らかの行列の形で表せるのではないだろうか。実際、

という行列の形が、双対数(二重数)に対応している。
このように行列以外のものに行列を対応付けることを「行列表現(行列による表現)」と呼ぶ。
また、今回は双対数(二重数)の行列表現を行ったわけであるが、
この具体的に対応付けた行列を表現行列(表現した行列)と呼ぶ。




微分の無限次元行列表現

ところで、先程、ある何らかの関数f (x)が次の多項式の形:
f (x)= c0x0c1x1c2x2c3x3c4x4+ …
で冪級数展開できると仮定したが、
ここで、「フーリエ解析」の単元で学んだ、ヒルベルト空間を思い出すと、
この冪級数の係数を無限次元のベクトルとして表すことができるのだから、
微分自体も無限次元の行列で表現できるのではないかという発想に至るだろう。
そして、実際、微分自体、次の無限次元の行列で表現できる。

この表現行列が、1階微分に対応するわけだが、さらに、これを2乗した行列:

も確かに、2階微分に対応している。同様に3階微分以降も定義することは可能だが、
通常の物理学において、3階微分以降が出てくることは殆どない。
※例えば、力学では、変位の1階微分を「速度」、2階微分を「加速度」と呼ぶが、
「加加速度」とでも呼ぶべき、3階微分以降はあまり登場しない。
一応、3階微分には、「躍度」という日本語の名称が存在するが、
4階微分以降には、日本語の名称は存在しない。但し、英語圏では、
その先の呼び方が、10階微分まで存在しているらしい。

また、この微分を表す、無限次元の行列には逆行列D-1が存在しない。
一般に、微分と積分は逆演算の関係にあるというから、積分を表す表現行列D':

を同様に仮定し、両者の行列の積DD'を計算すると、

となる。但し、行列の積の場合、交換法則は成立しないから、
両者の行列を掛ける順序を逆にした積D'Dも計算すると、

となるから、「DD'≠D'D」 という結果を得る。行列の積DD'とD'Dを比較すると、
両者の差異は、1行1列成分が、1であるか、0であるかだと気付く。
前者は無限次元の単位行列になるが、この1行1列成分のみが、
0であるため、後者は、単位行列にはならない。これは、
積分によって定数項が復元できないことを意味している。




半階微分

1回微分したものを「1階微分」、2回微分したものを「2階微分」と呼ぶ。
では、2回演算してはじめて、「1階微分」したのと同様の結果を得る演算があるとしたら、
「0.5階微分」に相当する、その演算のことを何と呼ぶのだろうか。
「半微分」という呼び方をされる場合もあるようだが、微分の定義における「片側極限」、
即ち、「片側微分」のことを「半微分」と呼ぶ場合があって紛らわしいので、
ここでは、「半階微分」という呼び方に統一することにする。

さて、「半階微分」の記号として、ここでは、

という記法を用いることにして、その定義より、2回演算すると、
「1階微分」したのと同様の結果を得るわけだから、

となり、ある何らかの関数f (x)に作用させた場合、

となることを、示せればよい。 関数f (x)=xaに対して、 通常のn階微分は、

の様に、階乗記号を用いて表すことができるが、
一般に、階乗記号は、0以上の整数にしか適用できない。

そこで、階乗という概念を実数にまで拡張するため、ガンマ関数を用いる。
(実際は、ガンマ関数を用いれば、階乗という概念は、複素数まで拡張可能。)
これで、関数f (x)=xaに対して、

のように、「半階微分」をガンマ関数を用いて表すことができた。
但し、ここでは、「x > 0」としている。これを2回演算させると、

となって、その定義通り、「1階微分」したのと同様の結果を得ることができた。
また、特に、自然数mに対しては、「二重階乗」(「半階乗」とも呼ぶ)!!を用いて、

と表すこともできる。但し、ここで、 「Γ(1/2)=√π」の関係を用いた。
このように、ガンマ関数を用いれば、「0.5階微分」だけでなく、
より一般的な非整数階の微分を考えることができる。
このような分野を「分数階微積分学」と呼ぶ。




参考文献

Wikipedia

  1. 二元数 - Wikipedia
  2. 二重数 - Wikipedia
  3. 分解型複素数 - Wikipedia
  4. 自動微分 - Wikipedia
  5. 躍度 - Wikipedia
  6. 加加加速度 - Wikipedia
  7. 二重階乗 - Wikipedia
  8. 分数階微積分学 - Wikipedia



Shadow Academy トップへ戻る

inserted by FC2 system