PaintsChainer神ツール

人工知能で線画を自動で着色するサービス、PaintsChainer
>> https://paintschainer.preferred.tech/

こんな線画を放り込むと・・・

こうなる!

色塗りは完全自動、アップしただけで一切手を加えていない。

もっと複雑な絵柄だと、どうなるか。

こうなった!

今度は2、3カ所チョンチョンと色指定をしたが、あとは全自動で瞬時に仕上がった。
これは楽しい。ありふれた彩色なんて、もはやアーティストの仕事では無いのかもしれない。
鳥肌が立つテクノロジーを見た。


                                                                                                                      • -

■ PaintsChainerをWindows10にインストールしてみた
* 参考 >> http://www.jami2010.com/paintschainer-win/
ほぼ上の通り行えば良いのだが、私の環境では Pythonopencvが合わずに苦労した。
解決策は、python仮想環境を作ってインストールすることでした。

試した環境 > python -V
Python 3.6.0 :: Anaconda 4.3.0 (64-bit)

1.PaintsChainer本体ソースをダウンロードする。
>> https://github.com/Itsukara/PaintsChainer
画面右[Clone or Download]より、[Download ZIP]

2.学習済みモデル
>> https://paintschainer.preferred.tech/downloads/
ここから、
・liner_f
・unet_128_standard
・unet_512_standard
3つともダウンロードする。
解凍した本体の ".\PaintsChainer-master\cgi-bin\paint_x2_unet" 以下に、
"models"というフォルダを作成し、3つのモデルを models フォルダ内に入れる。

3.Anaconda
https://www.continuum.io/downloads
Python 3.6 version をインストールする。(2.x系は不可)
実は Anacondaには Python本体も含まれているので、個別に入れる必要は無い。

4.コマンドプロンプトで、アップグレードしておく。
> conda upgrade pip -y

5.仮想環境を作成する。
Python 3.6 は、現行 OpenCV とバージョンが合わなかった(現時点で)。
そこで、以下のコマンドで Python 3.5.2の "paintenv"環境を作った。
> conda create -yn paintenv python=3.5.2
> activate paintenv
こうすると、paintenv環境に入る。
(paintenv環境から出るときは > deactivate paintenv)

6.chainer をインストール
> pip install chainer

7.opencv3 をインストール
> conda install -c https://conda.binstar.org/menpo opencv3

8.その他、足りないパッケージがあれば適宜インストール
私の場合、PIL が足りなかった。No module named 'PIL'
>pip install pillow

9.以上でインストール完了、PaintsChainerサーバを起動する。
> python server.py
  -g 1  ・・・GPUがある場合、ONにする。(無ければOFFのまま起動する)
  -p (ポート番号) ・・・ポート番号指定、デフォルト 8000

10.起動したら、ブラウザで以下にアクセス。
  http://localhost:8000/static/
あとは好きなように色塗りする。

なぜ統計学では釣り鐘型の分布が使われ、物理現象では右肩下がりの分布が使われるのか

「なぜ統計学では釣り鐘型の分布が使われ、物理現象では右肩下がりの分布が使われるのでしょうか」
という疑問を、統計学や物理学の有識者に会うたびごとに質問するが、こんな基本的なことに誰も答えられない
    -- データの見えざる手 [矢野和夫](思想社) P.32 より.

釣り鐘型の分布とは、正規分布ガウス分布)のこと。
右肩下がりの分布とは、指数分布(ボルツマン分布、上の書籍内では「U分布」)のことです。

ここに2つのグラフがあります。

1つは全国17歳学童の身長の分布、もう1つは二人以上の世帯の貯蓄額の分布です。
見ての通り、身長は釣り鐘型の正規分布で、貯蓄額は右肩下がりの指数分布です(近似的には)。
* 学校保健統計調査 平成27年度 全国表 > 身長の年齢別分布
>> http://www.e-stat.go.jp/SG1/estat/List.do?bid=000001070659&cycode=0
* 家計調査報告(貯蓄・負債編)−平成27年(2015年)平均結果速報−(二人以上の世帯)
>> http://www.stat.go.jp/data/sav/sokuhou/nen/index.htm

見ての通り、2つのグラフは全く様相が違います。
人々の分布は、身長で見れば平均を中心にまとまっていますが、
富の分配で見れば極端な偏在 〜 一部の突出した持つ者と、大多数の少ししか持たない者に分かれます。
 『人は生まれながらに平等なのに、なぜ世の中は圧倒的に不平等なのか。』
この問を統計の言葉に置き換えれば、こうなります。
 『人の特質は正規分布に従うのに、なぜ社会的資源の分配は指数分布に従うのか。』
試しに「世界の富」でググってみてください、衝撃的なタイトルが次々とヒットすることでしょう。

世の中が正規分布に従っているものと思っていませんか。
確かに、学校の成績は正規分布に近い形です。
目に見える身長、体重、あるいはかけっこの速さといった個人差も、大抵は正規分布に類する釣り鐘型です。
しかし社会の階層は、どちらかと言えば指数分布に近い、右肩下がりの一強多弱形。
この違いに愕然とし、大人が悪い、上司が悪い、為政者が悪い、とクダを巻く人のいかに多いことか。
もちろん大人も上司も為政者もパーフェクトではありませんが、それらは第一要因ではありません。
前提にあるのは、正規分布も指数分布も、多数が集まれば自然にその形に落ち着くという統計的な事実なのです。

ではなぜ、分布は自然にできるのか。
それは、数が増えれば最も確率の高い状態が実現するからです。


■ 富の分布は右肩下がり

個性を持たない多数の分子に、総量一定のエネルギーを配るとき、最も確率が高くなるのはどのように配分したときか?
M円のお金をN人に分ける場合の数をひたすら数え挙げたとき、最も場合の数が多くなるのは、どんなときか?

答は、いずれも指数分布(ボルツマン分布)となります。
論より証拠、サイコロを使ってチップのランダムな交換をひたすら繰り返せば、右肩下がりの分布が自然にできあがります。
以下、文献から引用しましょう。
* 富の分布について(駒澤大学学術機関リポジトリより)
>> http://repo.komazawa-u.ac.jp/opac/repository/all/33054/

理経済学における「富の分布理論」
近年、一連の物理経済学者が、統計力学における気体の運動理論との類推で富あるいは所得の分布を説明しようとする試みを行っている。
彼らの考えでは、富はエネルギーに相当するものであり、ランダムに選ばれた経済主体間の富の交換は、
ランダムな対の気体分子によるエネルギーの交換と同様に取り扱うことが出来る、というものである。
また、富の平均が気体の温度に対応し、交換される富の総量は常に一定であり、これは、エネルギー保存の法則と対応する、としている。

Random sharing model
偶然に出会った、二人の経済主体の間で二人の富の総額をランダムに分割する、という交換ルールを何回も繰り返すモデルである。
  ・・・
このモデルは、偶然に出会った2人が自分たちの所有する富の総和を、ギャンブルで分け合うモデルと言う様にも解釈できよう。
  ・・・
このルールに基づいて富の交換を、分布の形が変化しなくなるまで繰り返すと富の分布は指数分布になることが知られている。

上の通りにシミュレーションを行った結果は、こうなりました。

不平等の度合いを表すジニ係数は0.50。
日本の平成26年当初所得ジニ係数 0.5704」でしたから、再分配前の格差は、このシミュレーションより少し大きい程度です。
* 参考: 厚生労働省平成26年 所得再分配調査報告書
>> http://www.mhlw.go.jp/file/04-Houdouhappyou-12605000-Seisakutoukatsukan-Seisakuhyoukakanshitsu/h26hou.pdf

指数分布は最も簡明なモデルですが、必ずしも経済の全てが指数分布となるわけではありません。
シミュレーション条件を変えると、結果もまた変わってきます。

Hayes - Chakaraborti model
このモデルは、・・・極めてドラステックな結論が得られることで知られている。
今、N 人の経済主体がいるとする。
その中から、ランダムに一組のペアが選ばれ、そのペアの間で富の交換がなされる。
富の交換のルールはきわめて単純で次のようである。
(i) ペアのうち、貧しいほうの経済主体の富の大きさを越えない範囲で、ランダムな値が選ばれる。
(ii) そのようにして決められた値を、そのペアのどちらかが貰う訳であるが、どちらが貰うかもまたランダムに決める。
  ・・・
これは、あたかも、偶然に出会った二人が、所持金の小さいほうの額を上限とした掛け金でギャンブルをしてどちらかが得をし、
どちらかが損をするという過程を繰り返すというようなものである。

モデルのいったいどこが違うのか、注意深く読まないと分からないほど似ていますが、結果は大きく変わってきます。

今度の方が“ドラスティックに”格差が生じます。
ジニ係数は約0.77となりました。引用元論説によると、
「全く平等な状態(ジニ係数がゼロ)からはじめて、極めて不平等な状態(ジニ係数が 1 )に推移することが分かる。」
なぜここまで格差が開くのか。
今度のモデルの場合、一度持ち金がゼロになると、もはや全く交換が成されません。
ゼロでなくとも持ち金が極めて少なくなると、交換する金額自体も小さくなるので、貧困からの脱出がより困難です。
「世界人口の半分と同じ富が62人の富豪に集中」といった世界の富の分配は、こちらのモデルにより近いように思えます。


■ 偶然の和は釣り鐘型

