電脳くおりあ

Anyone can say anything about anything...by Tim Berners-Lee

最近流行の「人工無脳」とは?

2005-05-05 19:48:36 | プログラミング
 「人工知能」という言葉は、もうすっかり古くなった感があるが、「人工無脳」という言葉は、秋山智俊さんの『恋するプログラム──Rubyでつくる人工無脳』(毎日コミュニケーションズ)で初めて知った。「人工無脳」は「人工無能」とも言う。グーグルで検索してみたら、かなりの情報が集まった。要するに会話を楽しむためのプログラムのことであるらしい。色々な定義があるが、多分、Hatena::Diaryにある「主にチャット等で発言の中のキーワードに反応して適当な対応を返すプログラムのこと」という定義あたりが正しいのだろう。そして、この「人工無脳」が結構流行っているらしい。心を癒してくれるという「人工無脳」のサイトが幾つかある。
 前述のHatena::Diaryでは、「人工無脳」サイトは、「従来の人工知能研究とは異なり、会話における『表象の現象だけ』を考えて会話をシミュレートしようとするアプローチを取る」と述べているが、「人工知能」ではなく「人工無脳」を楽しむのは、「脳らしさから心らしさへ」ということであるらしい。

チューリングテストが目指している『人間らしさ』は概念操作や記号操作に重きをおく「知的さ」であって、我々が思う『人間らしさ』とは食い違っているからである。我々が会話していて楽しい相手、気の許せる友人の条件はチューリングテストなどで評価できるだろうか?我々の目的は、笑いやユーモアを感じさせるプログラムの創出なのである。この瞬間、人工知能と人工無脳は違う道を歩み始める。人工無脳は科学的であることをやめアートの一種またはおもちゃの一種になったのである。


 とにかく、「人工無脳(能)」というとき、私たちはあまり肩肘張らないことが大切だ。そこに会話の面白さを見ればいいのだ。最近人気のロボットたちもいろいろ人間と会話することができる。それらも含めて、古くはElizaから最近では「どこでもいっしょ」のトロに至るまで、様々な「人工無脳(能)」があると考えていた方がいい。もちろん、最先端のところでは、おそらくそれらもまた「人工知能」ということと重なるはずだ。なぜなら、コンピュータというのは、もともと脳をシュミレータしてできたものだからである。機械によって脳をまねようとしたらコンピュータができたというのが正しい。もちろん、コンピュータは機械だから、脳とは違うに決まっている。しかし、コンピュータはいずれにしても最も脳に近づいた機械であることには変わりない。

 さて、秋山智俊さんの『恋するプログラム──Rubyでつくる人工無脳』は、その「人工無脳」をRubyで実装しそのプログラムを解説したものだ。この本は、Rubyの入門書だけでなく、RubyでのGUIの扱い方をVisualuRubyで実装し、また形態素解析をするためにはフリーの形態素解析プログラム「茶筅(ちゃせん)」を使用して「マルコフモデル」を実装するなどの意欲的な試みをしており、その実装の仕方の解説書にもなっている。さらには、こうして実装された「マルコフ辞書」に学習させて語彙を豊富にさせるためにGoogleの「Google Web API」を利用させる方法もプログラムに組み込んでいる。

 ネットワークにはいろんな人工無脳がいます。彼らはチャットや掲示板、インスタントメッセンジャーで人間とおしゃべりをして、笑わせたり感心させたりむかつかせたりしています。日記やブログを書いて、トラックバックをしてくる人工無脳もいます。
 つまりはお遊びプログラム。人工知能までにはいたらないオモチャ。ではあるんですが、これがなかなかかわいいのです。しかも基本的な仕組みは単純なので、それなりのものを思いのほか簡単に作ることができます。(「はじめに」より)

 秋山さんが言うほど、単純な仕組みではないが、「成長」していくプログラムができることは確かだ。秋山さんは、最後に幾つかの課題を出している。「コンソールベースの小さなプログラムから、GUIをもち、学習することを覚え、ついにはネットワークに接続するまでに成長した」プログラムを更に発展させるために、プログラムの改良や、IRCなどのチャットやWEB掲示板での多人数での対話に発展させたり、日記やブログなどのモノローグでの出力ができるように拡張したりすることが課題として列挙されている。

 残念なことに、この本をほぼ書き上げた翌日2月18日、秋山さんは36歳、クモ膜下出血で帰らぬ人となったそうだ。この本も、友人が応援をしてできたそうだ。私には、「Rubyでつくる人工無脳」という試みはとても面白い試みだと思った。そして、「人工無脳」を作るということは、Rubyというプログラムの学習にかなり適していると思った。私より、20歳も若い、有能なRubyプログラマーが亡くなったことを聞いて、とても残念に思う。Rubyでの「人工無脳」サイトは幾つかあるが、秋山さんの意志を継いで、たくさんの人たちがRubyでの「人工無脳」に挑戦して欲しいと思った。私も、遅まきながら、勉強してみようと思った。

