第2回DSIRNLP勉強会で発表してきました

 佐藤さんに誘われてDSIRNLP勉強会で発表してきました。
 最近社内で高村本輪講をやっていて、自分自身改めて良い勉強になったこと、以前TokyoNLPでランク学習の話をした際にはもしかしたら聴衆の半分ぐらいを置き去りにしてしまっていたのではと最近気づいたことなどから、今回はSVMって案外怖くないよね、みたいなことを順を追って説明してみる話にしてみました。既に知ってる人にとっては明らかに退屈な話だったと思いますが、分かりやすかったで賞的なものをいただけたので、わかりやすく、というところはある程度うまくいったのかなと思います。
 発表資料はspeakerdeckに上げました。→機械学習と最適化の基礎
 以下自分の発表についての感想と反省。

  • 他の人の発表の最中に資料を作ってるとどうしても話が半分ぐらいしか聞けないので事前に作ってくるべき。
    • ただ今回は風邪のせいもあり仕方がなかった。
  • nokunoさんにmacbook air借りれなかったらやばかった。スライドをPDFにできていたのはポータビリティの点で良かった。
  • 5ページ目ぐらいでちょっと話が飛びそうになって一気に緊張して、そこから先は聴衆が見れなかったというか見たらやばいと思い見なかった。
    • 見てもっと緊張するよりは良かったが、聴衆を見て話せるようになるべき。
  • 大域的最適が言いにくいことはわかっていたので、別の言い方を考えておけば良かった。最初の1回以外はグローバル最適とかで良かった。
  • 自分にパクリの意図がなくてもそう取られる可能性がありそうなところがあったら出展をつけておくべき。
  • 受けたところで時間を稼いで発表に意識を向けてもらおうとするのは逆効果。さっさと流そう。
  • 最後の方は説明不足過ぎて前提を知らない人にはわからない話になっていた。後1枚ぐらい説明があるべきだった。

 mixiさんの自販機でレッドブル買ったらTwitter上であれだけレッドブル好きアピールしている@kisa12012に「えー、(僕は)休日は飲まないですよ、だって健康に悪いじゃないですか」と言われてしまい、はしごを外された気分でした。まぁでも確かに健康に良い飲み物ではないよね、甘すぎる。
 hitoshi_niさんとは「人は老害になるのか、老害として生まれてくるのか」みたいな話をしたりしていました。
 後はNegative/Positive Thinkingの中の人が分かってよかった。1年目でこの実装力、この理解度というのが恐ろしい。将来が楽しみです。

入門 ソーシャルデータ (オライリー・ジャパン)

 オライリー・ジャパンから最近刊行された「入門 ソーシャルデータ」の献本を頂きましたので、軽くレビューしてみます。監訳者に知っている名前がちらほら見えます。(そしてもちろんその中の一人から頂きました。)
 ソーシャルデータと一口で言ってしまうとどんなデータなのかちょっとわからないかもしれませんが、本書におけるソーシャルデータとは、TwitterとかレシピサイトとかFacebookとか、ソーシャルな要素の強いサービスで作られるデータの事を指します。ソーシャルデータを取ってきていくつかの手法で解析してみる、というのが本書の内容です。
 データを取ってくる、というところは結構重要で、データを解析する前にはまずある程度まとまった量のデータを入手する必要がありますが、データ収集を手作業でやるのは辛いのでプログラムを書いて自動化したい、だけどプログラムを書いて自動化するのもそれはそれで大変なわけです。仕事ならともかく趣味の場合、データ収集の段階で飽きてやめてしまった、という経験は皆さん持っているのではないでしょうか。本書はデータの収集についても詳しく書いてある(というか、ざっと読んでみた感じでは半分ぐらいはデータの収集にページを費やしている)ので、その部分が比較的簡単に乗り越えられるようになっています。
 良い点を挙げると、具体的なコードが載っており、初心者でもデータのクローリングから解析までなんとかこなせそうなところでしょうか。自分が初心者だった頃のことを思い出すとこういう本があってもキツい(サンプルコードを書き換えて動かすのもけっこう大変ですよね、最初は)だろうなとい思いますが、そこは経験を積んで頑張るしかないので、ここを取っ掛かりにして後は頑張って下さい、という感じでしょうか。なにもない状態でウェブ上の情報を調べつつ頑張るよりはだいぶハードルは低くできるのではないかと思います。
 集めてきたデータの解析については基礎的な手法を中心に紹介されており、例えば同じオライリーから出ている集合知プログラミングなどと比べても、全体的に初心者に優し目の構成になっているのかな、という気がします。自分がある程度経験を積んだプログラマであり、データ解析に自信があるならば、購入前に簡単に目を通して、自分とレベルがあっているのかを確認しておくのもよいでしょう。もしくは、例えばTwitterから簡単にデータを取ってきたい、みたいにバッチリ目的が合致するのであれば、中級者以上の方でも元が取れると思います。

