Prolog - アスペの俺のこだわり

長いものには巻かれた方が良い

 子供の頃、クラスで俺以外が全員別の選択肢を選んでいても、俺は頑なに選択を変えなかった。俺はそれが正しいと思ったからそうしていただけなんだが。

 俺にはすごいこだわりがあるようだ。今まで意識していなかったが、発達障害の治療を始めてからわかるようになった。全く知識が無い状態から分散、高可用性のサーバーを作るため、そして絶対に停止しない信頼性のため、俺は関数型言語を選んだ。Lisp,OCaml,F#,Haskell,Erlangを学んで、Lisp,F#,Erlangを実際に使用して作った。しかし困ったことに、こういう尖った言語を使える人間は少ない。結局開発・維持・管理など、サーバー系をすべて俺が抱え込むことになってしまった。

 サーバーも最初はFreeBSDを使っていた。だって、FreeBSDの方が安定しているっていうし・・・ それにPostgreSQLとか、CentOSではインストールに手間取ったのにFreeBSDなら簡単にできた、なんていう初心者時代の体験もあった。
 でも、やっぱりユーザーが少ないとインターネットに載っている情報も少ない。RedHatが商用で成功している、っていうんでCentOSに移り、CentOS7になった時点でカーネルかXFSの問題か、とにかく専用サーバーがおかしくなることがあり、動物的な勘からUbuntuに移行した。(その時はいくら言っても取り合ってもらえなかったが、どうもCentOSの特定のカーネルバージョンとサーバーの組み合わせは問題が起きるようだ。)

学んだこと

開発だけでなく、誰でもメンテナンスできるような環境をチョイスしなければならない

 まあ、そんなこんなで、サーバーは一番シェアが高いDebian系のUbuntuでDockerを動かすようになり、開発言語は誰でも使えるようにとPythonをベースに使うことにした。(サーバーで扱うデータの単位が大きかったため、メモリーを手動で管理できない関数型言語では無理があった、というのもある。) Pythonと高速化やメモリーの手動管理が必要な部分をCython + C++ で行う、というのは誰もが使えるような言語環境にすることと実際に必要とされている高速性をもっとも簡単な方法で実現する、全く妥協することの無い環境だと言える。
 結局はシェアが高い、みんなが使っている環境を選ぶのが一番楽だよね。そこに至るまでに自分ですごく苦労したり、人に迷惑をかけたりしてしまった。やはり長いものには巻かれろ、ということなのだと思う。

それでも俺はPrologを選ぶ! 今更!

 GPU環境を用意して、ChainerとTensorFlowでディープラーニングをそこそこやってみた。そして、これ、時期が来たら誰でもシンギュラリティ起せるな、と思った。今はなんでもかんでもコモディティ化してしまう時代。ライブラリーが整備され、パソコンやスマホの性能が大幅に上がった結果、かつて必要とされた俺の超絶的な最適化・高速化技術はほとんど必要なくなり、あっという間に

マイク・マリガンとスチーム・ショベル | バージニア・リー・バートン, Virginia Lee Burton, 石井 桃子 |本 | 通販 | Amazon

である。このディープラーニングの流行り具合。黙って見ているうちにどんどん扱えるニューロン数があがり、研究結果は上がってきて、それらをちょろっと利用させてもらうだけで簡単にお利口なAIが作れると思った。だから、いま、このディープラーニングへの研究へ参加することは俺の時間と金をすり減らすだけの消耗戦で、金を大量に持っているグーグルなどには絶対に勝てないと思った。

 そんなころ、俺は自分がアスペルガー自閉症の一種で、さらにADHDだと診断された。今まで信じていたものが崩れ去り、これからどうやって生きるべきなのか悩んだり、どうしてこんなことになってしまったのかと今更どうにもならない過去をあれこれ考えてみたりもした。そして自閉症について学んでいく中で大きな気づきがあった。俺は常に高ノイズ下の情報を処理しているため、普通の人が何の苦労もなく理解できるシグナルを識別できない。そのため、普通の人っぽく生きるため、ルールベースの人工知能のように生きることを覚えたのだ。なぜ俺が子供の頃にICOT、第5世代コンピュータープロジェクトにあれほど引き付けられ、Prologを勉強したのかというのが今更になってわかった。俺こそが生きる人工知能(古くて出来損ない)。でも、古くて出来損ないでも、チューリングテストはパスするはずだ。俺が目指すのは完璧な人工知能では無い。俺のような欠陥がある人工知能で良い。それでもなにか役に立つはずだ。

 そもそも、ディープラーニングって、極論すれば関数みたいなもんでしょ? イメージ認識や自動運転なんかはGPUがたくさん必要そうだけど、ルールベースのAIなら俺でも作れるんじゃない? っていうか、俺がいつも頭の中でやってることだし。別に俺は猫を識別する人工知能を作りたいわけじゃなくて、俺の苦手な数学とか論理的にサポートしてくれたり、いろんな知りたいことに答えてくれる人工知能が良い。算数の足し算はニューラルネットワークではなく、単にCPUで動く単純な命令で良い。俺はこっちの方に興味を惹かれた。Prologだけでは解決できないような曖昧なものはニューラルネットワークと組み合わせてハイブリッドにすれば良い。そしてなによりPrologで書くということはAIに対する教育そのものだ。俺はPrologという言葉でAIの親となる!