2010-06-04 omakeはおまけどころではない

omakeはおまけどころではない

引き続きコーディング. baselineの実装までにも時間が結構かかるなぁ..

以前,omakeを使っていると書いたが,今日はその使い方について簡単に書いておく. プログラムをコンパイルするとき,いちいちgccほにゃららとうつのは面倒なので, Makefileというものをよく使うのだが,そこで使うGNU makeをより便利にしたような ものがomakeだ.

詳しくはこのブログ記事を読んでほしいが, なにが便利かって,ファイル関係を全自動で解析してくれ, ファイルを書き換えて保存したら,自動でコンパイルしてくれるところだ.

複数のプログラムを自動生成したい時はこんな感じに書けば良い.

Omakefile(ここに書いた設定はサブディレクトリに引き継がれる)
 LDFLAGS += -lm (ライブラリ指定)
 CXXFLAGS += -g -Wall (コンパイルオプション指定)
src/Omakefile
 BIN = ../bin/
 CXXFLAGS += -I../lib (ライブラリフォルダ指定)
 .PHONY: clean
 .DEFAULT: $(CXXProgram  $(BIN)foo, foo) $(CXXProgram  $(BIN)bar, bar) \
  $(CXXProgram  $(BIN)baz, baz)
 clean:
         rm *.o

そして,

 omake -P

または

 omake -P --verbose

としておけば,あとは全部自動でやってくれる. この快適な作業をぜひ試してみてください〜.

DMLA

kNNを分割統治で

今日のDMLAはshimboさんの論文紹介. 表のwikiに読んだ論文のタイトルを公開していたので*1軽く触れる.

Jie Chen, Haw-ren Fang, and Yousef Saad.
Fast approximate kNN graph construction for high dimensional data via recursive Lanczos bisection.
J. Machine Learning Research 10:1989-2012, 2009.

というもの.

kNN*2するのに,普通にやったら計算量O(dn^2)かかるけど*3, デカいグラフだと大変だよね(><)ということで,なんとかしようという話.

この論文ではすごくシンプルな方法を提案していて, グラフを分割して各部分でkNNやったら楽だよね,でも完全に分割すると意味ないから, ある程度のノードをどちらの部分にも含めるようにしてみよう,という話.

途中SVD(特異値分解)とか出てきて,すっかり忘れてるなーとも思ったり. いや〜おもしろかった. グラフかわいいよ(c)の気持ちが少し分かったような気がした笑

論文さーち

今日はM1が結構参加していた. 最初入ったとき,あれ今からD-MATH?(M1向けの数学勉強会)と思ったくらい(笑) 少し分かっていなさそうな人もいたけど,大丈夫,ぼくもあんまりよくわかってないから(爆) というのは冗談で,ぼくが言うのもなんだけど,あんまり心配しなくても良いと思う. 以前にも書いたように,ぼくは一度ドロップアウトしてる. なんかレベル高すぎて,全然ついていけねーって感じになったんだけど, 分からないなりに聞こう,自分で調べて(論文読んで)みようと思っていたら, こんな僕でも(なんとか)論文紹介できるようになったから,だいじょうぶ.

というわけで,今度の金曜に紹介する論文を決める. TOEICもあるし,その次の水曜は進捗発表を自分から言って入れてもらった上に, 金曜の夜から東京に行くし, 月曜・火曜と東京のIBISML(情報論的学習理論と機械学習研究会)にも出るしで, 来週は相当忙しい週になりそうだ. でも,充実してて,たのしい.

*1 DMLAは基本内部向けの勉強会なのだ

*2 グラフの各ノードについてkこずつ近いものを列挙しよ〜というタスク

*3 dはノードを表すベクトルの次元数.nはノード数

本日のツッコミ
syou6162 (2010-06-06 [Sun] 18:00)

おお、IBISML行かれるんですねー。自分もすごく行きたかったのですが(講演者の方が一回目からすごい豪華だし)、M1のときは色々行きづらいですね。。。

報告レポート楽しみにしていますー!

shriayu (2010-06-09 [Wed] 00:09)

他の予定もあるので,ついでに参加します!
1回目ということでほんと豪華ですね〜.
ちゃんと理解できるか微妙ですが,色々聞いてきたいと思います!