クレタ人の踵

AIならびにRobotに関する雑記。 世迷言など。

クレタ人の踵aibo Owner's WEBRINGに参加してます。
【ID:120 所有者:FebruaryMarch
[ 二つ前へもどる | 前へもどる | 次へ | 次の次へ ]
[ 前の5サイトを表示 | 次の5サイトを表示 | ランダムで移動 | リストを表示 ]

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BBP Blue Brain Project

BBP Blue Brain Project
シミュレーションでGO!


リンク
BBP Blue Brain Project

 この話題を取り上げるかどうか、実はしばらく悩んだ。
 「脳」、「シミュレーション」、「IBM」と三拍子揃ってしまっているので、いかにもである。おまけにFMは、コンピュータは人間のように考えられるか?[1]なんてのを6月5日にあげている。BBPのプレス発表が6月6日であるので、そのまま突っ込んだら、非常に誤解されやすい状況だった。
 もともとヤクザなブログなので誤解されたってそれまで、と言えばそれまでなのだが、BBPの趣旨から言って不要な誤解電波を飛ばすのはどうかと、FMなりに配慮したわけである。
 簡単に言うと、BBPはAIとあまり関係はない。

BBPはAIとあまり関係がない

It is not our goal to build an intelligent neural network.

 BBPのホームページのQ&Aの中にはっきりと書かれている。世界最速のスーパーコンピュータで脳をシミュレートするのだが、あくまで脳の仕組みを解明するためであって、知的なニューラルネットの構築が目標ではない、ということである。これは、人間の脳と同等のレスポンスをするのかという問いに対する答えとして出てくる文なので、この点から見ても、BBPが比較的まっとうな取り組みであることが見て取れる。
 これだけ、はっきり書いてあるのだから、BBPがAIとほとんど関係ないのは明らかである。
 関係ないのだが、「脳」だし「シミュレート」で「世界最速コンピュータ」なのだから、FM的には興味津々なわけである。で、まぁ、ここで取り上げたということは、このブログの性格からいって、あまり褒めないということでもある。正直、そんなに役にたたないと思う。
 コンピュータシミュレーションは、よくわかっていることに対してはそれなりに有用な情報をもたらすが、あまりよくわかっていないことには、なんだかよくわからない結果を返す。コンピュータを使っている以上、ある意味やむをえないことなので、これはコンピュータのせいではない。
 したがって、「人間の脳」などという、本当にわからないものを真面目にシミュレートした場合には、まったくわけのわからない結果しかでない(と思う)。
 役に立ちそうもないものに、そんな大金つぎ込むなんてありえんわボケ、というお叱りはごもっともだが、それに対してもいちおう反論らしきものはある。
他に良い方法がない

人体実験するわけにもいかないのでシミュレートする

 このプロジェクトには、脳の仕組みを知るという純粋に知的な要求に対して答える、という側面以外にも、心の病をなんとかしたいという、至って現実的な問題に回答をもたらしたいという要求がある。で、まあ、倫理的な問題を抜きにすると、後者の解決には、誰かの頭に電極でも突っ込んで薬漬けにしたほうが、話としては早いわけである。
 もちろん、そんなことはできない。二酸化炭素濃度が増加したときに地球環境がどう変化するか確かめるには、実際に二酸化炭素を増やしてみるのが、「科学的には」正当だが、そんなことするわけにもいかないので、地球シミュレーターを使うのと同じことである。
 方法論としてはまっとうだと、FMもすでに趣旨には賛同済みだ。賛同はするけれども、だからといって、方法が有効かどうかは話が別だ。ただ、限りなくダメっぽそうだが、絶対ダメというわけでもないし、うまくいったら効果は絶大、失敗しても金がなくなるだけなら、まあ、いいか。
 そんなわけでBBPはAIとほとんど関係がない。勧進元のEPFLもそう言っているし、納入するIBMもそう言っている。FMだってそう言っている。だから、断じて関係はないのである。

