1Mx1M

ここ数日 Perl でプログラムを書いている。他の人に渡すことを考えるとやはり Python より Perl なのかなと……(Python 人口増えてきてはいるが)

そろそろデータがメモリ(16-32GB)に乗らなくなってきたので行列の内部表現を疎行列に変更。各要素には pointwise mutual information の値を入れていたのだが、これだと非零の値が埋まってしまったりするので、頻度を使うように戻した。少しは扱えるデータ数が増えたのだが、これまでは「この要素数ならメモリ上で全部計算できる」というのが事前に分かったのに、この変更で最後になるまでどれくらいメモリを使うのか(最大で使う量は分かるのだけど)分からなくなってしまった。

pointwise mutual information というのは2つの要素の間の共起を測る尺度の一つなのだが、最近読んだ Measures of Correlation という記事にはタスクによるが t 検定がいい(孫引き)と書いてある。自然言語処理はなにがどのタスクでいい性能を示すのかそれぞれ違うので、山のようにいろんな共起尺度が提案されている(30個くらいの共起尺度のスコアを全部機械学習の素性に入れて学習した、とかいう論文も読んだことがある)。

ちなみに今扱っているのは100万x100万くらいの(疎)行列。1行につき要素はせいぜい100個くらいしか埋まっていない。先日のオープンキャンパス他の研究室の修士の人と話したのだが、彼は500x500くらいの行列で連立一次方程式を高速に解く方法を研究しているらしい。自然言語処理は「高次元スパース(sparse: 疎)」と言われるのだが、確かにオーダーが違うよな……

そのとき「やっぱりアプリケーションって作っていてもおもしろくないし、オープンキャンパスのデモでは研究のおもしろさって伝わらないですよね」と言われたのだが、さすがに基礎研究のみがおもしろいってのは自分には抵抗あるので、「いや、応用好きな人もいるし、大学院って人それぞれじゃないですか」と答えた。まあ、好きな人が好きなことすればいいと思う……(確かに大学にいる人は大学でしかできないことをしてほしい、と大学外の人は思うようなので、そういう期待にも応える必要はあると思うけど)

研究室で突発的にカレーパーティーが始まったのだが、記憶によると一昨年も翻訳のワークショップの結果返送〆切の周辺でカレーパーティーがあった(ので参加できなかった)。そういう運命なのだろうか……