糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

少しでも研究に興味がある人,面白いテーマを探している人は「研究に必要なたったN個の事」とかいう記事を読まずに今すぐに"How to do good research, get it published in SIGKDD and get it cited!"を読むべき

言いたいことはタイトル.
そもそもSIGKDDとはSpecial Interest Group on Knowledge Discovery and Data Miningというデータマイニングや知識獲得のトップカンファレンス.WWWについで読んでて興味が合う論文が多い.
How to do good research, get it published in SIGKDD and get it cited!(pdf)
173ページあるスライドだけど良い事ばかり書いてあるし,読者を楽しませるような非常に多くの著者の実体験(成功したものだけでなく,失敗したものも)や,後半になるとダメな論文,間違っている論文,その例が大量に載っていて飽きずに読める.ただKDDに通したい人だけでなく,研究を少しでもやろうとしている人,論文を書こうとしている人,面白いことをやりたい人は必ず読むべき.
適当に面白かった項目を書きだす.

良い研究テーマとは?

  • 重要であること.お金が稼げる,人が救える,子供が勉強しやすくなる……
  • 実データが触れること.ネッシーの遺伝子解析は(ネタとしては)面白いけど…
  • 着実に改善できる問題であること.ある種の問題は完全に上手く解決するか完全に失敗するかの二択.そんな問題は若手にはリスキーすぎる
  • 成功の指標がはっきりしていること.

問題/データを見つけることから始めるべし

(問題を見つけるためにまずやるべきなのはKDDの論文を山ほど読むところから,と前置きをした上で)

  • (別領域の)専門家を見つけ,彼らから問題とデータを得よう
  • これまで私は人類学者,線虫学者,考古学者,線虫学者,考古学者,天文学者,昆虫学者,心臓病学者,爬虫類学者,脳波検査技師,遺伝学者,宇宙船専門家たちと研究を行なってきた
  • このような専門家は面白くて貴重な問題を複数抱えている
専門家と一緒に仕事をするといいことが多い
  • 「専門家の問題を解決する」という論文のモチベーションが得られる
  • 彼らは資金を持っている
  • 共著者に専門家の名前があると論文の信頼性が増す
専門家と研究をする時は,「何が欲しいのか?」を聞くのではなく「本当はどうしたいのか?」を聞くべき
  • 彼らは概してコンピュータサイエンスに関する知識は乏しいので何がコンピュータにできるのかを知らない事が多い
    • フォードの言葉「もし顧客に何が欲しいかと聞いていたら,彼らは速い馬が欲しいと答えただろう」
  • 実例
    • 生物学者とサンプリングとその推定に関する仕事をした時,彼女はある量を推定(estimate)したがっていた
    • しばらく考えてみると,それは「推定する」必要はなく,「まさにその量を計算する(compute an exact answer)」事が可能だと気付いた
    • データそのものから得ようとすると何年もかかってしまうようなある量が,計算してみると三日で済んだ

研究の問題を見つける

あるXというすげー良いアイデアが浮かんだ時,そのXをどうやって研究ネタにするか

  • 精度を上げたり
  • 早くしたり
  • いつでも使えるアルゴリズムにしたり
  • オンラインアルゴリズムにしたり
  • データタイプが違っても適用可能にしたり
  • なんでそれでうまくいくかを説明したり
  • 分散環境で実行可能にしたり
  • 実際のシチューエーションに当てはめてみたり
  • パラメータや仮説を減らしてみたり
  • メモリでやってたのをディスクを使ってやってみたり
  • 低スペックマシンでも動くようにしたり
  • シンプルにしてみたり
こんなんじゃ面白くない,ローリスクだ,ただ改善しただけじゃないかと言われるかもしれないけど
  • KDDなんて毎年100本ぐらい論文が通るけど,全てがブレークスルーを起こしてるわけじゃないし
  • 最初がつまらなくたってこれからの仕事っぷりでいくらでも面白い問題になりうるし
  • 2,3本はローリスクな論文をKDDに通してクッションにしてからハイリスクな研究をやるべき

データの話をしよう

  • テーマが決まったらデータ,それも実データを準備しよう
データの準備に時間がかかっても,素晴らしいデータならそれだけの価値はある(実例)
  • 2003年に二日間かけて緑のスクリーンの前で動作をするという動画のデータを作った.これは時間の無駄だったか?
  • このデータはすごい勢いで使われまくった
  • また,データのうちの一部がGUN/NOGUN問題という新たな問題を生み,100本以上の論文が書かれた

次は問題を解く話

If there is a problem you can't solve, then there is an easier problem you can solve: find it.
解けない問題があったら,そこには自分が解けるぐらいのもっと簡単な問題がある.それを見つけることだ.

http://www.amazon.co.jp/dp/4621045938

問題が解けそうになかったら

  • その問題の簡単なところから解いてみる
  • 別の分野での解決を考える
その問題の簡単なところから解いてみる
  • 例:ストリームデータの中で窓を動かしながらその中で一番近い実数値のペアを持ち続けたい場合,最悪線形時間と固定サイズの作業空間が必要になる.これは改善できそうにないと思ったら
    • もしかしたら最悪時間の代わりにならし時間に改善できるかも?
    • 実数値の代わりに離散値だったら何か改善できるかも?
    • 作業空間が無限だったら何か改善できるかも?
    • データが連続値だとしたら何か改善できるかも?
実例1:壁画マイニング
  • 写真から壁画を抽出し,似たものを検索したり分類したりするツールを作ろうと考えた
    • しかし,壁面の剥がれが特徴量として抽出されてしまい,壁画の抽出と分類は非常に難しい
    • 回転にも強くしたかったがこれも非常に難しい
      • どうすべきだろうか?
  • 次のように問題を緩和する
    • 壁画の抽出は,まずは古い本から抽出してみる
    • 回転については,いくつかの物体(例えば人や動物など)は向きが固定であるところからはじめる
    • 緩和した問題でKDDに通す
別の分野での解決を考える

色々なジャンルの論文を読み,色々な分野の人と(解についてではなく)「自分の問題について」話をし,共同作業し,アドバイスを求めるべき.

まずはシンプルなアイデアを試そう

実例1
  • 2009年に疾病のための殺虫剤の効果を測るために,ランドサットの衛星画像を使って作物型の分類問題を解くグループに加わった.
  • 最初に話を聞いた時,夢のような問題だと思った.なぜなら
    • 重要な分野で
    • 各クラスに複数の異なる変動性があり
    • Partial Rotation Invariant Dynamic Time Warpingなる手法を発明する必要がありそうだった
  • 「これベストペーパー取れるんじゃね?wwwwwwwwwwwwwwwwwww」
  • しかし,sum(x) > 2700 なる一行のMatlabスクリプトが最高の精度を出してしまった
実例2
  • ちょっと前にSIGMODに出した論文では,大量のデータの中から最も典型的な時系列を取り出そうとしていた
  • 論文中ではウェーブレット,遷移確率など難しい概念を色々と使った
  • しかしレビュアーからは Typical_Time_Series = zeros(64) なる一行のコードが返ってきた

あとは有名だった手法が実際は意味のないものだと暴いた話が出てくるのでそれはEamonn Keogh のチュートリアル - The beautiful mindを読んだほうが良いと思う.
その後は綺麗な論文の書き方,魅せ方,図の書き方がなんかが出てくるので必要な人は読めばいいと思う.