まとめ
 このブログはデフォルトで他人の仕事の揚げ足をとる嫌なブログである。
 やっきになって否定するところを見ると裏がありそうだ、とか考えるのを下衆の勘繰りと言う。
 っていうか10000個のニューロンを10の八乗のシナプスで繋ぐって「まんま」じゃん(笑)。
 常に逃げ道を確保せよ。

コンピュータは人間のように考えられるか?[3]

コンピュータは人間のように考えられるか?[3]
エレガントな回答を求めて


関連
ロボットは心を持つか?
コンピュータは人間のように考えられるか?[1]
コンピュータは人間のように考えられるか?[2]

 数学の問題を解くのに、端から並べて全部解く、などというのは、いかにもブルートフォースなわけで、あまり評判は芳しくない。四色問題の証明に対して、いまだにしっくりこない一部の人々がいるというのも、心情としては理解できる。エレガントな回答を求める、というのは「数学セミナー」の読者にかぎらず、数学好きな人の一般的な傾向と言ってもいいだろう。
 ところが、この問題、心情としては理解できるが、数学的に扱うと、はなはだ痛し痒しだ。
 前回、取り上げたプログラムもどきは、ブルートフォースの典型で、これ以上はないというほど(いろんな意味)痛烈なものである。もっとエレガントな解が欲しいというのは言わば人情であって、チャーチ提唱の信望者であるFMにしたって、正直、多少の手間ですむのなら、もう少しマシなものを例に出したかったくらいである。
 しかし、これは、それほど単純な話ではない。「エレガントな回答」のようなメンタリティが持ち込めるほど、実は、数学という学問は人に優しいものではなかったのである。

玉石混合は「玉」も含む

 ほぼ無限大のメモリやほぼ無限大の処理能力とかいうトンデモ設定にはこのさい目をつむるとして、件のプログラムの出力結果を眺めてみることにしよう。答えの出ない命題はいくつかあるにしても、いくつかの興味深い定理は証明されているだろう。
 いや、この言い回しはあまりに不正確である。実際には、興味深い定理も、無視してしまいたくなるようなことがらも、否定的か、肯定的か、はたまた、それ以外の形で、すべて証明されているのである。
 具体的にどういうことかと言えば、我々の熱望している「エレガントな回答」すらその中にふくまれているということである。我々の欲しいものはすべてその中にあるのだが、欲しいものだけで構成されているのではない。一滴の甘露を濁った沼の中に落としたようなむなしさが、そこにはある。

良いとこ取りのプログラムは存在するか?

 これらすべてを踏まえたうえで、チャーチはこのプログラムが人間の(というか、少なくとも数学者の)思考パターンに酷似している、と、のたまったわけだ。
 数学の定理の証明や、新しい概念の導出というのは、試行錯誤の連続であって、そういった意味では、「端からすべて試してみる」というのは、きわめてまっとうな思考法と言える。ラマヌジャンの天賦の才もこの枠組みから逸脱するものではなかった、と彼の最上の理解者であるハーディも言っている。
 無駄なことはしたくない、誰だってそう思うのだが、無駄なものと無駄でないものをわけるアルゴリズムが存在しないことは、いまいましいことに既に証明ずみである。プログラムが停止するかどうか事前に知る方法はないのであって、答えが出る問題だけを重点的に解くことはできない。そして答えの出ない問題にぶちあたっているのか、解くのが非常に難しいだけで本当は解ける問題なのかは、問題を解いている間は知ることができない。
 人間であれコンピュータであれ、数学をする以上、効率的に解を求めることはできない。「数学に王道なし」というのは教訓でもなんでもなくて、単なる冷徹な事実なのである。

