パーセプトロンからSVMでの画像認識まで、機械学習エントリのまとめ

なんかJJUGナイトセミナーで機械学習をやるっぽくて、定員100人が40人キャンセル待ちとかになってますね。
【東京】JJUG ナイト・セミナー「機械学習・自然言語処理特集!」12/17(水)開催 - 日本Javaユーザーグループ | Doorkeeper
ということで、予習用だか復習(になるかわかんないけど)用に、2008年になんか機械学習をやってたときのエントリをまとめてみます。


今でこそ機械学習はなんかもりあがってるけど、2008年にぼくがやってたとき「ところで機械学習やってなんになるの?」ってよく言われてました。ぼくも「いや、なんかそこに機械学習ってものがあるから実装してる」みたいな答えをしてた気がします。特に目的はありませんでした。
たまたま サポートベクターマシン入門 という本を見かけて、なんか実装してみたくなっただけです。
変な力がありあまってたっぽい。

画像処理

CCVというアルゴリズムをaudioswitchさんが紹介されていたので、実装してみました。その紹介エントリはもう見れなくなっててちょっと残念です。
また、そうやって実装したCCVを使って画像検索っぽいものやビール画像判定っぽいものを作ってます。
まあ、この判定はうまくいったところで画面キャプチャしてるし、データが手持ちのものだけだったので、実用ではないですけど。
Color Coherence VectorをJavaで実装してみた - きしだのはてな
Color Coherence Vectorで画像検索を作ってみた - きしだのはてな
画像同士の距離がとれたら近い画像マップができるよね - きしだのはてな
ビール画像判定プログラムできたよ! - きしだのはてな

その後の機械学習

ところで、この時期は結構サポートベクターマシンが期待されてたのですけど、まずデータが多くなると学習にすごく時間がかかるのと、アルゴリズム的に並列化できないのでその時間が短縮できないというのがあって、大規模なデータでは使えないということになったんじゃないかと思います。
また、学習時点でデータがそろってないといけないので、データが徐々に増えるような状況には対応できず、用途にあいにくいというのもある気がします。


そこで今は、バックプロパゲーションを賢く多段にしたような感じのディープラーニングというのが流行ってて、ネコを認識したり画像の説明したりすごいことをやってます。
しかも並列実行やりやすいし、データが徐々に増えていくのにも対応しやすいし、現状の用途にとてもあってます。
なので、これからはディープラーニングを勉強したほうがいいと思うのですが、Twitterに「ディープラーニングのいい入門書ないかな」みたいなこと書いたら、3秒くらいであんちべさんが「ない」と返事してくださいました。ということは、ないんでしょう。
ディープラーニングの概要は、この資料がわかりやすいし「興味あったけど調べるの面倒くさくて諦めた人向け」ということでピッタリです。
Deep learning
この和訳プロジェクトに期待したり貢献したりするとよさそうです。
DeepLearning - ニューラルネットワークと深層学習(和訳) - Qiita


機械学習自体の勉強としては、このあたりが入門にいいですかね。

フリーソフトではじめる機械学習入門

フリーソフトではじめる機械学習入門

ほかにも、いい本がいろいろ出てると思います。

まとめ

というか、これぼく理解不能なんだけど。
なんでこの時期こんなエントリ書けてるか、こんなコード書けてるかまったく意味不明です。いま説明を求められても困ります。
変なもん食べてたんだろうか。そういえばこのころからベルギービールとか飲みだしてるな。
この時期はまだTwitterが広まってなくてコメントが生きているので、そこでいろいろ教えてもらってるのも役に立ってますね。いまだとすぐにガチの人に取り囲まれて萎えてたかもしれません。
ひとつわかるのは、なんか仕事せずにやってるな、ってことですね。