一方、身長や学力などに現れる正規分布は、どのようにしてできるのでしょうか。
速い話、乱数をたくさん足し合わせれば正規分布となります。
これも論より証拠、サイコロの足し合わせを何度も繰り返してみてください。

グラフは、エクセルで乱数 RAND()を12個足し合わせたものを、1000回繰り返した結果です。
サイコロやエクセル乱数は、でたらめな数が均等に出てくる一様分布ですが、
たとえ均等でない乱数であっても足し合わせた結果は正規分布となります。
(ただし、平均や分散を持たないような特殊な乱数は除きます。)
この事実は「中心極限定理」と呼ばれており、正規分布が「正規」であることの理由となっています。
身長を例にとるなら、そこには持って生まれた資質、日々の食事の内容、生活習慣、等々、
無数の要因が合わさって結果を形作っていることでしょう。
1つ1つの要因が乱数にも似た偶然であるなら、偶然の足し合わせである正規分布が、
世の中の至る所に顔を出すのは頷ける話でしょう。


■ 分布の違いは距離感の違い

ここに来て、ようやく当初の疑問の意図が明らかになったのではないでしょうか。
正規分布も指数分布も、どちらも“自然の摂理に適った”分布なのです。
しかしなぜ、“自然な分布”には2種類あるのか。
なぜ、身長や学力は正規分布で、エネルギーやお金は指数分布なのか。
人間には多少の個性(ばらつき)はあれど、平均に回帰するが本来の姿である、とするのが前者の主張。
そもそも世の中は不平等にできていて、小数の強者と多数の弱者となるのが当然の姿である、とするのが後者の主張。
どちらにも拠るべき根拠があり、どちらも正しいのです。
ここで「対象が違えば分布が違って当然」と思うなら、
いかなる性質を持つ対象が釣り鐘型となり、
どんな性質であれば右肩下がりになるのでしょうか。
その性質をお金に持たせることによって、富の分配を釣り鐘型にすることはできないのでしょうか。

2つの分布の成り立ちを、もう少し深く探ってみましょう。
一般に指数的な減衰は、次の微分方程式に従います。
  f'(x) = - λ f(x)   ・・・☆指数分布の微分方程式
ある地点における減り方は、その地点での値そのものに比例する、と読めます。
1つ上のレベルにステップアップする人数は、そのレベルに居る人数に比例する。
つまり一定の割合でレベルアップする(あるいは脱落する)ということです。
  f(x) = C exp( - λ x )

一方、正規分布は次の微分方程式に従います。
  f'(x) = - λ x f(x)   ・・・★正規分布微分方程式
ある地点における減り方は、その地点での値と原点からの距離に比例する、と読めます。
上の ☆ と比べると、右辺に x が1つ入っているところが違います。
「原点からの距離」というファクターが入ったおかげで、
プラス側もマイナス側も同じように、原点から離れるほど減るようになっています。
  f(x) = C exp( - (λ/2) x^2 )
どうやら秘密はこの「距離」というところにありそうです。

☆指数分布 -> ★正規分布ときた流れを、そのまま延長していったらどうなるでしょうか。
以下のような一連の微分方程式を考えてみましょう。
  f'(x) = - λ x^2 f(x)
  f'(x) = - λ x^3 f(x)
  f'(x) = - λ x^4 f(x)
    ・・・
これらのグラフを順番に描くと、こんな風になります。

指数分布と正規分布はいかにも“自然な”感じがしますが、
それより高次の分布があったとしても不思議では無い、
少なくとも数学的にはあっても構わないという気がします。
あるいは、これらの分布の間を連続的に埋める分布があっても良いようにも思えます。

ここで改めて「距離」について考えてみましょう。
普通、距離といえばユークリッド距離 d = √(x^2+y^2) のことを指しますが、
もっと柔軟に考えれば、とにかく2点間の隔たりを示す値であれば何でも、ある種の距離であると見なせます。
数学的には、
 ・非負性: d(a,b) >= 0
 ・非退化性: a=b <=> d(a,b)=0
 ・対称性: d(b,a) = d(a,b)
 ・三角不等式 : d(a,b) + d(b,c) >= d(a,c)
を満たす関数 d(a,b) は、全て距離の仲間です。>> wikipedia:距離空間
下に描かれてている図形は全て、ある種の距離で測った「円」なのです。

まあ、よほどのひねくれ者でない限り、普通は“均等に丸い”円を選ぶと思うのですが、
たとえ他の曲線を選んだとしても、距離的にはOK(?)なのです。
この距離の図と、先の一連の分布のグラフを重ねて見れば、両者の対応は一目瞭然でしょう。
距離の図で、“均等に丸い”円に相当するのが正規分布で、
ひし形の絶対値距離に相当するのが指数分布です。

・対象となる要素間の距離がユークリッド的に測れる場合 -> 正規分布
・対象となる要素間の距離が絶対値的に測れる場合 -> 指数分布
・対象となる要素間の距離がミンコフスキー的(?)に測れる場合 -> 高次の分布

これが、2つの分布に対する、私なりの解釈です。
正規分布の式に見られる2乗はどこから来るのか。
導出の過程を追ってみると、「距離を2乗で測る」ところに源流がありました。
* 正規分布の導出 >> d:id:rikunora:20170310
そう思えば、指数分布が1乗距離であることにも納得がいくと思うのですが、いかがでしょうか。


■ 富の距離感を変える

もし分布が距離の反映であるならば、距離感を変えることによって、分布が変わるかもしれません。
今日のお金は絶対値距離、単純に数値そのものが隔たりとなっていますが、
もしこれが変われば、分布も変わってくるでしょう。

富の分布が右肩下がりになる背景には、プラスとマイナスの非対称性があります。
プラスの側は際限なく大きくできるのに、マイナスの側には限りがある。
上記のモデルについて言えば、ゼロという下限が非対称性をもたらしています。
ならば、いっそ下限を取っ払ってプラスマイナス対称にしたら、どうなるか。

もしマイナス側にストッパーが無かったなら、現状よりもずっと格差が大きくなるように思えます。
「破産とは救済策である」と聞いたことがあります。
もし破産が無かったら、借金を返すために何処までも何処までも、子々孫々に渡るまで働き続けなければならない。
破産すればそこでリセットできるので、それ以上取り立てできない。
なので、破産は最後の救済策なのです。
その救済策を無くしたら、格差は上だけでなく、下側にも拡大することになるでしょう。
物理で言えば、拡散方程式。
しかしこれで、とにかく分布は釣り鐘型になります。
上下対称なのだから、自然とそうなります。

問題の本質は、拡大し続けることにあります。
ならば、拡大した分だけ、全体のスケールを縮めれば良いはずです。
プラス側の財産は、一定の割合で目減りする。
同様にマイナス側の借金も、一定の割合で消えてゆく。
つまり、功績も負債も、時が経つにつれて忘れられてゆく。

・下限の廃止 -- プラス側もマイナス側も対称にする。
・スケール縮小 -- 拡大の速度に合わせて、プラス側もマイナス側も同様に縮小する。

マイナス側も縮小するのだから、どんな借金も時が経てばいつかは消滅します。
それ以上の速度で借金できないように、システムに上限を定めれば良いのです。
同様に、どんな巨万の富も、時が経てば薄まり、消えてゆく運命にあります。
金額の絶対値ではなく、「速度」であるところがミソ。
プラス側で稼げる速度を見越して、ちょうどそれに釣り合う速度で借金を薄めれば、全体としての釣り合いがとれるはずです。

・プラスマイナスの拡大量を見て、その平均をゼロ点と定める。
・プラスマイナスの拡大速度に合わせて、スケール縮小の比率を定める。
・ゼロ点とスケール縮小比率は、その時々の経済活動に合わせて(公定歩合のように)随時調整する。

このシステムであれば、分布は間違いなく釣り鐘型に移行するでしょう。

新システム(?!)の視点から現行システムを見直すと、現行の特徴が浮き彫りにされます。

・プラス側の成長することばかりを夢見て、同じ量だけマイナス側が生じることに目をつぶってきた。
・「財産はプラスになるのが当たり前、マイナスになるのは本人が悪い」と信じられてきた。

成長・利子・借金。
この3つはセットになって、時が経てば経つほど指数的に拡大します。
対処療法にも限界があります。
プラスだけの幻想を捨てて、プラスマイナスゼロにする。
分布を変えるとは、きっとそういうことです。


■ 分布の上に行きたいか、形を変えたいか

指数分布、あるいは極端な右肩下がりの分布を突き付けられたとき、多くの人の反応は2つに分かれます。

 ・分布の中で上位を目指そうとする。
 ・分布の形を変えようとする。

実際にはほとんどの人が、前者の考えに傾きます。
後者に思い至る人は、ごく少数です。
より正確に言うと「分布の中で、下位に落ちないように備えを固めようとする」のが、
最大多数の取る態度であるように思われます。
人を動かすのは結局のところ不安と心配なのだと、思わずにはいられません。

私は折に触れ、この分布と偏在の話を人に訊ねてきました。
それらの個人的な感想なので、あるいは場所によって、問い方によって、結果は違ってくるのかもしれません。

それでも、両者のどちらが正義かと問えば、やはり後者に軍配が上がると思います。
前者は一握りしか幸せになれませんが、後者は大多数が幸せになれるからです。