悠久の彼方からの帰還

 ほぼ無限大のメモリとほぼ無限大の計算能力、というのは言い方をかえれば、「無限に近い時間が経過した後で」という考え方とおなじである。
 無限に近い時間経過の後では、宇宙が寿命を終えていたり、エントロピーが極大値に達していたり、すべての素粒子が崩壊して光の海になっていたり、弥勒菩薩が降ってきたりと、とにかくいろんなことが起こる(らしい)。
 そんな大変な状況の中では、人間とコンピュータがごちゃまぜに扱われようがたいした問題ではないような気もする。我々の興味の対象は、ここ何十年かのうちにロボットが知的な会話をそつなくこなしたり、ワールドカップでロボットチームが優勝できるかどうか、などという、極めてせせこましい事象についてである。
 数学の問題は数学で解くべきであり、カエサルのものはカエサルに返すべきだ。当然、せせこましいことは、せせこましく解決しなければならない。
 理想ばかり唱えていても仕方がない、「あるもの」でなんとかすべきなのは判っている。そして、「あるもの」でなんとかする場合、「あるもの」の能力をフルに利用すべきであって、いらぬ制限は付け加えるべきではない。
 「あるもの」とはノイマン型コンピュータのことである。そして我々はノイマン型コンピュータに手枷足枷をはめたまでで使っている。その枷を取り払うことから始めねばならないだろう。
(つづくのだ)

まとめ
 世の中にうまい話というのはない。
 王道がないのは数学に限ったことではない。
 FMは小学生のころ、弥勒菩薩に似ていると言われたことがある。
 恐竜博2005に行ってきたので疲れた。もう寝る。
 

コンピュータは人間のように考えられるか?[2]

コンピュータは人間のように考えられるか?[2]
数学をする万能チューリングマシン


関連
ロボットは心を持つか?
コンピュータは人間のように考えられるか?[1]

 チャーチのテーゼでコンピュータは考える、と言ってみたところで、このままでは単なるおまじないである。鰯の頭も信心だが、信心するにしてももう少し裏づけは欲しい。
 そんなわけで、とりあえず、数学をするアルゴリズムの具体例をひとつ取り上げてみたい。ところで、これを読んでいる方にお願いがある。今回は他の回に比べても格段に手抜きをするつもりなので、申し訳ないが「ゲーデル数」について自分で調べて欲しいのだ。これを説明するのはけっこう骨が折れるので、普通は本を一冊書くことになっている。とてもじゃないが、FMは、そんなめんどくさいことをやる気はない。今回必要なのはゲーデル数が数学のすべての命題と一対一対応で相互に変換可能であることだけである。興味のある人は不完全性定理とかゲーデルの他の業績について勉強してもらってもかまわないが、そこいらへんは個人の好みでどうぞ、といった感じだ。

構文だけC風に書いてみる


#define WORKSIZE VERY_LARGE_ MEMORY_SIZE

mathmatical_turing_machine()
{
unlimited long g;
/* 無限多倍長整数 g を定義 */
propositional function* one_turing_machine;
/* デコードした命題を格納する変数(ポインタ) */

g = 0; /* 0から始める */

while( 0 == 0 ) /* 常に真、ようするに無限ループ */
{

if( is_gödel_number( g ) )
/* gがゲーデル数かどうかの判定、ゲーデル数ならデコードして解く */
{
one_turing_machine = decode_gödel_number( g );
/* ゲーデル数のデコード */
concurrent_solve( g , one_turing_machine, WORKSIZE );
/* 各命題を並列に解く */
}
else
{
/* ゲーデル数でなければ、なにもしない */
}

g++; /* gに1を加えて繰り返し */

}
}

 

 いきなり無限多倍長整数とか出てくるのでCでも何でもないのだが、雰囲気だけ感じてもらえれば良い。ゲーデル数の判定はデコードと一緒にしたほうが効率は良いが、あまり本質的な問題ではないので見易さを優先している。is_gödel_numberとかdecode_gödel_numberとかいった関数が実際に書けるのはゲーデルが説明してくれているので、そちらを参照して欲しい(公式さぼりモード)。
 若干、問題があるのはconcurent_solve関数だ。チューリングマシンなどの仮想コンピュータであればこういう関数は作って良いことになっている。というか、作れないと計算可能性問題にたいして何かしら意味のある発言を行うことができない。
 ざっくばらんに言うとこの関数、与えられた命題を実行するプロセスを発行したらすぐに帰ってくるOSのexec処理みたいなものなのだが、現実のコンピュータとは以下の2点で異なっている。
  1. ほぼ無限大のメモリをプロセスに割り当てられる
  2. 実行したプロセスが無限ループに入っても気にしない
 無限ループに入っても気にしないでいられるのは、実質的に1のおかげなので、ほぼ無限のメモリを使えるのが、この関数の仮想的な所以である。
 なんでこんなものが必要なのかというと、数学の問題の中には、答えがないものが含まれているからだ。答えが出たところで個々のプロセスは停止するが、「答えのない」プログラムは停止せずに動き続ける。これはバグではない。バグではないが無限に動き続ける(つまり帰ってこない)。