今更感あふれるタイ情報調査

 IJCNLP2011に参加するために火曜日からタイに行ってくるので、主にインターネットコネクションについて調べてみた。家を出てからホテルにつくまで15時間って、意外と遠い。
 成田空港でのfree wifiSSID「narita-airport-free-wifi」を選択したらつながる。有料もあるっぽいけどどういうことかわからん。
 スワンナプーム国際空港でのfree wifi:Passengers wishing to use the service must present their boarding passes at any airport information counter to get a username and password for the 1 Mbps service.
 携帯電話:infobarだとTrue Moveという業者を選ぶと海外ダブル定額になるらしい。ただ、普通に使うと1日2000円ぐらい取られる(最大で2980円かかる)ので、一応ローミングの設定はしておくけど、緊急時以外は使わない、という感じかなぁ。
 ホテル:予約したempressは有料でwifiが使えるはず。どれぐらいの値段になるのだろうか。
 会場:会場のシャングリラは宿泊者向けに無料wifiを提供しているので、学会参加者にも使わせてくれる…といいなぁ。
 最近忙しくてほとんど何も調べてないので、正直ちゃんと行ってこれるのか不安。

Binary SQLという考え方

 HandlerSocketというのは、「SQLの解釈って結構時間がかかるから単純なCRUD操作はSQLをバイパスしたら速くなるよね」というものであると理解している。HandlerSocketは複雑な操作は行うことができない、という点がちょっと残念である。
 なぜSQLの解釈に時間がかかるかというとSQLがテキストで書かれているからで、テキストだとパースに時間がかかるからバイナリを使おうという考え方はBinary XMLなどでは既に実現されている。
 解釈後の命令文字列を使い回すための方法としては、既にprepared statementというものがある。prepared statementは実行すべきSQL文をあらかじめサーバ側に登録しておき、SQLを実行したい時には呼び出したいSQL文とplace holderの引数のみを指定するものである。バイナリであればパースは簡単であるし、その後の実行計画までキャッシュしておくことも原理的には可能であるため、性能的には非常に効果が高いはずである。
 prepared statementでは生まれ得ない、SQLをバイナリ形式にする事のメリットについて30秒ぐらい考えてみたが、特に思いつかなかった。唯一、非定形のSQLを実行しないといけない場合にはBinary SQLの方が効率は良くなるであろうが、そもそもそんなシチュエーションが思いつかない。
 特に建設的な何かはなく、このエントリは終わる。

最近気になっているJSライブラリ

 時間があったら調べたいんだけど、無いのでリストアップだけ。

  • EaselJS
    • html5canvasだと一旦描画したオブジェクトの移動とかできないので、シーングラフを管理してくれるっぽい感じのライブラリ。
  • paper.js
    • EaselJSと似たような感じ。どっちがいいのかわからない。
  • d3.js
    • グラフ描画ライブラリっぽい。なんかいろんな種類のグラフが描ける。グラフがかっこいい。
  • now.js
    • 複数のクライアントでデータを通信するコードを簡単に書くためのライブラリ。チャットとかがすごい簡単に作れる。

カテゴリカル分布の謎を追え!

 Twitterでmurawakiさんがcategorical distributionってneologismっぽいというような話をしていて、私も確かに確たる用例を見つけられずに不安を感じていたので、ちょっと探してみた。結構大御所も使っているようだ。

 ただ、これらの資料は比較的新しい(Mark Johnsonが2008年、David Bleiは2010年)ため、Wikipediaのエントリに影響を受けている可能性がある。そうなるともうなにがなんやらという話ではある。

 個人的には、歴史的に使われてきた用語ならばともかく、そうでないのならば多項分布の特殊な場合、という扱いで十分なように思う。初出は見つけられなかったが、ちょっとGoogle book searchなどで調べた限りでは、それほど歴史のある単語であるようには見えなかった。

Workshop on Advances in Text Input Methods (WTIM 2011)に通りました

 IJCNLP2011の併設ワークショップ、Workshop on Advances in Text Input Methodsに投稿していた論文が通りました。今回は同僚の岡野原さんに加え、京大の森さんにも著者に加わってもらい、色々と指摘を頂きました(投稿時の共著者の設定を忘れていたので、なんか単独投稿っぽくなってしまっていますが、こちらはオーガナイザーの方に訂正をお願いしています)。とても勉強になりました。初の英語論文かつ査読付き論文だったので、通って嬉しい。
 何時から公開していいのかわかりませんが、PDFはそのうちどこかで公開します。中身は3月のNLP2011に出した奴を実験をやり直し(データとしてBCCWJを使ったりとか)てリファインした内容になっています。ページ数が増えたので、端折ってた説明を色々詳しくしたら8ページに収めるのが結構大変でした。Viterbi Algorithmの擬似コードとかKneser-Neyの説明とか、書いたけど全部削ったよ…。
 ちなみに、WTIM2011では、プログラム委員にも加えていただきました。査読をするのは初めての経験だったので、そちら側でも勉強になりました。
 先日accepted paper listが公開されましたが、私は聞いたことがなくって予想が付かない以下の2本を特に楽しみにしています。

  • CHALLENGES IN DESIGNING INPUT METHOD EDITORS FOR INDIAN LANGUAGES: THE ROLE OF WORD-ORIGIN AND CONTEXT
  • DIFFERENT INPUT SYSTEMS FOR DIFFERENT DEVICES

 IJCNLPは開催地がタイのチェンマイと日本からはちょっと遠く、しかもWTIMは会議後のワークショップでしかも二日目というやや辛い日程ですが、入力メソッドという珍しい題材での会議ですし、きっと参加する価値のあるワークショップになると思います。まだearly registrationも間に合う(はず)なので、予定と予算の都合がつく方はぜひご参加下さい。会期中にはランタンを飛ばすお祭りもあるらしいですよ。