トップカンファレンスVLDB2021に通った話

筆頭論文がよいところに採録された。めでたい。業務でやった研究なので内容に踏み込んだことは書くべきでないが、外からでも観測できる情報と今の気持ちについてメモる。

なにが起こったのか

筆頭論文が国際論文誌 PVLDB(Proceedings of the VLDB Endowment)に採録された。この論文誌に採録されると国際会議 VLDB(International Conference on Very Large Data Bases)でプレゼンテーションできる仕組みになっている。つまり、論文誌として常に論文の投稿を受け付けており、採録されたものに関しては1年に1回開かれる国際会議に招待される。変わった仕組みだが、いつ投稿してもよいので投稿する側としては非常にありがたい。

VLDB はデータベース分野で最高難易度のトップカンファレンスであり、CORE ranking では上位5%を意味する最高ランク A* が付いている。いわばデータベース研究者の夢の国際会議である。まぁ自分はデータベースの研究者ではないので ICSE とか PLDI とかに通せたほうが嬉しいんだが。今回論文が採録された VLDB2021 の Research Track の採択率は 23% だったらしい。けっこう低いが一時期よりは 高いっぽい

ちなみに採録された論文は以下。テーマはプログラム合成。

arxiv.org

アカデミックで頑張るためのメモ

こういうめでたいときは自身を振り返るのにもよいタイミングである。ということで、どうやればコンピュータサイエンス系のトップカンファレンスに(運が良ければなんとか1本くらいは)論文を通せるのかを書きたい。本当はよくある「統計検定準1級合格のために勉強したこと〜問題集編〜」みたいなノリでまとめるのが面白そうだが、他人と違うことをするのが研究活動なのでなかなか上手く整理できそうにもない。

参考になったもの

とりあえず論文を書くにあたって参考になったものを書いてみる。ちなみに私自身はコンピュータサイエンス修士号だけ持っている、卒業してから4年くらい経った社会人。

English for Writing Research Papers

この書籍には英語論文を書くテクニックがたくさん載っている。めっちゃ参考になった。この本に書かれていることの多くはシンプルかつ明瞭な文を書く方法である。英語を書くときは「もっとかっこよく書きたいなぁ」と思うものだが、かっこよさよりシンプルで分かりやすい文を書くことが重要だと教えてくれる。ちなみに分量が多いので、いざ論文を書くとなってからすべてを読むようなものではない。

www.amazon.co.jp

松尾ぐみの論文の書き方

こちらは、かの有名な松尾先生が論文を書くときのノウハウをまとめたウェブページである。ここに書いてあるような内容を知らないとたぶんちゃんとした論文は書けない。個人的には「失点を少なく、守りの野球を」というメッセージが印象的だった。「2-0とか3-0とかいう試合をすべきで、10-8とか15-12とかの大味な試合をしてはいけません。 」と教えてくれる。さっと読めるので読もう。そして実践することが何より大切。

ymatsuo.com ymatsuo.com

How to Write a Great Research Paper

こちらは YouTube の動画である。Microsoft Research の Simon Peyton Jones 氏が研究の進め方と論文の書き方について指導している。以前、このスライドを誰かが和訳したものを見た気がするので興味ある人は探すべし。内容として印象的だったのは、論文はたった1つの "ping" すなわち one clear, sharp idea をプレゼンするようなものであるべきという話。だいたいの場合、論文執筆は内容を盛り込む作業より削る(洗練する)作業が重要になってくる。そういう感覚が身についた。

www.youtube.com

他には英文ライティングの本とかはいくつか読んだ。特に冠詞の付け方はちゃんと勉強した。もちろん他にもいろいろ勉強したんだが、ぱっと思い浮かぶのはこのあたり。

個人的に心がけていること

ここからはポエム。参考になるかも知れないし、ならないかも知れない。

Support All Claims

論文では、ストーリーのなかで手法の貢献を明確に主張(claim)し、それが実験等で裏付け(support)されるようにする。このような claim と support のペアを常に意識している。すべての claim が support されているかチェックするし、support できない claim は論文に書かないようにする。というのも、support されていない claim を含む研究はサイエンスとして破綻しており、レビュアーとしてはアクセプトするわけにはいかないからである。レビュアーの好みとかそういう次元に行く前に落とされる明確な理由になるので、すべての claim はしっかり support する。

論文をたくさん読む

論文を読んで知識を付けるという行為は量が質の変化をもたらす類のものだと思う。論文をたくさん読むと技術を体系的に整理できるのはもちろんだし、トップ研究者たちと同じ空気を吸っている感覚がわいてくる。「こんな研究ができたらこのくらいスゴイ」っていう感覚はその分野の論文をたくさん読まないと分からないと思う。論文投稿して reject を食らうにしても、同じ空気を吸えていたらレビューを受け入れられるし、同じ空気を吸えていないとレビューコメントが意味不明で「研究おもんな」ってなる。まぁ本当に意味不明なレビューもあるんだろうが。

コンピュータサイエンスの基礎を身につける

新しい研究を効率よく理解したいだけなら新しい論文をたくさん読めばよい。しかし、自分で研究をやるとなると基礎力のある人が強いと思う。というのも研究活動ってのは宝探しみたいなもんで、コンクリートの地面をスコップで掘ろうとしているみたいなことが容易に起こりうる。そしてその地面がコンクリートであることが大学の学部レベルの知識で分かることもある。たとえば、解きたい問題を真面目に定式化すると効率的な解法が知られていない問題に帰着するとか。それとは別に、研究に対する指摘として「ナイーブなアプローチではなぜダメなのか?」というのはどんな研究にもつきまとう。こういうのは素朴なやり方を知らないとディフェンスしようがない。

自分にコンピュータサイエンスの基礎が身についたと思うタイミングは2つある。1つは院試で、もう1つは院生時代の独学。

1つ目の院試について。学部時代は真面目に勉強してなかったので、院試は過去問を覚えながらなんとか乗り切った。それだけだとよくあるエピソードだが、自分の場合は M1 のときに留学生の院試勉強の手助けをする担当に任命された。とはいっても院試の内容なんて忘れてしまっていたので、自分が院試を受けた1年後にふたたび院試勉強をやり直すことなる。これがよかった。その間に卒論を書いたこともあり教科書的な内容の意義がよく理解できた。当たり前の話だが、教科書に載るような内容は汎用性が高く科学的な価値も高い。これに気づいた。

2つ目は院生時代の独学。M1 あたりからコンピュータサイエンスの楽しさに気づいた。研究科の近くに理工学図書館があり、たくさんの技術書があることにも気づいた。そこで、院生の時間のうち自分の研究に割くのは4割くらいにして、残りの時間は図書館で本読んだりプログラム書いてみたりした。その過程で試行錯誤しながら独学できるようになったことが一番の収穫であった。本当によい時間だったと思う。結局のところ、技術を理解するっていうのは自分の中から湧き出る疑問を解消し続ける作業に他ならない。いろいろ勉強するほど疑問が湧いてくるし、それを解消するごとに理解も深まる。今でもこのブログにせっせと記事を書いてるのは、技術をドキュメンテーションする行為と疑問を解消する行為の親和性が高いからである。

雑感

いろいろ書いたが、なにごとも自分で実践して検証することが重要というのが現在の気持ち。どんな崇高な情報であっても、それを聞いただけで満足しているのは自己啓発セミナー受けてるのと何ら変わらない。結局のところ孤独に地道にやるしかない。