こういったゾンビっぽいプロセスをほぼ無限に容認し続ける必要があるので、このプログラムを動かすコンピュータは、ほぼ無限のメモリを有すると同時に、ほぼ無限大の処理能力を要求されることになる。
 さて、注意書きはこの程度にして、このプログラムの意味を考えてみよう。ほぼ無限大のメモリと無限大の処理能力を持つコンピュータでこのプログラムを動かすとどんなことになるのか?
 答えのある命題とその答えがすべて出力されます
 ようするに数学はこれで全部、ということになる。
 数学の問題を端から順序良く並べて「全部解く」だけのプログラムである。

数学者が失業しない理由

 チャーチのテーゼをもとにした場合、この「ほぼ無限大の処理能力とほぼ無限大のメモリ」を持つコンピュータが必要となるため、実際問題として、こんなものが「考えている」とか言われてもなかなかピンとこない。ただ、これを数学用語でいうと「有限の処理時間と有限のメモリ」となる。
 なんだ、ぜんぜん反対じゃないか、と思われるかもしれない。しかし、数学では「無限」と「ほぼ無限」とはまったく別物である。いくら大きな数であっても「本当の無限」でない以上は有限であるというのが数学の立場である。
 ただ、この主義をどこまでも貫くのは現実のコンピュータではかなり辛い。そこで計算可能性だけではなくて、P≠NP問題のような「実質的な」計算可能性も研究しようということで計算機科学という分野が生まれたわけである。
 ロボットの場合はもっとシビアで、実時間応答性という問題も考慮に入れなければならない。数学という天上の世界では「ほぼ無限大の処理能力とほぼ無限大のメモリを持つコンピュータ」というトンデモ概念を持ち出して人間と同等に考えられるモデルが提案されたわけだが、実時間応答性まで含めた思考モデルはいまだ提案できていないのが現状である。
 もうおわかりかと思うが、本シリーズだけテーマが「コンピュータ~」になっているのはFMの気まぐれではない。「ロボット~」だと実時間応答性の問題が出てくるので、明快に「YES」などと答えられないのだ。この点だけとってもFMは姑息であることがよくわかると思う。ついでに言えば「(仮想)コンピュータ~」なのであって、意図的に省略しているのだから、姑息というより卑怯である。
(つづくよ~)

まとめ
 ほぼ無限の数学者がいれば、数学の問題はほとんど解ける。
 ほぼ無限のラーメン職人がいれば、究極のラーメンができるかもしれない。
 誰が食べるかはまた別問題。
 FMは姑息で卑怯。

コンピュータは人間のように考えられるか?[1]

コンピュータは人間のように考えられるか?[1]
コンピュータは数学の問題が解ける


関連
ロボットは心を持つか?

 ロボットの心については、ちょいと、お茶を濁した感がある。人間、得手不得手はあるものだ。まあ、このあたりは我慢してもらうよりない。
 今度は「コンピュータは考えるか?」である。次々と似通ったどうでもいいような話題ばかり出してくるものだと、読むほうはウンザリだろうが、書くほうは趣味でやっているわけだから、そんなことはおかまいなしだ。
 で、コンピュータは考えるかどうかなのだが、これについて、FMの立場というのは、はっきりしている。答えはYESだ。コンピュータは考えることができる。なんとなれば、FMはチャーチのテーゼの熱烈な信望者だからである。

