修論に追われながら感傷に浸ってみる

ACLのSIGSEMのpaperにIWCS(現ICCS??)の論文も入手できるようになりました.
http://www.aclweb.org/anthology/sigsem.html
そんなに大きな会議ではないですが,議論も活発でいつか(もうないと思うけど)ここで自分も議論に加わりたいと思いました.
英語の重要さが身に染みます.
話せないんでは土俵にも上がれない.
同じ学生が活発に議論してはきはき発表しているのを見ていると羨ましい限りです.
日本人も良い研究しているはずなので,もっと率先して(英語ができなくとも)海外に発信していかないといけないなあと思いました.
あと,女性の研究者の方が多かった!
3分の1は女性の方だったんじゃないでしょうか.
情報科学系はだいたい1割くらいしか女性がいないことを考えると
(大学・大学院ともそうでした)
これはすごいことかと.
それと同時に,海外ではそれが(3割くらい女性が占めているのが)普通なんだろうなと感じました.
女性の工学系の研究者が少ないのは(とりあえず自然言語処理は少ないと思う),個人的にはもったいないような気がしますね.
と言っても、私も来年は研究者ではなくなると思いますが..
頑張っている方を見ると私も頑張ろうって思います.
それで頑張っている方が女性だと,個人的には頑張ろう度がアップする気がする.
(女性研究者をあまり見かけないため親近感がわくのかもしれませんが)
国際会議については自分的にすごく良い経験をさせてもらったことだったので、また後日書こうと思います.
もう終わってしまうから思うのかもしれないけれど,院まで研究できてよかったなあ.
修論が終わってもまだ研究は終わりませんが)
私なんてまだまだなんですが,(やりきれた!っていう程研究できてないし.してないし,踏ん張れてないし.というかそもそもやりきれるのだろうか..)
院に来れてよかったと思います.
自分は研究向きじゃあないと思いますし,だいぶ苦しかった時期もありますが,もうこんな風に研究できなくなるかと思うと少し寂しいような..
(研究者の方から見ると笑われそうですが;)
とりあえず感傷に浸る前に修論

修士論文提出期限まであと9日

全く更新していなかったら、いつのまにか修論提出までカウントダウンが始まってしまいました。
これまでいろんなことがあったけれど、それらについては修論が終わってからまとめて書くことにして、今は修論提出間近、というこの危機的状況をリアルタイムで記述していきたいと思います。

とりあえず11月くらいまでは最も安全圏であるとされていたと思うのですが、いつの間にやら最も修論が進んでいないのでは疑惑です。むしろ確信しております。
修論に手をつけるのが遅すぎる自分。。
ただその間さぼっていたつもりでもなく、学会への論文投稿やら発表準備やらをしていました(と弁解してみる)。
それらの資料・論文及び知見が生きていたためか、最新の日本語原稿を修論フォーマットでコンパイルすると一挙に28枚に。
さすが。さすが横向きで2カラム10枚のことはある。
しかし、この日本語原稿は最新の成果ではないため、更新及び修正する必要有り。

何よりも論文投稿するたびに、定義の書き方が変わってしまっているのがいただけない、と自分でも思う。定義の根本は変わっていないけれども、よりわかりやすく周知される定義にするためには、誰もが(とは言えずとも、多くの人が)同じものを導けるように定義する必要があると考えると、よりよい記述・説明の仕方を考えるのは自然なことなのかもしれませんが。

そして、今また、新たに定義の説明を変えたい衝動が!

こうした方がいいのではという考えはあるが、何せあまりまとまっていないのと時間がないのとで、かなり迷っている。(とは言っても半分くらいは書き直してしまったが)

これは先生と要相談。
もし、見送ることとなっても今後さらに論文を書くつもりなので、そのためにはきっと必要な議論のはず!

と信じて、いろいろ考えた9日めでした。(今日はすでに8日めですが)

とりあえず、コンパイルする上でとまどったことを列挙。

  • 情報科学科でダウンロードするtexファイル一式は文字コードがShift-JIS
    • 自分はutf-8で書いているのでnkfコマンドで必要なファイルだけ文字コードを変換した
  • マクロのユーザ定義はどうするのか?
    • 基本的に先輩のを参考にフォーマットを変更
    • \documentclassの直後でユーザ定義を記述し、\begin{document}の直後で\input naist-jmthesis.styを記述.他はフォーマット通り

