集合知プログラミング独書会(1)

読みたかった書籍の一つ「集合知プログラミング」の独り読書会を本日から行っていきます。

1章 集合知への招待

この章では集合知がどのようなものか、どのように活用されているか、機械学習とその限界について書かれています。

集合知とは

この書籍では集合知を以下のように定義しています。

今までにない知見を生み出すために、集団の振る舞い、嗜好、アイデアを結びつけることを指す。

集合知と言えば、今や死語となった「Web2.0」が盛んに叫ばれるようになってから普及してきた技術、といったイメージを持っていました。しかし、それ以前にも集合知という概念は存在しており、身近な例として「世論調査」が挙げられています。

集合知とは、独立した貢献者たちから新たな結論を作り上げることである。

ただ世論調査のように膨大なコストと手間の掛かる手法を個人で実行するこはできません。

それがインターネット&Webサービスの普及により、ネット上の特定箇所に知識が集まるようになってきました。例えば先日私が類似度計算に失敗したはてなブックマーク、より巨大な知識の集まるものとしてはtwitterFacebookWikipedia等があります。

この書籍では上記のようなサービスから、オープンなAPIを通じてデータを集める方法を紹介し、

利用者のデータを利用して計算を行い、利用者の経験を拡大することのできるような新たな情報を作り上げるようなアルゴリズムについて扱う。

といったことをやっていくようです。

機械学習とその限界

機械学習という言葉もよく聞くようになってきましたが、以前は人工知能研究という遠い世界のお話だと思っていました。機械学習の身近な例ですと、スパムメールに対するフィルタリングですとか、広告に利用される行動ターゲティングあたりが有名でしょうか。

機械学習はコンピュータに学習させるためのアルゴリズムとして、以下の2ステップを行うようです。

1. 与えられたデータの特質を推測できるような情報を生み出し
2. その情報を利用して将来現れるであろうデータの予測をする

どうやって予測を実現するのか、よく分かりませんね。

このあたりの疑問を解決するため、スパムメールのフィルタリングを例に挙げ、機械学習のプロセスが解説されています。

人がある単語を含んだメールはスパムである、と経験に基づいてパターンを作り上げるように、同様のパターンを機械に教えてあげることでフィルタリングを行うようです。

最初にパターンを教えてやれば、以後は自動的に学習し、経験を積んで言ってくれるのかな?本当に?・・・と、モヤモヤしたものを抱えつつ読み進めてみると、機械学習の限界について触れられていました。

機械学習の手法は既に見たデータを基にしか一般化できず、それでさえ完全ではない。

つまり人の経験や人間関係等の人生から抽出した膨大なパターンを与えてやれば、理論上は人間と同じ行動をできるかも知れないけれども、少ないパターンを基に一般化を行っても正確じゃないよ、ってことのようです。

スパムフィルタリングにしても、この単語が含まれていてもこの人からのメールは受け取る・・・といったように、常に機械に対して学習を続けさせていくことで、より正確なフィルタリングを実現させるみたいです。私が思っていたほど楽に学習し、経験を積み上げてくれるわけではないってことですね。

機械学習の使用例

機械学習を利用して利益を挙げているものの代表格としてGoogleが真っ先に挙がっています。あとはAmazonLast.fmも馴染み深いですね。他分野ではバイオテクノロジー、クレジット詐欺の発見、マーケティング、市場分析、果ては国防あたりにも利用されているようです。

読み進めるにあたって

2章からは実践に入るわけですが、数学の知識が必要で私の理解できない箇所は、適当にスルーして後からやり直す予定でいます。海外のWebサービスAPIを使っているものについては、そのまま利用するか、国内サービスで似たものがあれば、それを利用してサンプルコードを書いていきます。

あとは名古屋周辺で同分野に興味のある方がいれば、独書会から読書会に発展させるかも知れません。勉強会を開くとしても4月以降になりそうですが、興味があれば連絡下さい。