チャーチのテーゼとは何か?

 信望者だ、なんてことを言うと、まるで宗教みたいだと思われるかもしれないが、はっきり言ってその通りである。数学だの科学だのいうものは、ある一線を超えると(あるいは超えなくても)ほとんど宗教みたいなものである。入れ込みようによって、解釈もだいぶ違ってくる。FMは、どちらかと言えば、チャーチテーゼに関しては過激派なので、結論もそれなりにビビッドなものになるというだけだ。
 そもそも、チャーチのテーゼ自体はさほど大変なものではない。このテーゼがなされた背景としては、万能チューリングマシン一般再帰関数ならびにLambda-Calculusのクラスが同一であることが証明されたことにある(証明は同時ではなくて別々だが)。これらは別々に定義されたものだが、計算可能性を論じる場合にはどれも重要な役割を担っており、実は、それらが同一のものであった、というのは非常に面白い話なのだ。
 それで気を良くした(かどうかは知らないが)チャーチが以下の提案をした。

数学の取り扱う問題は、すべて一般再帰関数で記述できる


一般再帰関数は万能チューリングマシンと同等、万能チューリングマシンは言わずと知れたコンピュータの数学モデルである。したがって、チャーチのテーゼを言い換えると以下のようになる。

コンピュータは数学ができる


 あたりまえじゃん、と思われたかも知れない。コンピュータは計算する機械である。数学など出来て当たり前だ、というのが一般の感覚だろう。しかし、数学者にとって計算と数学というのはまったく違う。これをごっちゃにすることは、数学者にとって、ピッチングマシンは最高の野球選手だ、と言うに等しい。
 数学者が「コンピュータは数学ができる」と言った場合には、コンピュータは数学者と同等であると言っているのと同じことである。数学者というのは数学以外には他に取り得がない人間なのだから、(数学者にとっては)チャーチのテーゼは「コンピュータは考える」というのと全く同等である。

そうは言っても若干の問題はある

 FMは数学者ではない。数学ができるできないという問題以前に、数学以外にいくつか取り得があるからだ。しかしチャーチのテーゼを狂信的に信望する以上、以下の結論に到達せざるをえないのである。

数学者はコンピュータで代用可能である


 さあ、あと一息だ。数学者だって人間の一種なのだから、あとはジワジワ枠を広げていけばよい。理論物理学者なんてのが次のターゲットには良さそうだ。計算化学や分子生物学者もいけるかもしれない。そうやって、なしくずしにいけば、フライト・アテンダントがリストに上るのも時間の問題だろう。
 ただ、この論証には若干のキズはある。「数学者なんか人間じゃない」と言われてしまうと、反論がなかなか難しいのである。前述のとおりFMは数学者ではないので、数学者が人間かどうか、なんてのは所詮他人事である。数学者の友人もいない。この件に関しては有力な反証の持ち合わせがないのだ。

 そんなわけで、コンピュータが考えられるのは、ほぼ確実なのだが、話はそれほど簡単ではない。
 理論上は一般再帰関数のクラスの記述能力をもつハズのコンピュータなのだが、現実には原始再帰関数クラスの記述性しか許されていないのである。
 窓口規制みたいなものと思ってもらえれば良い。
 プログラム生産性という呪縛がプログラマーの上に重くのしかかっているのだ。
(つづく)

まとめ
 コンピュータは数学の問題を解くことができる。
 数学ができるかどうかなんて人間の本質には関係ない、とかいうやつに限って、数学どころか全く取り得がなかったりする。
 星飛雄馬は失踪中、ピッチングマシンしか友達がいなかったらしい。
 土日更新ぐらいが限界らしい。

学習でロボットは賢くなるのか?[3]

学習でロボットは賢くなるのか?[3]
我らに本末を転倒するプログラムを!


関連
学習でロボットは賢くなるのか?[1]
学習でロボットは賢くなるのか?[2]


 このシリーズの本来の目的はロボットが学習で賢くなるかどうかを考察することにあった。一回、二回と続けて三回まできたが、この問いに対して、ほとんど否定的な事例を列挙してきたにもかかわらず、最終的な回答は保留にしてきた。

 理由がある。

 FMは、ロボットに学習して賢くなって欲しいと、心底、思っているからだ。