Support Vector Machine for Ranking

RankingSVMSVM-rank: Support Vector Machine for Rankingについて。

  • SVMrank
    • SVMLightの'-z p'オプションを用いるのと同じ。だが、こちらの方がもっと早い。
  • インストール
    • MulticlassSVMと同様のため割愛。
  • 実行方法
    • svm_rank_learn -c 20.0 train.dat model.dat
    • svm_rank_classify test.dat model.dat predictions
    • train.dat:学習データ
    • model.dat:学習したルールのアウトプットファイル名
    • prediction:結果を出力するファイル名
    • cオプション:SVMlightのcオプション=SVMrankingのcオプション/n(学習データの事例数)
  • データの形式

<順位> qid:<pairwiseして比較するグループの番号> <素性>:<重み>...
3 qid:1 1:1 2:1 3:0 4:0.2 5:0 # 1A
2 qid:1 1:0 2:0 3:1 4:0.1 5:1 # 1B
1 qid:1 1:0 2:1 3:0 4:0.4 5:0 # 1C
1 qid:1 1:0 2:0 3:1 4:0.3 5:0 # 1D
1 qid:2 1:0 2:0 3:1 4:0.2 5:0 # 2A
2 qid:2 1:1 2:0 3:1 4:0.4 5:0 # 2B
1 qid:2 1:0 2:0 3:1 4:0.1 5:0 # 2C
1 qid:2 1:0 2:0 3:1 4:0.2 5:0 # 2D
2 qid:3 1:0 2:0 3:1 4:0.1 5:1 # 3A
3 qid:3 1:1 2:1 3:0 4:0.3 5:0 # 3B
4 qid:3 1:1 2:0 3:0 4:0.4 5:1 # 3C
1 qid:3 1:0 2:1 3:1 4:0.5 5:0 # 3D

    • qidの値が同じものだけを全組み合わせ比較する。
    • qidは比較するグループを表す。グループごとに各カテゴリを比較。
    • 比較は1A>1B, 1A>1C, 1A>1D, 1B>1C, 1B>1D, 2B>2A, 2B>2C, 2B>2D, 3C>3A, 3C>3B, 3C>3D, 3B>3A, 3B>3D, 3A>3Dとなる。
  • どうやら学習時にSVMrankingを使ったら、SVMlightのclassifierを使用し、学習時にSVMlight(-z p)を用いたら、SVMrankingのclassifierを使用するらしい。
    • svm_rank_learn -c 3 train.dat rankmodel
    • svm_rank_classify test.dat rankmodel rankpredictions

にて実行すると、rankpredictionsに実数値が書き込まれる。

    • テストデータは学習データと同じく、比較したい事例のqidを同じ値にする。


しかし、自分の環境では、
Reading model...Version of model-file does not match version of svm_classify!: Success
といって怒られるので、今後調査する。

Multi-Class Support Vector Machine

one-versus-restでやっている実験をsvm_multiclass(SVM-Multiclass: Multi-Class Support Vector Machine)で実験してみた。
以下はメモ。

multiclassは多クラス分類用SVM
クラスごとにベクトル空間を作成し、テストデータがどのベクトルに近いかを見ている?

  • インストール
  1. svm_multiclass.tar.gzをダウンロード
  2. mkdir svm_multiclass
  3. mv svm_multiclass svm_multiclass.tar.gz
  4. cd svm_multiclass
  5. gunzip –c svm_multiclass.tar.gz | tar xvf –
  6. make


インストール完了後、パスを設定する
まずsetで現在使用しているシェルを確認
bashだとばかり思っていたらtcshだった)
パスの確認は echo $PATH

  • パスの設定
  1. ~/.tcshrcを作成
  2. ~/.tcshrc内にset path = ($path <追加したい path 名>)を追記
  3. 再度ログインするか、source .tcshrcを実行

<参考>パスを通す - bnote


パスを設定したディレクトリ内に、svm_multiclass_leranとsvm_multiclass_classifyを置いておく。

  • 使い方

<学習> svm_multiclass_learn -c 1.0 example_file model_file
example_file:学習データ
model_file:作成するモデルファイル名
cオプションは必ずいる。値が小さいほどソフトマージンで値が大きいほどハードマージンになる
正例が少なく、負例が多い場合にはハードマージンにした方がよいかも
<分類>svm_multiclass_classify [options] test_example_file model_file output_file
test_example_file:テストデータ
model_file:作成したモデルファイル
output_file:結果を出力するファイル

