『集合知プログラミング』 Toby Segaran へのインタビュー @YouTube O'ReillyMedia (2008)
『集合知プログラミング (Programming Collective Intelligence)』の著者 Toby Segaran へのインタビュー。20分ほど。
<p>
http://www.youtube.com/watch?v=xMYJ18tggRs
</p>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=mogusa0e-22&o=9&p=8&l=as1&asins=4873113644&md=1X69VDGQCMF7Z30FM082&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&f=ifr&npa=1" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=x03c-22&o=9&p=8&l=as1&asins=0596529325&md=1X69VDGQCMF7Z30FM082&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=FFFFFF&bg1=FFFFFF&f=ifr&npa=1" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
<div>
Toby Segaran: MIT に入るために、17歳のときにニュージーランドから来ました。卒業後、バイオ関係のソフトウェア会社を始めました。
Interviewer: ほう、会社を始めたんですか。
T: ええ、ノースカロライナで 3年ほどやりました。買収されてボストンに戻り、そこでさらに4年ほど働きました。その間に、この本を書きました。その後、サンフランシスコに行くことにしました。ずっと住んでみたかったんです。
I: そのバイオテクノロジーの会社はどんなことをやっていたんですか? どんな技術を開発していました? あるいは、何を中心にしていましたか?
T: ネットワークシミュレーションです。製薬会社の人がやってきて、時系列に見れるやつです。それで私たちが言うんです。たんぱく質の相互作用構造によると、こういうことが起きていると考えられます。目の前で見ている現象を引き起こした根本原因は、これであると思われます、と。
I: すごいですね。大学で生物学を学んだんですか? それとも独学ですか?
T: 一緒に取ってたんです。自分の専攻であるコンピュータサイエンスのほかに、MIT ではたくさんの科学のクラスを受講する必要がありました。それで、微生物学を学び、興味を持ちました。
I: すばらしい。専攻は数学でしたっけ? コンピュータサイエンス?
T: コンピュータサイエンスです。
I: 今はどこで働いていますか?
T: メタウェブという会社で働いています。freebase.com を開発しています。巨大なセマンティック・オープン・データベースです。誰でも貢献できます。私はデータチームで働いていて、Wikipedia から意味を抽出したり、自然言語処理などを使って、できるだけ興味深いデータを入れようとしています。公開されたデータベースからも引っ張ってきていて、たとえば SEC、FDA、FCC などの類です。みんなが的確な検索ができるように、これらのデータを全て結び付けようとしているんです。
I: ほう、それはすごい話ですね。ところで、あなたの本『集合知プログラミング』について、ちょっとお話したいんですが、まだ知らない人に対して、集合知とは何であるのか、説明してもらえませんか?
T: 集合知というのは、こういう考え方なんです。合宿して[1]、いい定義を作ったんですよ(笑)。ノードが知らないことをネットワークは知っている。人々が共に働けば、個々人の貢献を利用して、それを全く新しい結果になるように組み合わせる。いい例、典型的な例の一つが、アマゾンのレコメンデーションシステムです。
たくさんの人が買い物をする。彼ら個々人は、上位の知に貢献していることを知らない。でも、この商品を好きな人は別のこの商品も好きだということを、商品のマトリックスからアマゾンは知っている。この情報は誰も知らなかったし、作り出さなかった。アマゾンは、ただ人々が何をするのかを見て学ぶだけです[2]。
I: スーパーで食料品を買うと郵便番号を聞かれる理由も、それですか?[3]
T: ええ。統計を取りたいんです。いまや Safeway[4] は、最大の消費者データを持っている会社の一つだと思いますよ。
I: ところで、この本を書くのに Python を選びましたね?
T: ええ。
I: いつも使われている言語なんですか?
T: いまは Python を使っています。本を書いていた当時は、Java を主に使っていました。でも、プログラミング言語としては Python の方が好きです。考えをより直接的に表現できることに気づいたんです。
I: あなたが今やっている知を扱う仕事に合っているということですね?
T: 実験するのに適しています。機械学習のアルゴリズムを設計しているときには、いろいろなものを試して、どれが有効であるかを見ることが多いんです。それをするのに、Python はとても柔軟です。他にも、関数プログラミングという視点もあります。クラスを一つ書いて、単語に分解したりするために異なる関数に渡すことができます。[5]
I: その力を引き出すために、関数プログラミングの考え方と Python を活用しているんですね。[6]
T: ええ、そうなんです。
I: Java ではダメだったと?
T: Java はそういう点では全然です。Python はマルチパラダイム言語です。一番うまくいく最良の方法を採ることができます。
I: 本の中に、集合知の機械学習についての節があります。機械学習について、少し話してもらえますか?
T: 本の多くの部分は、人々が何をしているかというソーシャルデータを理解するための機械学習アルゴリズムの利用について述べています。インターネットで人々が何をしているかというデータを得て、機械学習やデータマイニングを使って、新しい結論を導き出します。
I: どの技術を使うとそれができるんでしょうか? たくさんの節の中で-
T: 例えば決定木の節があります。他の技術も説明しています。階層化クラスタリング、k-means、サポートベクターマシン、あとは何だったかな?
I: それらの多くは、統計的な考え方をするものですよね。
T: ええ。
I: あなたはその統計的な考え方を Python で表現することができた。この手の処理に向いたパッケージが沢山ありますが。
T: ええ、いくつかは - 可能なときは、パッケージを使うように努めました。でも、どのようにして動作しているのか知るために、みんなにコードを見てもらいたかったんです。ライブラリを使うときに、それぞれのオプションがどのような意味を持っているのかを理解することは大事です。ときには、シンプルなものを自分で実装して動きを見てみる、それが一番の早道であることもあります。多くの人が言ってくれましたが、コードがあるから、Ruby や Scholar[7] など、いろんな言語に移植することができます。
I: 単にコピーアンドペーストして使うこともできますね。
T: ええ。
I: And use it on your __.
T: 多くの新しい言語には、機械学習のライブラリがありません。なので、Python でどのように書かれるものなのか、説明があるというのはとても良いことなのです。Ruby に移植するのは簡単です。
I: 知能の進化についても述べていますね。どういうことか、説明してもらえますか?
T: 遺伝的プログラミング、という考え方があります。新しいプログラムを作るときに、自然淘汰を用いるのです。実際には、プログラムを木構造で表現します。そして競争させる。勝ったほうを生き残らせます。他の方法もあります。
交配させて木構造の一部分を取替え、突然変異させる。時間の経過と共に、プログラムが自分自身を書き換えます。そのときに必要な唯一のことは、どのプログラムがより優れているのかを判断することです。激しい競争にさらすのです。いまは簡単な問題にしか適用できませんが、将来的には重要になる技術だと考えています。
I: 現実の世界では、どんな問題に有用なのでしょうか?
T: 私がいつも説明に使うのは、NASA が遺伝的プログラミングをアンテナの設計に使っているという例です。電波のスペクトルをシミュレーションして、どのアンテナが優れているのかを知ることができます。まさに進化するアンテナ設計です。最終的に、人間が設計する最良のものよりも優れたものが出来上がります。
I: あなたがフリーなデータにこだわる理由は?
T: そのことについては、ずっと考え続けています。人々は同じデータセットを何度も何度も作り直し続けているということに気づき始めています。レストランのレビューサイトを作ろうと思ったら、それぞれの都市毎に全レストランを自分で集めるか、みんなに投稿してもらわなければなりません。でも、そうして作ったデータには著作権があるので、他の人には使えないんです。さらに、政府のデータベースを加工して販売する会社の例もあります。Capital IQ は SEC のデータを再販しています。
それを Yahooファイナンスが使っている。でも、あなたがそれをダウンロードして使うことは想定されていません。それで、我々は何度も同じデータを繰り返し作り続けています。それがその企業にとって重要なものでなくても。Yelp[8] の目的は、レビューサイトとなることです。レストランのディレクトリではありません。Google Local でも同じことをしなければなりません。
みんな同じデータベースを必要としているのです。いいアイデアがあっても、それが大きなビジネスにならないのであれば、一から映画やレストランのデータを用意しなければならないことを考えると、始めることさえできません。株の選別プログラムもそうですね。我々が Freebase で実現しようとしているのは、それはまさに多くの人々がやろうとしていることでもありますが、データの開放です。
I: それはデータにおけるオープンソースのようなものですか?
T: ええ、まさにそうです。Aaron Swartz、Cal Melmad などが、データを開放しようと努力しています。一度公開されてしまえば誰も自由な使い方ができる、そのためにオープンにします。それはものすごいことなんです。意図されなかったフリーデータの使われ方として有名な例に、Adrienne Holivardi が作ったシカゴ犯罪マップがあります。犯罪記録とグーグルマップをマッシュアップしたものです。
それは最初のマッシュアップの一つでした。人々は「どこで犯罪が起きているか見れるなんて、こんなの初めてだ」と驚いていました。今は地図を使ったあらゆるマッシュアップが存在します。でも当時、誰にでも入手できる犯罪情報を地図にプロットするというのは、非常に斬新なアイデアでした。手に入るデータから他の人が何を生み出してくれるのか、予測することはできないのです。
I: そうですね。いろんな可能性があります。データ同士の結びつけも面白そうです。
T: ええ。
I: 地理データのような GIS情報を持っているとして、そうして例えば遺伝子情報もあるとする。この二つを重ね合わせてみると、それは実に面白い-
T: 系譜学。
I: そう。
T: 国勢調査局とか。いろんなデータが手に入りますよ。多くは既にフリーです。でもみんなその正しい使い方を知らない。我々は、それをみんなの為に処理する中間層なのです。
I: Ruby や Python のような言語は、パッケージも揃っていて、そういう情報を処理するのに適しているように見えます。
T: ええ。そういう見落とされがちな事柄を、ある程度扱っています。でも、まとめる方法はあるものです。二つのデータベースが同じ対象を語っているということを、どのように知ればよいのか、とか。
I: そこが本を読んで印象に残った部分です。Python で一から作ったコードと、外部のライブラリを使ったマッシュアップを組み合わせることができる。今までに無い例の数々も本当に面白い。あなたの本は、人工知能の本のようにも見えるし、部分的に統計学だし、Python プログラミングの本でもある。全てです。
T: まさにそうなるように努力しました。バイオテクノロジーの会社で働いているとき、こう思っていたんです。実用的じゃないように見えるからという理由で、アルゴリズム、特に人工知能を理解する人間が少ない。学校では習うけど、会社ではデータベースを使ったウェブアプリを作るだけだ、という感じでね。みんな複雑なことを学んでいるけど、それはシステムをどうやってスケールさせるか、ということだったりする。機械学習を日常の仕事に活かすという考えに至らないんです。
それはアカデミックな研究者の仕事でした。私がやりたかったのは、みんなが作っているコンシューマ向けウェブアプリにも役に立つんだということを示す本を書くことでした。それをすぐに使えるようにしました。コードを見れば、そんなに複雑じゃないということがみてとれる。誰にでもできるのです。アルゴリズムの詳細、人工知能の詳細には立ち入りませんでした。さわりだけ。
それと、データを得る様々な方法、いろんなオープンAPI を使う方法を知ることにも価値があると思っています。そうしておいて、データそのものについて考えすぎないようにしました。アルゴリズムを工夫するんです。より多くの情報を含んだ新しい情報源を探すほうがまし、ということはよくあります。
I: セマンティックウェブについての本を書いているんですって?
T: ええ。
I: 少しだけ教えてください。セマンティックウェブとは何ですか?
T: セマンティックウェブは、ずっと語られてきました。多くの人は、進歩が見えないために冷めてしまっています。でも、有望な研究がたくさんあります。いくつかは、いますぐに使うことができるものです。Tim Berners-Lee が提唱しているような大きなビジョンではありませんが。
自分のエージェントが、例えば医者と交渉する。それは難しいのですが、データの連携のための別な新たな方法があります。フリーデータの話につながりますが、人々が、利用可能な形で物事を公開すれば良いのです。本は他の二人の著者 Jamie Taylor と Colin Evans と共に書いています。最初の本と同様に、セマンティックウェブもまた-
I: 人工知能。
T: 機械学習を使って、今現在でも、素晴らしいものをみんなに見せることができます。実用的なサンプルを通して。
I: どんなことを書くんですか? セマンティックウェブ技術を使って、今できることとは何でしょうか?
T: ひとつは、厳格なデータベース設計ではなく、RDF triples のグラフとして物事を表現すれば、必要に応じて新しいデータソースを追加するのが簡単になります。永遠のベータと言われる Web 2.0 では、ソフトウェアを一発で作ることはできません。「これが欲しかったんだ」と思えるデータが次々と登場します。実は、セマンティックウェブ・カンファレンスではそういうデモをやりました。
データベースは、ブラウザ上で動作する Javascript の triple store でした。この triple store を用いて、ブラウザの中でマッシュアップを実現しました。ブラウザの操作でデータを取得して取り込むと、小さなグラフを作ります。数行の Javascript コードで、あらゆる新規のデータソースが地図に追加されるのを見ることができます。さらに、いつイベントが開かれるかなどという一時的な情報も追加できるのです。
I: AL や RDF といった技術が実装に役立っているんですか?
T: ええ。RDF は、グラフを表現する手段です。基本的には、ファイルのフォーマットです。何かを表現するときに、オープンな標準があるというのはいいことです。AL は、ドメインを表現する手段です。オントロジーの言語です。みんなが同じ言葉で話せば、データの結びつけがやり易いのは明らかです。
I: そうですね。オントロジーと、決められたボキャブラリーというのは非常に強力な概念だと思うのですが、まだ多くの技術領域[9]で普及していません。みんな、あまり聞いたことが無い話題ですよね。
T: そうなんです。
I: でも、セマンティックウェブのビジョンとは密接な関係があります。セマンティックウェブのみに限ったものと考えるべきではないと思うのですが、そうなっています。オントロジーとは何であるか、なぜ次のステップの実現に欠かせないのか、簡単に話してもらえますか?
T: まず、オントロジーというのは、基本的には約束事です。これをいうとき、これを意味する、という。いいですか? みんな、ちょっと大げさに考えすぎなのだと思います。あらゆるものにオントロジーを定義できる、みたいに。それは psych プロジェクトで目指しているような種類のものです。複雑すぎます。でも、ある特定のドメインに限ると、非常に有用です。例えば社内で合意するとか。こう言ったら、それはこのパーツを買うことを意味する、ということが国防総省などでは行われています。そういうことなのです。
初めにオントロジーについて合意しておけば、全てのデータは相互運用性を持ちます。みんながセマンティックウェブで苦労しているのは、適用範囲を広くしすぎようとするからです。万人が使える、全ての物事に対するオントロジー、みたいにね。そうすると、人々の間で合意するのが難しくなります。技術に入り込まないで語るなら、それが私の基本的な考え方です。
I: そういうことですか。あなたのアプローチは、そう、まだ主流になっていないけれども魅力的で強力なものの片鱗をみつけて、それを広めようというやり方ですね。
T: ええ。
I: まさに企業家です。
T: うーん、そういうつもりはないんです。そうなるだろうと思っているだけで。
I: そうですか。今日はお時間を頂き、ありがとうございました。
T: いえいえ。
I: ありがとうございました。
<hr/>
Notes
[1] 原文では “I think we actually had a CI Food Camp”。”CI Food Camp” は原文で Toby本人に未確認の表現。おそらく誤り。
[2] 原文では “And this is sort of an example where no one has gone through and curated this information.”。curated は created の間違いであるとして訳した。
[3] アメリカでは、買い物の際に郵便番号を良く聞かれるらしい。
[4] 北米第三位のスーパー。
[5] 訳者が Python のことをよく知らないので、Java などと比べて何が嬉しいのかが理解できなかった。原文では、”Also the aspects of it that are functional programming, like that I can write one class and pass in different functions to do kind of word splitting or something like that. “
[6] 原文では “So you really rely on the functional paradigms and Python’s to extract it’s power.”
[7] プログラミング言語であろうか。不明。原文のミスの可能性あり。
[8] レストランのレビューサイト。
[9] 原文の “in most technical _____” を「技術領域」と訳した。
<hr/>
翻訳の公開については、O’Reilly Media様から許可を得ています。
</div>