内部モデルを拡大できるアルゴリズムを学習と呼ぶべきだった

 今回のシリーズではカギカッコつきの「学習」が何度か登場した。この「学習」はForce learn algorithmで置換可能なように配慮してある。教師信号とのからみで微妙なところがあるが、意図は汲み取ってほしい。
 歴史的な事情があって、現状ではAIで言うところの学習は「学習」になってしまっている。そして「学習」では与えられた問題に答えることは可能でも、自分で問題を見つけることができない。
 「学習」によって、秀才と凡才は造ることができるが、天才と馬鹿は造れない。
 実に困ったことであるが、やはり先人の偉業に逆らうのは、AI研究の分野でも並大抵のことではないのだ。

知識の獲得をめざして

 昔、ファービーというおもちゃがあった。ギズモを怖くしたような風貌でモノマネをする。
 内部的にはICレコーダー+人工無能みたいなものなのだが、面白いのはこのファービー、学習して人まねをするというふれこみだったのである。
 実は人工無能タイプのソフトウェアというのは内部に「学習」機能を持っているのだが、不思議なことにAI的な「学習」部分を学習と呼ぶことは少ない。学習型人工無能は、語彙データベースの拡張を学習と呼んでいるのである。そして拡張された語彙データベースの中から特定の文節を選択する段階でAI的な「学習」を行って、会話をスマートに見せかける。
 これは、どちらかと言えば、一般的な意味での学習に近い。原始的ではあるのだが外部情報をもとに、内部モデル=知識を拡張しているのである。
 だからと言って、ファービーを含む人工無能が非常に高度なことをやっている、というわけではない。人工無能は話し言葉や書き言葉のシミュレーションなのだが、「言語」というシステム自体が抽象度が高いため、コンピュータで扱いやすく、なおかつ、見た目が知的に感じられるというだけのことだ。
 センサーの直接情報から、内部モデルを紡ぎだすのが、インテリジェンス・ダイナミクスの醍醐味とすれば、その一番肝心の部分を人工無能は「はしょって」いる。
 それでも、知識の拡充に学習という概念をあてているのは、FMにとってうれしい。これを目標にしろとは、さすがに言わないが、まだ、こちらのほうが自然である。

知識の獲得を行わない理由

 本来、知識拡張を学習と呼ぶべきだったのに、なぜかAIではこれを学習と呼ばない。その代わり、ある種の近似法のことを「学習」などと呼んでいる。「何故?」と聞かれて、この問いに答えるのは、実はさほど難しくはない(若干の恥ずかしさはあるにせよ)。みもふたもない言い方で申し訳ないが、一般的な知識拡張ができるプログラムなど現段階で存在しないからである。今だ無いものに名前をつけるわけにはいかない。
 この手のプログラムが存在しない理由としては、実装できるハードウェアが(いろんな意味で)存在しなかったということもある。この点についてだけは、最近、若干改善されつつある。
 言うまでもないが、QRIOを含む自律型ロボットのハコモノのことである。
 実はもうひとつ、プログラミング技法の点で問題がある。この種の自己拡張型のプログラムが本質的にもつべき特徴が、現在主流の大規模開発型のプログラミング技法にまったく適合しないのである。
 簡単に言えば、構造化プログラミングの否定、例外トラップの排除、無限ループと循環参照の埋め込み、極めつけは、自己改変による大域脱出などで、どれをとっても普通のプログラマーなら気が狂いそうなシロモノである。これらが何故、普段は封印されているのか、どうして、知識獲得型AIでこれらが必要なのかは、これから、おいおい語ってみたいと思っている。
 おおざっぱな話をすると、「JavaやC++でAIなんか書けるかボケ!」というのがFMの主張なのだが、こんなことは大昔から繰り返されていることであって、別にFM独自の観点でもなんでもない。本当のプログラマーはPascalなんか使わないのである。

まとめ
「学習」により賢くなる、のでなく、賢くなるようなアルゴリズムを学習と呼ぶべき。
「本当のプログラマー」どころか、いまどき誰もPascalなんか使わない。
バーレーン戦、勝ててよかった。ガンバレ日本代表。
前のページ 次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。