<クラス番号> <feature番号>:<重み> ...
3 1:0.43 3:0.12 9284:0.2
正解ラベルは+1,-1ではなくクラス番号(分類したい正解カテゴリに番号を振る)

  • 出力ファイル形式

<システムの出力クラス> <クラス1の期待値的なもの> <クラス2の期待値的なもの>....
7 -9.875518 -6.460163 -9.003758 -7.940923 -9.298646 -8.990040 89.529431 -33.355256 -4.605125
一番大きい数字のクラスを正解としている


先輩に教えて頂いたりして実験は終了したものの、結果は芳しくなさそうだった。
パラメーターによっても結果は変わるため、今後再実験と分析が必要。

助詞の「の」の持つ言語表現について


日本語では助詞の「の」で様々な省略を行っていると思う。
(他にも様々な省略を行っていますが)
多種多様な使い方があるにも関わらず、それを的確に推論できてしまうのはもはや神秘。

  • 例えば
    • 雨の日→雨が降っている日
    • ステロイドの副作用→ステロイドには副作用がある
    • 私の鉛筆→私が持っている鉛筆
    • そこの人→そこにいる人
    • 向こうの家→向こうに建っている家

とあげていけばきりがないのではないかと思う。(多少、文脈依存があるかもしれないが、私のイメージ上)
英語にするとこれらは区別できるのだろうけれど、日本語では大変難しい。
助詞の誤用判定でもこの「の」は曲者だし、アライメントでもこの「の」が表している意味がわからないと的確にはアライメントできない。(少なくとも私はそう考えている)
そもそも、単語が持ち得る動詞というか、名詞と一緒に使える動詞が経験的にわかっているから、こういう推論がなり得るのではないかとも思う。
例えば、「雨の日」を「雨が持っている日」とは考えない。雨は「降る」もので、「の」は状況を表していることになるのではと思う。「私の鉛筆」なんかは所有を表す「の」になる。これも結構面白いと思うのは、人の場合「持つ」という意味合いだけれど、もの(例えばステロイドとか)は「ある・含む」という意味合いになる。擬人化すればもちろん「持つ」になるとは思いますが。

では、この「の」が表す意味がわからないと何がわからないのかと考えると、
例えば

  • 雨の日に傘をさす
  • 雨が降っていない日に傘をさす

の違いがわからないのではないかと思う。
単語のアライメントだけ考えれば同じことを言っていると考えられてしまうのではないかなー。
(雨・日・傘をさす、が同じなので)
ポジネガをとれば解決できるのかもしれないけれど。

【DMLA】画像検索のための半教師あり学習のHashing

本日の勉強会の内容の復習。


Semi-Supervised Hashing for Scalable Image Retrievalhttp://www.ee.columbia.edu/ln/dvmm/publications/10/SSH_CVPR2010.pdf
Jun Wang, Sanjiv Kumar, Shih-Fu Chang

・Hashを使って画像の近似を見て検索する手法が研究されている
・教師ありの機械学習で意味的な近似度を操作できる
・しかし、ラベル付けされたデータが小さかったりノイジーだとうまくいかない。学習時間も長い。
・この問題点を解くために、Semi-Supervised Hashingを提案する
SSHはSH(Spectral Hashing)の類似度の計算をかえている(?)

  • Locality Sensitive Hashing(LSH)について

・似ているものには似ているビット列を与える
Locality Sensitive Hashing - (setf yaruki nil) - nlpyutoriグループが分かりやすいと思う。

  • Spectral HAshing(SH)について

・NP困難な問題について主成分分析をすることで次元圧縮し、ベクトルの固有値問題に落とし込む
mamorukさんのページWEB+DB PRESS Vol.49 を読んで Spectral Hashing について考える - 武蔵野日記少し書いてある。

  • Restricted Boltzmann Machines(RBMs)について

・ボルツマンマシンは指数分布族の統計モデル
・隠れ変数について周辺化した分布の尤度を最大にする
参照:Deep Learning and Restricted Boltzmann Machinehttp://www.stat.phys.titech.ac.jp/~mohzeki/YSMSPIP/Abst/YSM-SPIPYasuda.pdf