It has been said that democracy is the worst form of government except all the others that have been tried.
「民主主義は最悪の政治形態である。ただし、これまで試みられてきた、それ以外の全ての政治形態を除けば。」
by ウィンストン・チャーチル


■ 参照リンク・過去の関連記事まとめ

統計分布の基礎 -- 貧乏/金持分布 >> d:id:rikunora:20080422
100人の村でランダムにお金を交換したら? >> http://brownian.motion.ne.jp/memo/Binbou.php
貯金と年収の形 >> d:id:rikunora:20090622

正規分布の導出 >> d:id:rikunora:20170310
対数正規分布の仕組み >> d:id:rikunora:20100418
指数分布の理由 >> http://brownian.motion.ne.jp/11_WhyPPMisImpossible/08_ReasonForExp.html
君はエントロピーって言葉を知ってるかい?(2) >>d:id:rikunora:20110518
べき分布のメカニズム >> d:id:rikunora:20091130

ニコニコ動画再生数は対数正規分布に従う >> d:id:rikunora:20140320
ニコニコ動画と日本の都市人口の意外な関係 >> d:id:rikunora:20140328
インターネットは一強多弱 >> d:id:rikunora:20140416

なぜ過密と過疎ができるのか >> d:id:rikunora:20141129
幸せは加速度センサで測れる >> d:id:rikunora:20141205

お金の要らない世の中、働かなくても良い世の中、勉強しなくて良い世の中 >> d:id:rikunora:20080420
科学の力で怠けよう! >> d:id:rikunora:20080421
幸福量保存の法則 >> d:id:rikunora:20080618

ミクの歌って覚える統計入門 >> http://miku.motion.ne.jp/

正規分布の導出

■ 予備知識

1.正規分布の骨格は、係数や規格化を除けば
  f(x) = exp( - x^2 )

 要は、2乗=「左右がおんなじで」、指数減衰=「だんだん減っていく形」です。
* 参考: 第6話 押しも押されぬ、正規分布は√π >> http://miku.motion.ne.jp/stories/06_NormDist.html

2.指数は、掛け算を足し算に直す。
  exp( A )・exp( B ) = exp( A + B )

 底の違いや定数倍を別にすれば、掛け算を足し算に直す計算は指数しか無い。

以上、予備知識おしまい。

正規分布の導出

1.平面の的にボールを当てることを考える。
 ボールが中心から外れる誤差の分布を f(r2) としよう。
  r2 は、中心からボールが当たった点までの距離(の2乗)を表す。
 この f が、具体的にどのような関数なのかを知りたい。

2.誤差はあらゆる方向に対して独立(相互に影響しない)とする。
 横方向 x の誤差は、f( x^2 )。
 縦方向 y の誤差は、f( y^2 )。
 合わせた誤差は、f( x^2 )・f( y^2 )。
 なぜ掛け算かというと、x と y が同時に起こる確率は、x と y それぞれの確率の掛け算になるから。

3.的の中心からボールが当たった点までの距離(の2乗)は、x^2 + y^2 。
  ということは、
   ( x と y が同時に起こる確率) = (的の中心から外れた確率)
    f( x^2 )・f( y^2 ) = f( x^2 + y^2 )
 これは、掛け算を足し算に直す計算なのだから、指数である。

4.つまり、独立した誤差を合わせた確率分布の骨格は、
  f(x) = exp( a x^2 )
の形となる。

係数 a がプラスであるとは考えづらい(発散するので)。
結局のところ、確率分布は、
  f(x) = C exp( - A x^2 )
の形となる。
これが正規分布だ。
あとは係数 A と C を規格化条件(全部合わせて100%になること)から決めればよい。


以上は、ハーシェルによる証明(1850)を焼き直したものです。
* 科学哲学ニューズレター No.5: ハーシェルによる最小2乗法の簡単な証明
>> https://www.bun.kyoto-u.ac.jp/philosophy_and_history_of_science/phs-archives/newsletters/newslet_5.html

あまりにも簡明な導出に驚き、ここに再掲しました。
上のリンク先によると、
『若きマクスウェルはこの論証を含むハーシェルの論文を読んで、強い感銘を受けたと思われる』
のだそうです。
気体分子運動の「マクスウェルの速度分布」は、上の議論を2次元の的から3次元の空間に拡張したものです。
「分子運動があらゆる方向に対して独立である」というシンプルな仮定から、正規分布の骨格が導かれます。


* 参考: EMANの物理学:マクスウェルの速度分布
>> http://eman-physics.net/statistic/maxwell1.html

■ 様々な導出
歴史的に見れば、ド・モアブルによる「二項分布の極限」が源流でしょう。
他にも、中心極限定理ブラウン運動(ウィーナー過程)、実験したらそうなった、
などなど、いろいろな導出方法があります。

* 七つの正規分布正規分布はどこから来たのか?−
>> http://www.psych.or.jp/meeting/proceedings/75/contens/poster/pdf/1AM038.pdf
* 参考: T_NAKAの阿房ブログ: 正規分布の導出について
>> http://teenaka.at.webry.info/201412/article_3.html

■ 本格的な導出
上記の2次元、3次元、といった独立した誤差の数をもっと増やせば、一般的な議論が成り立ちます。

ある大きさ e の誤差が実現する確率を f(e) という関数で表せば、
e1, e2, e3・・・en という n個の誤差の要因が独立に働いた結果の確率は、
 P = f(e1)・f(e2)・f(e3)・・・f(en)
となります。
以下、目的は「もっとも自然な仮定のもとに」f(e) の形を決定することです。

誤差とは、真の値 X との差であると考えます。
個々の観測値を x1, x2, x3・・・とすると、
 e1 = (x1 - X)、e2 = (x2 - X)、e3 = (x3 - X)・・・
です。
実現する確率 P を、真の値 X の関数として考えると、
 P(X) = f(x1 - X)・f(x2 - X)・f(x3 - X)・・・
となるでしょう。

ここで1つ、尤もらしい仮定を置きます。
「実際に起こった x1, x2, x3・・・は、確率 P(X) を最大とするものである」
これが、いわゆる「最尤原理」です。
P(X) が真の値 X で最大となるのなら、X で微分すれば 0 になるということです。
まず、両辺の対数をとります。
 log( P(X) ) = log(f(x1 - X)) + log(f(x2 - X)) + log(f(x3 - X))・・・
  ※ なぜここで対数が出てくるかというと、
  ※ 手に負えそうも無い掛け算の塊をなんとか分解して、
  ※ 微分できる形に持っていきたいと知恵を絞った所産です。
  ※ 上記2次元の例でも分かる通り、「掛け算と足し算の橋渡し」が本質的な意味を持ちます。