社員の本の宣伝

2004-08-28 14:37:53 | プログラミング
 株式会社ツインスパークという会社は、1997年1月に有限会社設立で、WEB制作事業を開始し、1998年8月株式会社へ組織変更という会社なので、創業10年に満たない新しい会社だ。その会社のHPの右下に「社員が著者の本のご紹介」というコーナーがあり、高橋征義著『Rubyレシピブック 268の技』と高橋征義著『たのしいRuby』が紹介されていた。

 私は、ツインスパークという会社とつきあいはないし、高橋征義さんとも面識がない。しかし、この2冊の本は持っている。2冊とも私のRubyの勉強のための基本図書だ。まつもとゆきひろさんの『オブジェクト指向スクリプト言語Ruby』という本とHal Fulton著の『the Ruby Way』が少し敷居が高いという人は、まずこの本から読むことになる。その前に、入門書として私が最初にお世話になったのは原信一郎さんの『Rubyプログラミング入門』だったが、いまなら、この2冊がまずおすすめだ。

 ところで、こう書いたのは、別にRubyの入門書の紹介をしたかったわけではないが、だんだんそうなっていきそうな気もしてきた。livedoorの堀江貴文社長のブログ(社長日記)に行けば、社長自らの本や、社員の本が、堂々と紹介されている。会社がこういう風に企業の中の個人の仕事を取り上げ、自社のPRの中に利用しているところが面白いなと思ったのだ。野口みずきが金メダルを取ったために、名古屋のグローバリーは、一躍有名になり、株価も跳ね上がった。高橋征義さんが業界でどれだけ有名人なのかは、私はよく分からない。しかし、高橋征義さんの読者なら、かなり安心して仕事を発注しそうな気がする。それは、高橋さんの本がそういう力を持っているようなのだ。私が今までに読んだ、プログラミング言語の入門書の中で、いちばんよく分かる本だったから。

 柔道の谷亮子の場合は、バックはトヨタだ。トヨタが谷亮子の柔道に対する支援はかなりのものだが、トヨタくらいになると谷亮子の存在というより、日本のスポーツのパトロンであり、谷亮子を助けてあげるのは当然ではないのかという感じになる。野口みずきの場合は、半々くらいか。そうすると、青木征義さんの場合は、どのくらいになるのか。まあ、島津製作所でノーベル賞をとった田中耕一さんではないが、企業の中からじんわりと貢献しているのだろうと思う。

 これから企業は、企業の中の個人の個性に頼ることになるだろうし、そういう時代になってくる可能性がある。普通の仕事は、人によって、能力の差が2倍とか3倍になるということはあり得ない。しかし、プログラムやエンジニアリングなどの場合、個人の能力の差は2倍・3倍どころかもっと開く可能性がある。つまり、それだけ知的付加価値の創造の世界は個人の能力を大事にする必要があるのだ。私は、個性ある社員をPRに使うことは、悪いことではないと思うし、積極的に活用した方がいいかも知れないと思っている。要は、個性あふれる社員がどのくらいいるかがその会社の大きさでもあるのではないだろうか。そして、できたら、そうした個性あふれる社員が生き生きと働ける職場であるといいと思う。