これを X で微分すると、
 { log( P(X) }' = {log(f(x1 - X))}' + {log(f(x2 - X))}' + {log(f(x3 - X))}'・・・
 P'(X) / P(X) = - f'(x1 - X)/f(x1 - X) - f'(x2 - X)/f(x2 - X) - f'(x3 - X)/f(x3 - X)・・・
これが 0 になるということですから、
 f'(x1 - X)/f(x1 - X) + f'(x2 - X)/f(x2 - X) + f'(x3 - X)/f(x3 - X)・・・ = 0
式が見にくいので、もとの e1, e2, e3・・・に戻しましょう。
 f'(e1)/f(e1) + f'(e2)/f(e2) + f'(e3)/f(e3)・・・ = 0
以下、いちいち書くのがめんどくさいので、
 φ(e) = f'(e)/f(e)
とおきます。
 φ(e1) + φ(e2) + φ(e3)・・・ = 0   ・・・★式
この ★式が、関数 f の満たすべき条件です。

さて、ここで問題としている誤差は、系統誤差では無く偶然誤差なので、
誤差の合計は 0 である(おしなべてプラスにもマイナスにも同等に作用する)としましょう。
 e1 + e2 + e3 ・・・ = 0
とある誤差 e1 に着目すると、
 e1 = - (e2 + e3 + e4・・・)
e1 は残りの誤差 e2, e3, e4・・・の関数であると見て、
上の式を e2, e3, e4・・・で順に偏微分します。
 ∂e1 / ∂e2 = -1
 ∂e1 / ∂e3 = -1
 ∂e1 / ∂e4 = -1
  ・・・
この関係は、全ての誤差の組み合わせについて成り立ちます。
 ∂ei / ∂ej = -1 (i≠j)   ・・・☆式
ある1つの誤差を動かすと、別の誤差はそれを打ち消すように動く、ということです。

各誤差同士の動き方が分かったところで、先の★式に戻ります。
とある誤差 e1 を、残りの誤差の関数 e1( e2, e3, e4 ・・・) であると見なして、
★式を e2 で微分してみます。
 φ'(e1)・(∂e1/∂e2) + φ'(e2) + 0 + 0 ・・・ = 0
1項目は合成関数の微分だよ。
e3 以降の項は e2 を直接含まないので(独立なので)全て 0 。
ここで ☆式“誤差が互いに打ち消すように動く”ことを思い出して、
 φ'(e1)・(-1) + φ'(e2) = 0
 φ'(e1) = φ'(e2)
同じことは、全ての誤差の組み合わせについて成り立つので、
 φ'(e1) = φ'(e2) = φ'(e3) = φ'(e4) ・・・
これがどんな e についても成り立つということは、φ'(e) は定数関数である、ということです。
定数関数 φ'(e) を積分すると、
 φ(e) = a e + C
    ( a, C は任意の定数)
なのですが、★式から C=0 であることが分かるので、結局
 φ(e) = a e
です。
φ(e) を元の形に戻すと、
 f'(e) / f(e) = a e

ここまでくれば、あと一息。
あとはこの微分方程式を解いて(変数分離形ですね)、
 (d/de)( f(e) ) / f(e) = a e
 ∫ 1/ f(e) df = ∫( a e ) de
 log( f(e) ) = (a/2) e^2 + C0
 f(e) = exp( (a/2) e^2 + C0 )
    = C1 exp( -C2 e^2 )
おつかれさま。確かに正規分布の骨格が出てきました。

* 参考: ガウス分布の導出
>> http://www.eng.niigata-u.ac.jp/~nomoto/7.html

正規分布の“もっとも自然な仮定”とは

以上の導出に用いた仮定を列挙してみましょう。

1.複数の独立した誤差の要因が結果に作用する。
2.誤差の合計は0。おしなべてプラスにもマイナスにも同等に作用する。
3.最尤原理「実際に起こった x1, x2, x3・・・は、確率 P(X) を最大とするものである」

これらの仮定を満たす状況であれば、結果は正規分布に従います。
改めて仮定のリストを眺めてみると、どれも自然なものばかりです。
なので、実際に非常に多くの状況で正規分布が現れるわけです。
もし上の仮定が成り立たなければ、結果は正規分布から外れます。
例えば変数が上限や下限の影響を大きく受ければ、仮定2.が崩れるので、正規分布にはなりません。
いかなる場合に正規分布と見なしてよいのか、このリストから判断が付くことになります。

Sin写像のカオス

※ この記事は、『Sin( Sin( Sin( ・・・ Sin(x))))... のように、Sinをどこまでも繰り返したら、どうなるか? 』
>> d:id:rikunora:20170301 の続きです。

単純に Sin Sin Sin ... を繰り返せば0に収束するのですが、
これが a Sin ( a Sin ( a Sin ... であったなら、係数 a によって様相が変わります。
a = π/2 であれば矩形波となり、もっと a が大きくなればカオスになることが予想されます。
そう考えると、これがいわゆる「ロジスティック写像のカオス」にそっくりであったことに気付きました。

 ・ロジスティック写像
   Xn+1 = a Xn・( 1 - Xn )
 ・Sin写像
   Xn+1 = a Sin( Xn )

要は、2次式を Sin に変えただけです。
ロジスティック写像によるカオスは有名ですが、Sin写像によるカオスはあまり目にしません。
調べてみると、Wikipediaに次の記述がありました。

-- wikipedia:ロジスティック写像 より
他の例としては、正弦波を用いた xn+1 = a sin xn という写像でもこの条件を満たし、
周期倍分岐、カオス、窓など、ロジスティック写像同様な振る舞いを見せる。

また、分岐の様子を確認されている方もいます。
* Maximaでつづる数学の旅: カオスのグラフ
>> http://d.hatena.ne.jp/jurupapa/20110615/1308154897

さっそくここでも試してみました。
以下は、a = 0.5 〜 7 まで、0.5刻みで変化させたときの、Sin写像の様子です。



次に、カオスが増大する様子を見るべく、横軸に係数 a、縦軸に収束先をプロットしました。
ロジスティック写像で「分岐図」と呼んでいるグラフです。
(正確な収束先ではなく、1000回写した先のプロットです)

なるほど、ロジスティック写像の分岐図と似ていますが、
 ・上下対称に、直線的に広がっていること、
 ・一定間隔でしましま(?)が見られること、
などが特徴です。

同じ図を、a = 1.75〜2.25 の範囲で拡大したものです。

おもしろいのは、図の中にそこはかとなくSinカーブが潜んでいることです。
Sinの中に Sinが入り込み、フラクタルを成しています。
きっと Sinを畳み掛けたらこうなるだろうと、感覚的にも納得できます。

以上は、次のURLで行っていたことを、そのままSinに当てはめた結果でした。
* ロジスティック写像Mathematica によるシミュレーション)
http://www.qmss.jp/qmss/text/simulation/logistic-map/mathematica/mathematica.htm

ロジスティック写像にはもともと「生物の個体数の変動」といった意味がありました。
昆虫を一定サイズの容器内で飼ったとき、個体が少数でまだゆとりがあるうちはどんどん増えますが、
数が増え、飽和状態に近付くにつれてだんだん住みにくくなり、増加率が下がってくる。
これをモデル化したものが、ロジスティック写像です。

それでは Sin写像の繰り返しにも、何か実在の意味があるのでしょうか。
改めて人間社会を見渡せば、必ずしもロジスティックに当てはまらない増え方もあるのではないかと思えます。
ブームや流行の波が一定周期でやってくる社会では、波に乗った者が勝ち、
乗り遅れた者、あるいは早すぎた者たちは負けるといった運命にあります。
好評な株には我れ先にと群がり、大多数が群がる頃には他人の逆を張る。
一人一人が他人と同じになるまいと行動した結果、自ずと潮の満ち引きのような周期が形作られる。
そうした流行の波が次々と畳み掛けるようにやってくる社会とは、
大局的に見れば Sin写像の繰り返しではないでしょうか。
そこで係数 a を上げる操作とは、「社会のサイクルをより早く回すこと」に相当するでしょう。
かつて手紙だったものが、電信、電話となり、インターネットとなって、何倍ものサイクルで回るようになる。
その結果、どうなるか。
カオスとなります。
かつて、ゆっくり大きく行われていた1パターンが、サイクルが早回しになるにつれ、
小さく入れ子になって折り重なり、カオスを形成する。
確かに「歴史は繰り返す」のですが、決して以前と同じではなく、
以前よりスケールダウンした小さなパターンが、細かく、至る所で、何度も何度も繰り返される。
その極限が、ひたすら“流行の波”を突き詰めた未来の姿であるように思えるのです。

Sin Sin Sin... Cos Cos Cos...

Sin( Sin( Sin( ・・・ Sin(x))))... のように、Sinをどこまでも繰り返したら、どうなるか?
Cos( Cos( Cos( ・・・ Cos(x))))... のように、Cosをどこまでも繰り返したら、どうなるか?
Sin((π/2) Sin((π/2) Sin((π/2) ・・・ Sin((π/2) x )))... のように、Sin((π/2) * ) だったらどうなるか?
Cos((π/2) Cos((π/2) Cos((π/2) ・・・ Cos((π/2) x )))... のように、Cos((π/2) * ) だったらどうなるか?

答を見る前に、ちょっと考えてみましょう・・・
    ・

    ・

    ・

    ・

    ・

    ・

    ・

    ・

    ・

    ・


Sin( Sin( Sin( ・・・ のグラフ、だんだん低くなっているように見えます。


Cos( Cos( Cos( ・・・ のグラフ、一定の値に近づいているようです。


Sin((π/2) Sin((π/2) Sin((π/2) ・・・ のグラフ、矩形波っぽくなります。



Cos((π/2) Cos((π/2) Cos((π/2) ・・・ のグラフ、矩形波っぽいけど、よく見ると上下交互に振動しています。


関数の挙動は、以下のように斜め45度の線(y=x)を引くと、よく分かります。


まず Sin( Sin( Sin( ・・・ の繰り返し。

X軸上の適当な点<1>からスタートします。
点 <1> に該当する Sin(<1>) の値は、グラフ上の<2>の点です。
その<2>の値を、再び Sin の入力とするには、
斜め45度の線(y=x)に“反射”させて、y軸に示された値を x軸上にもってきます。それが<3>です。
<3> に該当する Sin(<3>) の値は、グラフ上の<4>の点です。
以下、<5>, <6>, <7>, <8>・・・と、繰り返します。
繰り返し操作は、グラフ上の Sin と斜めの線に挟まれた細い領域を進み、最後は0に近づきます。
X軸上のどの点からスタートしても、結局は0に近づくので、Sin( Sin( Sin( ・・・ の極限は0です。

次は Cos( Cos( Cos( ・・・ の繰り返し。

グラフの見方は、Sinと同じように矢印を辿ります。
今度の場合、Cos と斜めの線の交点に、矢印は巻き付くように近付きます。
なので、Cos( Cos( Cos( ・・・ の極限は Cos(x) = x となる交点の値です。
x = 0.739085... といった値になります。

同じようにして、 Sin((π/2) Sin((π/2) Sin((π/2) ・・・ の値が1に近づくことが見て取れます。
(マイナス側の -π < x < 0 の範囲では -1 に近付きます。)


Cos((π/2) Cos((π/2) Cos((π/2) ・・・ の場合は、1点に収束しません。
最後には0と1の間を振動するような形となります。


もっと試してみましょう。

(π/2) Sin( 2 * ) の繰り返し。周波数を2倍にしたもの。
(π/2) Sin( 2 (π/2) Sin( 2 (π/2) Sin( 2 x ) ) )


(π/2) Cos( 2 * ) の繰り返し。周波数を2倍にしたもの。
(π/2) Cos( 2 (π/2) Cos( 2 (π/2) Cos( 2 x ) ) )


Sin の周波数を上げていったらどうなるか。
Sin( 2 * ) の繰り返し。

Sin( 3 * ) の繰り返し。

Sin( 4 * ) の繰り返し。

Sin( 5 * ) の繰り返し。


Cos の周波数を上げていったらどうなるか。
Cos( 2 * ) の繰り返し。

Cos( 3 * ) の繰り返し。

Cos( 4 * ) の繰り返し。

Cos( 5 * ) の繰り返し。


最後はカオスになる。

* Sin写像のカオス >> d:id:rikunora:20170304 に続く.

一般相対性理論の勘どころ(1)

■ 予備知識
特殊相対性理論とは、
 『光の速さは、どのように等速運動している人(慣性系)から見ても同じになる』
という実験事実に基づく理論です。
止まっている人から見ても、光を追いかけるように走っている人から見ても、光の速さが同じに見える・・・
ということは、止まっている人と走っている人では、光の速さを測るモノサシが違っている。
空間の長さと、時間の進み具合が違うのだ、というのが特殊相対論の考え方です。
詳しくは以下を参照、
* ローレンツ変換の導出 >>> d:id:rikunora:20111107

■ 時空の境界
見る人の立場によって時空のモノサシが変わる。
ということは、もし立場の違う2人が接したなら、2つの異なる時空の間に境界が生じるはずです。
例えば、立場Aの人が空中にいて、立場Bの人が地上にいたとしたら、
空中と地上の間のどこかでモノサシが変わる境界線(面)が生じることでしょう。
仮に、地上10メートルより上は「止まっている人Aが見た時空」になっていて、
10メートル以下では「走っている人Bが見た時空」になっていたとしましょう。
そこでAの時空から、Bの時空に足を踏み入れたなら、何が起こるか。
きっと「加速」が起こります。
なぜって、Aは止まっている人の時空で、Bは走っている人の時空だから。
AからBに足を踏み入れた途端、止まっていた物体が走り出すような、加速する力が働くに違いありません。
この加速する力とは、いったい何なのでしょう。
現実の世界に当てはめて考えると、それは重力に他なりません。
 『運動の加速度と重力加速度は区別がつかない』
これが“アインシュタイン生涯最高のひらめき”であり、現在「等価原理」と呼ばれている、一般相対論の出発点です。

我々が重力を感じるこの空間は、
 「ほんの少しずつ時空のモノサシの異なる空間が、幾重にも折り重なってできている」
ということなのです。
上の例では、境界は地上10メートルの1カ所だけなので、
境界から受ける力は地上10メートルの1点だけに限られていましたが、
これをA,Bだけでなく、A,B,C,D・・・と、モノサシの異なる薄い空間を幾重にも重ねていけば、
しまいには連続的に、どこでも重力が働くような空間になることでしょう。

ごく薄い空間を何重にも重ねる、というアイデアは、数学的には“微分”に相当します。
一般相対論で、ことさら時空の微分多様体微分)を多用する理由は、
「時空の境界 = 2つの薄い空間同士の差異 = 微分」だからです。
* 参考: 宇宙の果て >> d:id:rikunora:20160924

■ 反変と共変、登場人物と舞台背景
物体の運動を表すのにベクトルを用いるのは、ごく自然な考え方でしょう。
ニュートン力学に登場するベクトルは、もっぱら「物体の」位置や速度を数値化したものですが、
これが相対性理論になると、それまであまり意識されなかった新たな種類のベクトルが付け加わります。
それは「時空間の」ベクトルです。
一般相対論では、登場人物である物体だけでなく、舞台背景となる時空間も変化の対象となります。
それゆえ相対論で扱うベクトルは、物体に関するものと、時空間に関するものと、大きく2種類に大別されます。
物体に関するベクトルのことを「反変ベクトル」、時空間に関するベクトルのことを「共変ベクトル」と言います。
・・・ここで多少なりとも相対論を知っている人なら、「何といい加減な定義だ」と呆れるかもしれませんが、
厳密さに目をつぶって「反変」と「共変」の意味するところを言えば、それらは「登場人物」と「舞台背景」に他なりません。

教科書的な定義では、反変ベクトルとは「座標変換に対して、成分が反対向きに変換されるベクトル」であるとされます。
また、共変ベクトルとは「座標変換に対して、成分が同じ向きに変換されるベクトル」であるとされます。
(なので「反変」と「共変」という名前が付いています。)

まず反変ベクトルの意味ですが、要は「どの角度から眺めても実体は常に不動である」ことが言いたかったのです。
首を右に傾けて見たならば、実体は左に傾いて目に映ります。
顔を近づけてスケールを細かくすれば、実体は逆に大きく拡大されます。
見方を変えれば、物理的な実体は「座標変換と反対に変換されて」目に映る。
何のことは無い、我々が普通に物理的実体として扱うベクトルは、そのほとんどが反変ベクトルだというわけです。
何とまあ、もって回した定義なのだろう・・・と思うかもしれませんが、
数学的に疑問の余地なく「不動の物理的実体がある」ことを言い表すには、
「座標変換とは反対に成分が動く」という他に、上手い表現方法が無かったのです。

では共変ベクトルは何なのかと言えば、とりあえず「座標軸そのもの」であると思ってください。
「座標変換と同様に変換されるベクトル」ってことは、つまり座標軸そのものってことでしょう。
首を右に傾けて見たとき、同じように右に傾くのは、首自身です。
しかしながら、これを「共変ベクトル=座標の基底ベクトル」だと言い切るのは、少々具合が悪い。
なぜなら、あらゆるベクトルは基底ベクトルの組み合わせ(一次結合)で表せるので、
あらゆるベクトルが共変ベクトルになってしまいます。
何とかして、物理的実体ではなく、座標の側を示すベクトルなんだよ、ということが言いたい。
そこで数学的な定義として「座標変換と同じ向きに成分が動く」という言い方をしたわけです。

ある座標系で、何か物理的なベクトルを表せば、上の図のようになるでしょう。
この図で赤い主役の矢印が反変ベクトル、青い背景の矢印が共変ベクトルです。
ニュートン力学の頃は、赤い矢印のことしか考えていませんでした。
それがアインシュタインの登場で、実は青い矢印の方も変化することに気づいたのです。
これが相対論において、反変と共変という2種類のベクトルを考える理由です。

 ※ 共変ベクトルの例として挙げられるものの1つに“スカラー場の偏微分”がありますが、
 ※ 逆に言えば(座標の基底ベクトル以外で)例に挙げられるものは、それくらいしか思い当たりません。
 ※ そもそも共変ベクトルは、物理的実体に対する“容れ物”といった意味合いを持ちます。
 ※ なので、物理的実体では無い共変ベクトルの例を挙げるのは、かなり難しい注文なのです。

 ※ また、反変成分と共変成分を斜交座標の上で説明する、というやり方もあるのですが、
 ※ これがけっこう複雑でムズカシイと私は思っています。
 ※ ここではまず、反変=物理的実体、共変=座標軸、という(厳密では無いが直観的な)考え方で押し切ります。
 ※ 斜交座標については、きっと後から分かってくるでしょう。。。

■ 共変と反変はセットになっている
舞台に登場人物が上がって初めて劇が成り立つように、
共変ベクトルの上に反変ベクトルがあって、初めて物理的実体を測ることができます。
つまり、共変ベクトルと反変ベクトルは1セットで1つの意味を持つのです。

相対論の書き方で、反変ベクトルの添え字は上に付け、共変ベクトルの添え字は下に付ける、というルールがあります。

上に付いた添え字と、下に付いた添え字が続けて出てきたら、それらはまとめて“ある座標系から測った物理量”となります。

これと対を為す形で、舞台背景の方に着目するときは、
「物理的実体をあたかも座標系であるかのように見なして」物理量を示します。

ここで「物理的実体をあたかも座標系であるかのように見なした」ものは
「反変基底(ベクトル)」と呼ばれています。
そうなると、「反変基底(ベクトル)って何だ?」と悩んでしまうのですが、私の解釈では、
『背景となる空間を測るには、逆に中身である登場人物の方を基準にする』
のだと捉えています。。。すいません、これ以上適切な言葉を思いつきません。

相対論の数式には、「添え字のセットの和」が頻繁に現れます。
その理由は上記のように、共変ベクトルと反変ベクトルは1セットであるところから来ています。
ならばいっそ、同じ添え字が上下に表れたなら、いちいち和の記号(足し算とか、Σとか)は書かなくていいじゃないか、
としたのが「アインシュタインの縮約記法」です。
なぜ、縮約記法を行っても混乱を招かないのかと言えば、もともと物理的にセットになっている概念だったからなのです。
 ※ちょうど四則演算の数式で、いちいちかけ算のx記号を書かずに省略する感覚に似ています。

なぜ、反変ベクトルと共変ベクトルの2種類があるのか?
> 登場人物となる物理的実体と、舞台背景となる座標軸、2種類のベクトルについて考えるから。


なぜ反変の添え字を上に書き、共変の添え字を下に書くのか?
> どれが登場人物で、どれが舞台背景なのか、一目で見分けられるような表記方法が必要だから。


なぜ縮約記法(Σの省略)が成り立つのか?
> 上下の添え字がセットになって、初めて座標軸の上にある物理的実在を測ることができるから。

とにかく、
 「上付き=反変=物理的実体=登場人物=赤い矢印
 「下付き=共変=座標軸  =舞台背景=青い矢印
と整理すれば、一般相対性理論を読み取る敷居がグッと下がるはず。

■ 共変・反変に見る図と地の関係
以下、ちょっとだけ脱線。

これは、“ルビンの壺”と呼ばれる図形です。(図はWikipediaより引用)
黒を地とするか、白を地とするかによって、壺に見えたり、横顔に見えたり、2つの意味に捉えることができます。
実は、共変・反変にも、この“ルビンの壺”のような「図と地の関係」があります。
ここまで、反変ベクトルを物理的実在=「図」、共変ベクトルを座標軸=「地」であると捉えてきましたが、
数学的にはこの2つをひっくり返して、反変の方を「地」、共変の方を「図」として捉えることも可能です。
共変と反変は、互いに表と裏のような関係にあって、仮に役割をひっくり返して「裏の世界」に行ったとしても、
それはそれで矛盾なく成り立つ(計算できる)のです。
共変・反変が、図と地、表と裏のように双子の関係になっていることを「双対性」、
「裏の世界」のことを「双対空間」、「裏の世界の基底」のことを「双対基底」と言います。
・・・図と地、裏の世界、双対空間、などと聞くと、なんだかとってもカッコイイものに思えますし、
実際、数学的にはとても美しいのですが、さしあたり双対性についての考察は後回しにした方が無難です。
ここで引っかかっると、いつまでたっても相対論のゴールにたどり着けないからです。
とりあえずは深く悩まず、双対とは「図と地のことだな」程度に留めておきましょう。
以上、脱線終わり。

テンソルはベクトル間の橋渡し
一般相対論の関心の中心は「時空の境界」にあります。
ある時空Aから、別の時空Bに切り替わるその境界において、何が起こるかを記述したい。
この、境界を記述する道具立てが「テンソル」です。
テンソルとは、2つのベクトルAからBへの変換表です。
あるいは(同じことですが)ベクトルAとBの間の関係を示した表です。
※ より正確には、“2つの”ベクトル間の変換表のことを“2階の”テンソルと言います。
※ あと、普通は「表」とは言わず、「行列」と言います。

相対論について、こんな説明を見たことはないでしょうか。
相対性理論では、物理法則が座標変換について不変であることが要請される。
 それゆえ、物理法則はテンソルによる方程式で記述される。」

これを見て、テンソルには何か深淵な宇宙の真理が込められているように錯覚されるかもしれません。
が、この文の意味するところを平たく言えば、
「どんな座標系でも物理法則が成り立つように、変換表を付けておきましょう」
ということなのです。変換表=テンソルです。
本当に深淵なのは「どんな座標系でも物理法則は対等に成り立つ」という単純明快な信念の方であって、
その道具立てであるテンソル自体には大した真理は含まれていません(と、私は思っています)。

ベクトルの定義と同様、テンソルの数学的な定義も
「座標変換に対してカクカクシカジカに変換するモノを共変テンソル(反変テンソル)と言う」
といった具合になっています。


     -- 道具としての相対性理論(一石 賢)[日本実業出版社]より引用.

定義に従って述べるなら、テンソルとは、
「物理的実在、あるいは背景となる座標軸の間にある関係を表す行列」のことです。
物理的実在であることを数学的に言いたいがために、
「座標変換とは反対に成分が動く」と表現しています。
また、背景となる座標軸であることを言いたいがために、
「座標変換と同じ向きに成分が動く」と表現しています。
これがテンソルの定義式の意味であり、この辺の事情は共変・反変ベクトルと同じです。
※ ただの行列とテンソルの違いは、テンソルには実在や座標といった物理的な意味があるということです。
※「意味がある」とは何かと問われれば、「座標変換に対してカクカクシカジカ・・・」ということです。

しかし、この定義式だけからテンソルのイメージをつかみ取るのは、ほぼ不可能です。

テンソルの指し示すものは範囲が広すぎるので、漠然として掴みどころが無いのです。
考えてもみて下さい。
一般相対論で扱う物理的実在は全てベクトルで書かれています。
時空間についての座標軸も全てベクトルです。
それらベクトル同士の関係を示す変換表のことを、テンソルと呼んでいるわけです。
そうなると、一般相対論の中にテンソルで無いものを見つける方が難しい、ってことになるでしょう。
* 参考: かけ算九九のテンソル >> d:id:rikunora:20160123

では、どこから手を付けるかというと、より具体的に、共変テンソルから理解するのが早道です。
ベクトルに共変と反変があるのだから、ベクトルを扱うテンソルにも共変・反変の別があります。

組み合わせとしては、以下の3種類です。
 共変x共変 -> 共変テンソル  -- 座標軸と座標軸の関係を表す。計量テンソル
 共変x反変 -> 混合テンソル  -- 座標軸と物理的実在の変換を受け持つ。
 反変x反変 -> 反変テンソル  -- 実在と実在の関係。後ほどエネルギー・運動量テンソルとして登場する。
                -- さしあたっては、共変テンソル逆行列

■ 計量テンソルは座標の曲がり具合を表す
相対論に登場するテンソルのトップバッターは「計量テンソル」です。
計量テンソルとは、共変テンソルの1つで、座標軸と座標軸の関係を表にまとめたものです。
  計量テンソル gij ≡ ei・ej

計量テンソルの作り方:
  全ての基底ベクトル同士の組み合わせについて、内積をとって行列に並べる。

なぜ、内積なのか。
ニュートン力学での内積では、背景となる座標軸にさほどスポットが当たっていませんでした。
その場合、実質的には「2本のベクトル同士の掛け算」というイメージで内積が定義されていたのです。

ところが相対論では、ベクトルがどんな座標軸に乗っているかまでを意識します。
そこで扱う対象は、2本のベクトルと、それぞれについて2つの基底、合わせて4つになるのです。
この4つの組み合わせのうち、あらかじめ(基底x基底)の組み合わせを「空間自身の持つ性質」として先に計算しておけば、
内積は(空間自身の持つ性質)x(ベクトルAの成分) x(ベクトルBの成分)として表されることでしょう。
ということで、2つの基底について、成分同士の組み合わせをまとめたものが計量テンソルなのです。

内積の場合、2つの基底は重なっている(2本のベクトルで共通の基底を用いている)ので、
計量テンソルの計算方法は結局のところ
 「全ての基底ベクトル同士の組み合わせについて、内積をとって行列に並べる」
ということになります。

例1.最も単純な2次元ユークリッド座標の計量テンソルは、
 

  X軸の基底ベクトル e1 = (1,0)
  Y軸の基底ベクトル e2 = (0,1)
 

  計量テンソル= e1・e1  e1・e2 = 1 0
          e2・e1  e2・e2   0 1
 

  計量テンソル単位行列となります。
  これは、2次元直交座標が「平坦でまっすぐ」であることを表しています。

例2.3次元ユークリッド座標の計量テンソルは、
    1  0  0
    0  1  0
    0  0  1
  つまり3次の単位行列です。
  これは「平坦でまっすぐ」な3次元空間を意味します。

例3.2次元の斜交座標。X軸とY軸が角度60°の場合、

  X軸の基底ベクトル e1 = ( 1, 0)
  Y軸の基底ベクトル e2 = (1/2, 1)
 

  計量テンソル= e1・e1  e1・e2 =  1   1/2
          e2・e1  e2・e2   1/2   1
 

  一般に、角度θで交わる斜交座標の計量テンソルは、
      1  cosθ
      cosθ  1
  です。(θ=90°のとき、cosθ=0 となっています。)
 

  基底ベクトルが全て直交しているなら、非対角成分(行列の対角線以外のところ)は0となります。
  直交していなければ、それぞれの基底が重なっている分だけ、非対角成分に値が入ります。

例4.2次元極座標

  動径方向の基底ベクトル er = (cosθ, sinθ)
  角度方向の基底ベクトル eθ= (- r sinθ, r cosθ)
 

  計量テンソル = cosθ^2+sinθ^2       - r・sinθcosθ + r・sinθcosθ
          r・sinθcosθ - r・sinθcosθ    r^2 (cosθ^2+sinθ^2)
  

         =  1    0
            0   r^2
 

 平坦でまっすぐなユークリッド座標(例1)との違いは、
 角度方向の成分に r が掛かっているところです。
 これはつまり、極座標の円が大きくなればなるほど、
 角度1°あたりの長さが長くなることを意味します。

例5.3次元極座標

  動径方向の基底ベクトル er = (sinθcosφ, sinθsinφ, cosθ)
  緯度方向の基底ベクトル eθ= (rcosθcosφ, rcosθsinφ, -rsinθ)
  経度方向の基底ベクトル eφ= (-rsinθsinφ, rsinθcosφ, 0)
 

  計量テンソル =  1    0    0
           0    r^2   0
           0    0    (rsinθ)^2
 

 平坦でまっすぐなユークリッド座標(例2)との違いは、次のように読み取れます。
 r が掛かっているので、極座標の球が大きくなればなるほど、角度角度1°あたりの長さが長くなる。
 sinθ が掛かっているので、緯度が赤道に近いほど、角度1°あたりの長さが長くなる。

ここまでの例から分かるように、計量テンソルとは、座標の曲がり具合を表す一覧表(行列)だったのです。
イメージとしては、グラフのメッシュ(単位格子)の形を数字に落とし込んだようなものです。
・例1.2.メッシュの形が正方形、立方体 -> 計量テンソル単位行列
・例3.  メッシュの形が菱形      -> 非対角項に値が入る。
・例4.5.メッシュの形がバームクーヘン、玉ねぎ -> 伸び縮みに応じた値が入る。

■ 計量テンソルは長さから知れる
話をうんと単純化して、1次元空間の計量テンソル、といったものを考えてみます。
一次元なので、計量テンソルは1x1行列、つまり1個の数字になります。
ごく普通のモノサシの場合、計量テンソルは[1]です。
計量テンソル[1]は、どこでも均等、均一、平坦ということです。

次に、自分の近くにあるほど大きく、遠くにあるほど小さく見えるような「自己中心的な」モノサシを考えてみます。
例えば距離が xだけ離れた場所を 1/x に縮める、とするなら、計量テンソルは[(1/x)^2]となるでしょう。
※ なぜ2乗なのかと言えば、自分自身とかけ算するから。
結果は、こんなモノサシとなります。

これがいわゆる対数目盛りです。なぜなら、∫(1/x)dx = ln(x) だから。

逆に、自分の近くは小さく、離れるほど大きく見えるような「ちっぽけな自分」モノサシであれば、
距離が xだけ離れた場所が x倍になるということで、計量テンソルは[(x)^2]となります。

今度は ∫(x)dx = x^2 なので、さしずめ2乗目盛りといったところでしょう。

ここで唐突に積分が出てきましたが、要は細かい目盛りを積み上げていったものが長さになる、ということです。
逆に、長さを微分したものが目盛り〜つまり計量になります。

1次元の計量テンソルとは、要するに「長さの伸び縮み」のことです。
さて、ここまで1次元で見てきたことは、2次元以上にも当てはまります。
N次元計量テンソルは、N次元グラフのメッシュ(単位格子)の形を示していたのですが、
そのメッシュの各辺の長さが、N次元計量テンソルの対角成分に相当します。
ちょうど1次元の計量テンソルをN個並べたイメージです。
残る非対角成分は辺と辺との角度(重なり具合)から定まります。
※ もし辺と辺が直交していれば、非対角成分は0です。

メッシュ(単位格子)の対角線の長さには、計量テンソルの持つ全ての情報が反映されています。
2次元で考えれば、対角線の長さは、縦の辺と、横の辺からピタゴラスの定理
(さらに角度があれば加法定理)によって定まります。
式に表せば、

上の例4.2次元極座標にあてはめれば、

メッシュの形から計量テンソルが分かります。

例5.3次元極座標

こちらも図から計量テンソルが読み取れるでしょう。

■ ミンコフスキー計量はメッシュに描けない
以上が計量テンソルのあらましだったのですが、
そもそもなぜ、計量テンソルなどという小難しいものにこだわるのでしょうか。
それは、一般相対性理論の基本概念が、
「ほんの少しずつ時空のモノサシの異なる空間が、幾重にも折り重なってできている」
ということだからです。
ここで言う「時空のモノサシ」が、計量テンソルだったというわけです。

それでは、私たちが住むこの時空について、何の歪みもない平坦な状況下では、
計量テンソルはどうなっているのでしょうか。
特に何も無ければ単位行列なのか?
それがちょっと違うのです。
特殊相対論は
 「光の速さは、どのように等速運動している人(慣性系)から見ても同じになる」
という光速度不変の原理に基づいていました。
モノサシはあくまでも光の速さなのです。
それって、普通の感覚からすれば特に何も無いどころか、ものすごく変な状況ですよ。
詳しい導出を省略して結果を示せば、私たちの住むこの時空の計量テンソルは、

これは「ミンコフスキー計量」と呼ばれています。
(ただし、光速度 c=1 という単位系を用いています。)
一見シンプルですが、計量の中にマイナスが入っているところが悩みの種です。
この計量の表す4次元のメッシュ(単位格子)が想像できますか?
あえてグラフに描くなら、空間の3次元を実数の軸、時間の1次元を虚数の軸とすれば、
つじつまを合わせることはできます。。。
相対論の難しさの1つは、このミンコフスキー計量なるものが、
想像しがたい本質を有しているところにあるのだと思います。
それでも、その想像しがたい計量が、紛れもなく我々の時空のモノサシなのです。

・・・今回はここまでで力尽きた。やはり相対性理論は一筋縄では行かない。
それでも、ここまでがしっかりイメージできれば、
共変+反変+計量テンソルの3連コンボに耐えられるのではなかろうか。
いずれ気が向いたら (2)に続く予定。

今後10〜20年の間に最も必要とされる仕事

ずばり「教師」である。
機械学習関連書籍を見れば、そこに「教師あり学習教師なし学習」という言葉を見ることだろう。
答は当然のように書かれていたのだ。灯台下暗しである。
学習には 〜 少なくとも機械学習の半分には、教師が必要なのである。

人工知能が話題に上がると共に、「人間の仕事が人工知能に奪われるのではないか」
といった懸念もまた話題に上がることが多くなった。

  * オックスフォード大学が認定 あと10年で「消える職業」「なくなる仕事」
  >> http://gendai.ismedia.jp/articles/-/40925

  * 日本の労働人口の49%、人工知能・ロボットで代替可能に 10〜20年後 NRI試算
  >> http://www.itmedia.co.jp/news/articles/1512/02/news111.html

まっさきに「なくなる仕事」の方を気にするのが人の心理だが、
前向きに将来を見据えるなら、むしろ「生じる仕事」の方を気にすべきだろう。
「生じる仕事」の筆頭は何かと想像すると、最も有力な候補は「教師」であることに思い至る。
ここで一言「教師」と言ったが、将来「教師」は以下3つのタイプに分化するものと考えられる。

・Type A: いわゆる従来型の、教室で人間を相手に教える教師。
・Type B: 今日のSE,プログラマーに取って代わる、機械を相手に教える教師。
・Type C: 機械が行った判断・仕事を、人間相手に解釈・説明する教師。

以下、B -> C -> A の順に見てゆこう。


■ Type B: 今日のSE,プログラマーに取って代わる、機械を相手に教える教師

今後10〜20年を視野に入れるなら、現状のようにエディタ(あるいは統合環境)で
プログラムを制作するスタイルは、いわゆる“主流”から外れる。
もちろん、そうした仕事が全く無くなる訳ではないのだが、今日ほどの地位は保てなくなる。
例えば今日でもアセンブラ機械語)を扱う仕事はあるし、将来もアセンブラは無くならないが、
それでもアセンブラが“今日の主流”でないことは認めてもらえるだろう。

では将来の主流は何なのかと言えば、「モデルの構築」であろう。
モデルとは、「機械学習の結果できあがった判別ルールの塊」のことである。
あるいは「学習済みの、判断そのものを司るコア」と言ってもよい。
今日のSE,プログラマーは、「目的の動作を行うプログラム」が中心的な成果物である。
それに対して近未来では、「目的に適った良いモデル」が中心的な成果物となる。

モデルはどうやって作るのか。
それは、機械に適切なデータを与えて、学習させて、育てることで作る。
機械とは、例えばニューラルネットワークや決定木といった「学習するプログラム」のことを指す。
そうした学習するプログラムに対し、
 ・カリキュラムを作成し、
 ・正しい順序で質の良い教材(データ)を与え、
 ・結果を評価し、
 ・必要があれば方針を正す。
これが「機械を相手とする教師」の仕事である。
なるほど人間相手の教師とそっくりではないか。
なので、あえて「教師」と言ってみたのである。

※ 「機械を相手とする教師」と、「教師あり学習教師なし学習」は、実のところ意味合いがずれている。
※ 前者は「機械学習の総合プロデューサー」を指し、後者は「アルゴリズム上の規範の有無」を指している。
※ それでも両者をいっしょくたにまとめて「教師」と呼ぶことで、見えてくるものがあると思う。

機械の教師は、従来型のSE,プログラマーとは、かなり趣を異にしている。
では、そうした機械を教える仕事は、将来何と呼ばれるだろうか。
勝手な造語をひねり出せば「ナリッジモデラー」とか「インテリジェンスモデルビルダー」などといった、
かっこいい(けれどちょっと気恥ずかしい)カタカナ名が浮かび上がる。
(こういった流行を煽るバズワードは、IT営業周辺からいくらでも湧いて出てくるのだ。)
ただ、呼び名はどうあれ、その本質は教師である。

近い将来、こうした「機械の教師」はIT産業の花形になってゆくものと思われる。
ならば、機械の教師の将来は、文句なしにバラ色に輝いているのだろうか。
ここで思い起こされるのは、かつて「ソフトウェアクライシス」という言葉があって、
ソフトウェア技術者不足、SEの未来はバラ色、と言われた時代があったということだ。
時代が下って、いざフタを開けてみると、そこには「IT土方」「デスマーチ」という現実が待っていた・・・
そこまで悲観する必要も無いとは思うが、何の見通しもなくただ「機械学習が流行ってるから」という
理由だけで突き進むなら、そこには「データ土方」の未来が待ち受けていることは想像に難くない。
「データ土方」にならないための心構えは幾つもあるが、ここでは1点だけ、
将来(現在進行形で)行われるであろう企業の「モデル売り戦略」について言及しておこうと思う。

「モデル売り戦略」とは、完成したモデルのみを売り、モデルの作り方自体は非公開とする商売の仕方のことである。
モデルの作り方が公開されなければ、モデルの利用者は作った企業に依存せざるを得ない。
実はこの「モデル売り戦略」には類似の先例がある。
それは、かつて農業で行われた「緑の革命と種子支配」である。
少々長いが、以下に引用しよう。

* wikipedia:緑の革命

 -- 緑の革命の功罪、批判と反論
 ・新品種作物の種子代金と種子会社へのライセンス料金代金による経済的圧迫が、農家を脅かしているという批判。
新品種がトウモロコシのようにF1品種であった場合には、新品種作物が多収量を確保できるのは通常一世代限りであり、
採れた種子を翌年の栽培に用いても期待通りの収量をえることができないため、毎年新たに種子を購入する必要がある。

* 農業協同組合新聞 -- 強まる多国籍企業の種子支配
>> http://www.jacom.or.jp/archive03/series/cat167/2012/cat167120806-17571.html

多国籍企業による種子支配は、第二次世界大戦時に始まった「緑の革命」を起点にしている。
・・・種子企業は優れた品種をもたらす両親をずっと継代培養しつづけ、
毎年その親同士を掛け合わせることで、その優れた品種をもたらす種子を販売し続けることができる。
その種子から作られる子同士を掛け合わせて作る孫の代になると、
今度は「メンデルの分離の法則」が働き、形質がバラバラになって、優れた品種を作ることができない。
そのため農家は、毎年、種子企業から種子を買うようになった。

おそらく「緑の革命」の知識版が、いわば「知識の革命」として進行するだろう。
緑の革命の場合、農家は直接作物を作るのだが、その元になる種子は企業から買う。
その種子とは大企業の実験室で、大がかりな遺伝子バンクをベースに作り出されたものである。
これと同じように、出来合いのモデルを現場にあてはめるのはSE,プログラマーの仕事だが、
肝心の「モデル作り」は大企業の開発室で、ビッグデータベースを背景に為されることになる。
もし私が企業家であれば、そうする。
そして現場での要求が生じる度に、ワンオフの完成モデル 〜 いわば「種子」を、
下請けの「パートナー、協力会社」に売りつける。
肝心の「モデルの作り方、育て方」は門外不出とするか、権利として保護する。

何が言いたいか、お分かりだろうか。
要は、
 「自力でモデルを育てる力が無ければ、企業に良いように使われるだけのデータ土方になる」
と言いたい。
データ土方は「教師」ではない。
教え、育てる力が問われるのである。
巨大でパワーある組織が、規模に見合うだけのデータベース基盤を持つ。
そのこと自体について抗うことはできない。
巨大組織に従うのか、はたまたオープン化を呼びかけるのか、
それでも独立を保てるだけの特色が持てるのか、そこが問われる。
問われるものは、たとえステージが変わっても、今日のSEとさして変わらない。
繰り返す。
機械相手の教師には、教え、育てる力が問われる。


■ Type C: 機械が行った判断・仕事を、人間相手に解釈・説明する教師

先日、アルファ碁についての解説を聞きに行く機会があって、1つ興味深い話を聞いた。

やがて機械の放つ1手の意図が、人間に解釈できなくなる時が来る。
直近の1手の意図が、50手先、100手先になって初めて生きてくるのだが、
もはや人間にはその関連性を追うことができない。
そうなったとき、プロ棋士に与えられる新たな役割とは、
後付けでも良いから、機械が打った手の意味を人間が分かるように解釈することなのではないか。

例えば、自動運転の車が突然ハンドルを切って、目前を歩いていた1人をひき殺したとする。
多くの人間は、機械が壊れて暴走したと思うかもしれない。
しかし、実はそうではなかった。
自動運転機械は、目前の1人を犠牲にすることによって、その直後に高い確率で発生するはずだった
10人を巻き込む大事故を未然に防いでいたのだった・・・

人間には読み取れない、あるいは原理的に読み取ることができたとしても、
解釈することが極めて困難な判断について、果たして機械を全面的に信頼できるのか。
これは囲碁や自動運転だけでなく、重要な判断を機械任せにしたとき、必ずや問いかけられる問題である。
そうなったとき、機械の下した判断を、とにかく人間に理解できるように解釈する必要が生じる。

一例として「因子分析」を取り上げよう。
今日のコンピュータ環境であれば、R言語なり、適切な分析ソフトウェアなりを用いれば、
とりあえず因子分析を実行すること自体は簡単にできる。ほぼ電卓感覚と言ってよい。

 ※ とりあえずやってみたい(けどR言語はめんどくさい)という人には以下がおすすめ。
 ※ * College Analysis >> http://www.heisei-u.ac.jp/ba/fukui/analysis.html
 ※ * 統計分析ソフト HAD >> http://norimune.net/had

その結果、こんなグラフが得られたとする。

しかし、このグラフは一体何を表しているのか?
Factor1、Factor2 とは何か?
この結果は正しいのか、正しくないのか、どの程度信頼して良いのか?
結局、何をどう判断すれば良いのか?
例えて言うならこのグラフは、レントゲン写真か心電図のようなものである。
医者が見ないと何も分からない。
そこで待ってましたとばかり、線形代数やら固有値固有ベクトルやらを持ち出すと、大半は渋い顔をする。
そして口先では「いやぁ・・・勉強不足なもので」などと謙遜しつつ、内心では数学への憎悪をつのらせるのだ。

分かりやすく伝えることは、難しい。
ともするとプレゼンスキルやトークの上手さが取り沙汰される風潮があるのだが、
事の本質は、そういった小手先の技術ではない。
人間から遠く離れた概念を、人間に近づけるように再構成することが、本質的に難しいのである。
それは、線形代数やら固有値固有ベクトルやらを自分自身で理解するのとは、また別種の難しさである。
To know is one thing, to teach quite another.
従来、know 〜 知ることの難しさはよく認識されてきたが、
teach 〜 それを教えることについては、どちらかといえば知ることのおまけといった、
付随的な位置付けにあったのではないか。
例えば最前線の研究開発と、その成果を現場に伝える仕事とでは、どちらが華々しいだろうか。
機械学習は、この主従関係をひっくり返す。
もし最前線が機械に置き換わるとしたら、そして、最前線がますます人間にとって遠いものになるとしたら、
いずれ know と teach の優先順位がひっくり返る時が来る。

そう考えたとき、「プロは兵站を語り、素人は戦略を語る」という言葉が目に付いた。
 ※ この言葉は「補給戦―何が勝敗を決定するのか(中央公論新社)」という本の解説にあり、
 ※ オリジナルは石津氏(防衛研究所)によるものです。

戦争の世界においても、前線では無人戦闘機が戦う時代が来つつある。
前線が機械に置き換わったとき、勝敗を決するのは兵站である。
(置き換わらなかったとしても、勝敗を決するのは兵站だったのである。)
知識の世界においても、いずれ戦争の世界と似たような事態が進行するだろう。
 「前線は機械に任せ、人間はもっぱらロジスティクスにあたる」
そんな構造に移行するだろう。


■ Type A: いわゆる従来型の、教室で人間を相手に教える教師

人工知能の影響は、人間相手の狭い意味での教師にも及ぶ。
今後どのような人材を育てるべきかを考えたとき、
いずれ機械に取って代わられるような人材ではなく、機械に代替が効かない人材、
あるいは機械と共存できる人材を育てるべきだからである。
つまり「教師は教師を」育てるべきなのである。

ついでに言わせてもらえば、今さら「数学は何の役に立つの?」などと寝言を言っているようでは、
(もしあなたが「教師」を目指すなら)はっきりいって論外である。
機械が人間を追い越す段なって、ようやくディープラーニング
微分と線形の集大成であったことに気付いても遅いのだ。

いわゆる学校教師については、少子化で“狭き門”となっているのが実情だ。
それでも学校教師は人気のある職業で、
「将来なりたい職業」でググった上位3サイトの結果は次の通りだった。

1.13才のハローワーク -- 人気職業ランキング
>> http://www.13hw.com/jobapps/ranking.html
  ・18位 小学校教師
  ・68位 中学校・高校教師
  ・77位 中学校教師

2.@DIME 「若者の将来なりたい職業TOP10」 の仕事に就く大人たちの仕事満足度
>> http://dime.jp/genre/244975/
  男性2位 教師/トレーナー
  女性2位 教師/トレーナー
  高校生1位 教師/トレーナー
  大学生2位 教師/トレーナー

3.2015年度 日本FP協会「将来なりたい職業」ランキング
>> https://www.jafp.or.jp/personal_finance/yume/syokugyo/
  女子児童4位 教師

調査に応えた若者たちが「教師」にどのようなイメージを抱いているかは分からないが、
こと「学校」にこだわらなければ、教師に必要とされる資質は実社会において切に求められている。
プロジェクトの成否を分けるのは、「知識のロジスティクス」である。
 「会議で言ったはずだろ、ボケェ!」
 「仕様書に書いて無いだろうが、ゴルァ!!」
という怒号飛び交うプロジェクトは、例外なく失敗する。
優秀な人材は「知識のロジスティクス」に投じるべきなのである。
前途有望な若者がそこを目指してくれるなら、日本の未来は明るい。


■ まとめ

将来を見据えたキャリアパスを考えるなら、何らかの形で「教師」という選択を無視することはできない。
 ・TypeA: 人間を相手に教えるのか。
 ・TypeB: 機械を相手に教えるのか。
 ・TypeC: 機械と人間の間をつなげるのか。
各Typeの人数比はおそらく、TypeC > B > A の順になるものと予想される。
この3タイプのうち、自分はどのタイプを目指すのか、
あるいは「教師」とは全く無縁の道を進むのか、よくよく考えた方が良い。