プログラミング言語が好き

2004-08-15 00:02:00 | プログラミング
 私は、普通のサラリーマン(出版社ではあるが)であり、プログラマーではない。また、会社の情報部門でいろいろなシステムに携わるようなエンジニアでもない。ただ、パソコンというものが作られ、個人でもコンピュータが持てるようになったとき、不思議な感動を覚え、自分もその最先端に触れてみたいという一心で、パソコンを買った。最初のパソコンは、1980年頃のシャープのMZ80という機種だった。NECのPC8001の次に発売されたものだと思う。

 MZ80は、クリーンコンピュータといわれ、BASICをROMとして内蔵するのではなく、使用のつど内臓カセットからロードして使うようになっていた。要するに、カセットテープからとろとろと言語をロードしてから、やっとBASICが使えるわけだが、それでも自分が本を見ながら打ち込んだプログラムが動くのを見るのは、驚きだった。

 その後、IBMのDOS/Vパソコンを買ったが、そのころは、アセンブラやC言語の本を買ってきて、同じようにプルグラムを打ち込んでみたりした。もちろん、仕事の方は、ビジネスソフトにお世話になっていた。私は、ビジネスソフトは以前は、一太郎、ロータス123、Paradoxであり、現在は、Word、Excel、Accessを使っている。

 それはとにかく、その後、C++に挑戦して挫折した。もう、プログラムには関わらないと思った。しかし、インターネットが普及し、CGIなどが必要になったとき、Perlを知った。なんてすごい言語だと思った。やっとPCも性能が上がり、スクリプト言語が普通に使えるようになった。要するに実用的な処理ができる言語となった。

 それと同時に、大枚をはたいて、VB6.0を買った。あまりに簡単にWindowsプログラミングができるのに驚いた。しかし、所詮、入門書をまねて、小さなソフトを作ってみるだけだった。この言語も、次第に忘れていった。仕事が忙しくなり、ビジネスソフトを使い回すだけで手一杯だった。

 インターネットが当たり前になり、メールでの情報のやりとりが当たり前になった頃、Linuxを知った。MacやWindowsの外に、PCで使えるフリーのOSがあることを初めって知った。そして、それは、PC上でほぼUNIXと同じことができることに驚いた。

 Linux上では、フリーなソフトがたくさんあり、当然プログラミング環境も整っていた。ここで、LispやJavaやRubyを知った。Webにも手を出し、JavaScriptやPHPまで手を出したりした。入門書を買い集め、その通りに入力しては動かして遊んだ。それで、何か新しいことに自分も参加しているような気がしていた。しかし、憶えては忘れ、一体私は何を望んでいたのだろうか。

 50を過ぎてからは、特に記憶力が減退し、新しいプログラミング言語を覚えても片端から忘れていった。同じ人が、いろいろなプログラミング言語の解説書を書いているのをみて、自分もそれができると思っていたが、それがとんでもないことだと知らされた。私ができたことは、入門書を見て、言語環境を構築し、本に書いてあるプログラミングを自分で打って、実行させることだけだったのだ。だから、全部忘れてしまってもおかしくない。何となく、絶望的なきもちになった。

 しかし、やっと最近になって分かった。一つは、自分のやりたいことから、プログラミングを考えてみるようになったことがある。例えば、携帯電話に会社の社歌を入れたいから、Javaをつかいiアプリを作って、動かしてみるというように。この方が、勉強になりそうだ。やってみると、ほぼ一日で、それが実現できた。するとそれが、まだできるかもしれないという自信になった。このことは、現在では、プログラマーでなくても、自分でプログラムを使う場面が身近になってきていることも原因になっている。そうすると、こつこつとやってきたプログラミングの勉強が、とても役に立つ。アセンブラからJavaやC#、そしてRubyやJavaScriptなどオブジェクト指向言語まで、詳しくはないが、流れが分かるになってきた。そして、「コンピュータのきもち」(山形浩生)が多少は分かるようになって来た。そうだ、私は、「コンピュータのきもち」を分かるようになるためにプログラミングの勉強をしてきたようなのだ。