コンピュータ科学の博士課程にきて初めて分かったこと4つ

投稿者: 加藤 淳
投稿日:

学部生のころ研究について想像していたことと、実際に修士を修了して博士課程にきて分かった現実の間にけっこうギャップがあったので、この感覚の差を忘れないうちに書いてみます。なお、僕の専門はコンピュータ科学のなかでもユーザインタフェース・Human-Computer Interaction と呼ばれる分野です。他の分野だとまた事情が違うと思うので、その点ご承知おきください。

  • 研究には時間がかかる
  • フルペーパーを書くのは大変
  • 新規性は大きさよりコントラストが大事
  • 研究生活は自律心がないとつらい

研究には時間がかかる

学部生のころは、研究プロジェクト一つ終わらせるのに 1 年以上かかるなんてそんなバカな!と思っていました。実際は成果としてまとめるのに 2 年かかったものもありました。

学部生のころの想像として、アイデアを考えて実装するのに 1-2 ヶ月で、それを論文にして投稿したら終わり!3 ヶ月あればできる!! 余裕を見ても 1 年で 2-3 個プロジェクト終わらせられるんじゃないか…と思っていました。研究について何も知らず実装ばかりしていた頃から持っていたこの感覚は、HCI 分野の論文を読んでみても変わりませんでした。その気になれば 1-2 ヶ月で実装できそうな論文がけっこうあったからです。

実際のところどうだったかというと、そんなに甘くありませんでした。研究プロジェクトが辿る道のりは、だいたい次のようなフェーズに分けられます。他にも研究資金を獲得するための書類を書いたり、特許を取るための手続きをしたり、取材されたり、研究とは関係ないコンペティションに応募したり…意外とやることが多いです。さらに、一歩進んで二歩戻ることもよくあります。感覚として、研究プロジェクト 1 つを終わらせるのに最低半年以上はかかります。

  1. どんな研究をするか考える
  2. 関連研究を探す
  3. プロトタイプを実装してみる
  4. 論文の骨組みを書く
  5. 実装を完成させて論文に書き足す
  6. 実装を評価して論文に書き足す
  7. 論文を学会に投稿する
  8. 仮の査読結果にリバッタルする
  9. カメラレディを提出する
  10. 何度も発表練習する
  11. 学会で発表する

この中でも、2→1 のバックトラック(似たものを見つけちゃって元々のアイデアがつぶれる)がものすごく多いです。関連研究は基本的に研究プロジェクトが終わるまで探し続けるものなので、バックトラックは時間軸でいうとどのフェーズでも起こりえます。

8.のリバッタルフェーズは存在せずいきなり論文をリジェクトされる場合もあります。いずれにせよ学会に論文が通らないと、査読結果を元に実装を改善したり(5.まで戻る)ユーザスタディをやり直したり(6.まで戻る)論文の書き方を直して、次の学会に出してみることになります。ふつう学会は 1 年に 1 度しかなく、似た分野の学会は合わせても年に数回しかないのが普通なので、いちど論文がリジェクトされると、それだけでプロジェクトの寿命は半年以上伸びます。

長い論文を投稿して一発リジェクトされるとダメージが大きいので、3.のあたりでポスター発表やデモ発表に投稿することもあります。ポスター発表やデモ発表はだいたい 2-4 ページ程度の原稿を提出します。ポスターやデモはふつうの論文よりも査読に通りやすいことが多く、また、学会本番にはポスターやデモ機材の前に立って学会参加者と密な議論ができるため、長い論文を投稿する際に参考になるフィードバックをたくさん得ることができます。

フルペーパーを書くのは大変

前項で「長い論文」とぼかして書いたのは、決められた時間内に学会参加者とランダムに議論するポスターやデモに対し、多くの聴衆の前で 1 人が立って発表する「登壇発表」ができる種類の原稿のことです。一般的に自然科学の研究成果はジャーナルに採録されることがゴールになるケースが多いですが、コンピュータ科学は日進月歩なので、速報性の高い学会での登壇発表が重視される傾向にあります。とくに、著名な学会で登壇発表を行った内容はほとんどそのままジャーナルに採録されることもあります。

HCI の学会だと、登壇発表はさらにフルペーパーとショートペーパーに分けられることがあります。一番有名な学会では、フルペーパーは 10 ページ、ショートペーパーは 4 ページです。学部生の頃はこの差をあまり意識していなかったのですが、フルペーパーを書いてみてショートとの差がかなりあることに驚きました。論文は、既存研究との差分を明示し、既存研究へのポインタを与え、さらに新規の部分に関して読者が再現できる内容を書くのが基本です。ショートペーパーでは、これらの基本的な部分が紙面の大部分を占めます。一方、フルペーパーは、ショートと比べて関連研究が網羅されていることと提案手法の有効性をしっかり評価できていること(前項でいうとフェーズ 2.と 6.に関する記述がしっかりしていること)が強く求められます。

僕の場合、学部の頃考えていたよりフルペーパーを書くのが大変だったのは、関連研究を抜けなく書ききって、評価をしっかりするためにかなり時間がかかることが主な要因でした。

関連研究のセクションは、ショートペーパーだと、新規性を一番はっきり示せる論文を対照的に紹介する程度のスペースしか取れませんが、フルペーパーだと、部分的にオーバーラップがあるけど微妙に違う研究をいくつも紹介しつつ、新規性の軸をブレないようにはっきり言い切る話術が必要になります。僕がフルペーパーを書くのに 2 年かけてしまったプロジェクトでは、似た研究をいくつも紹介しているうちに自分の研究がたまらなく矮小なものに思えてきて実装からやり直すようなことを何度もしました。ただ、これは今にして思えば悪手でした。そうして実装が膨らむと、必ず新しいオーバーラップが生まれるからです。

評価のセクションは、ショートペーパーだとあまり本腰を入れて書く必要がありません。フルペーパーだと、定性的な議論にせよ定量的な測定結果にしろ、他の人が読んで面白いしためになると思えるそれなりの分量を書く必要があります。そういう結果を得られるユーザスタディの設計はかなり難しく、また、ちょっとでも変なことがあるとすぐに批判の対象となるため、かなり気を使います。そんなわけで、このセクションの査読は大抵の場合、減点方式になります。批判しやすいところなので、面白くないと感じた論文の評価を下げる原因をここに求める「こじつけ」の跡が見える査読結果もあります。

以下、本項で出てきた論文の種類をまとめておきます。

  • ポスター発表: 2-4 ページで短いフォーマットの原稿を投稿。学会会場でポスターを貼り、参加者と議論する
  • デモ発表: 2-4 ページで短いフォーマットの原稿を投稿。学会会場にデモ機材を持ち込み、必要に応じてポスターも貼って、参加者にデモを触ってもらいながら議論する
  • 登壇発表: 学会会場でスライドを使って多くの参加者(シングルトラックの場合は基本的に学会参加者全員、マルチトラックの場合はそのセッションに興味のある参加者)の前で口頭発表を行い、短い質疑応答を受け付ける
    • ショートペーパー: 4 ページの登壇発表用フォーマットで原稿を投稿。10-15 分で口頭発表を行い、5 分弱の質疑応答を受け付ける。
    • フルペーパー: 8-10 ページの登壇発表用フォーマットで原稿を投稿。15-25 分で口頭発表を行い、5 分の質疑応答を受け付ける。
  • ジャーナル: フルペーパー以上に充実した内容の原稿を投稿。会議での発表は伴わない場合が多い。採録までのプロセスは、一回の査読・リバッタルで結果が決まるのではなく、条件付き採録の査読結果を何度も受け取って改稿を重ねることが多い。

新規性は大きさよりコントラストが大事

学部生の頃は、超かっこいいシステムを作り込んでどどーんと発表できたらいいなと思っていましたが、今では、研究プロジェクトなら実装は最小に留めたほうがいいと考えるようになりました。前項でも少し書きましたが、実装が膨らめば膨らむほど既存研究とのオーバーラップが増えます。そして、たいていの場合は思い入れだけが募っていき、気持ちを全部論文にぶつけようとするとだいたい焦点がぼやけてしまいます。一論文には一つの新規性だけを書いて、既存研究との差を際立たせるのが賢い戦略と言えます。

研究論文とはあくまで他の人が参考にできる要点を分かりやすくまとめたものなので、自分の研究を愛しすぎるのは非常に危険です。時間をかけてシステムを作り込んでいくと、全てが素晴らしく思えてくる瞬間があったりします。そういう全能感に包まれた状態で書いた論文はだいたい穴がぼこぼこ空いていて、査読で針のむしろになります。また、投稿まで時間があると、途中で醒めてきて賢者モードになり、自分で穴をたくさん見つけてしまって死にたい気持ちになることもあります。このような精神的アップダウンはそれ自体が消耗のもとなので、システム実装の前に必要な仕様を客観的に書き並べ、それ以外はぜったいに実装しないくらいの気持ちの強さが大切です。どうしても何かを追加で実装したくなったら、それは本当に必要なのか何度も問い直し、必要になったらそもそもの目標設定を見直すべきです。

他の人の論文を読んでいると、どうしてこんな小さな新規性であの学会に通ったんだろう、と疑問に思うことがあると思いますが、その際は嫉妬して終わるのではなく、小さな新規性をどうやって際立たせているのか(正当化しているのか)表現手法に着目したほうが学びが多いです。

研究生活は自律心がないとつらい

学部生の頃は想像がつかなかったのが、自律心に関することです。日本の博士課程はほとんど講義がありません。すなわち、その気になれば 24 時間 365 日研究に捧げることができます。でも、普通の人はそういうことをすると精神が持ちません。適当に息抜きすることも、自分の研究パフォーマンスを上げるために必要です。僕は自制心のないほうだという自覚がありますが、それでも何年も研究見習い生活を送るうち、ミクロからマクロまで研究パフォーマンスを上げるため気をつけるべきポイントがいくつか見えてきました。

  • やる気が起きないときは事務作業したり論文を読んだりする: 創造的な作業ができないときは機械的にこなせる仕事や自分に対するインプットを増やす
  • 何をすべきか分からなくなったらブログや日記を書く: やることが山積みだったり、逆に大きな〆切を過ぎて放心状態になったら、自分の今いる場所をアウトプットしてみる
  • 規則正しい生活をしようとする: とりあえず姿勢だけでも…
  • 人に会いに行く: なまけていても、胸を張って人に会えるよう帳尻を合わせようとする
  • 遠隔地・海外の研究インターンに行く: 自分を研究以外あまりすることのない場所に置くことで、研究に関して考える時間を強制的に増やす

そんなわけで博士課程は考えていたより大変でした。博士 1 年の終わりまでフルペーパーが 1 本もなかったので本当にどうしようかと思っていました。

それでも気が狂ったようにならないで済んできた(むしろ、かなり幸せに生きてこられた)のは、妻や友人の存在と学振、博士がだめでもソフトウェアエンジニアとしてやっていけるだろうという精神的・経済的セーフティネットのおかげだと思います。博士課程にこようとする人には、自分なりのセーフティネットを整備するように薦めています。

博士を無事修了できるかまだ分からない身ですが、そろそろ後輩にもアドバイスできそうなので、文章にまとめてみました。ネット上には、他にも研究生活に関するさまざまなアドバイスが転がっているので、ぜひ参考にしてみてください。

11 月 14 日追記; この記事では論文を書くことを中心に博士生活を紹介しました。研究を人に認めてもらうテクニカルな難しさだけいたずらにハイライトしてしまったかなぁと少し反省しています。 僕自身は、しっかりしたシステムを組み上げる実装がとても好きで、研究プロジェクトごとのソフトウェアの実装規模も他の人と比べると大きめだと思います。だからこそ、自分には実装を小さくするよう言い聞かせてきました。

また、より大きな視点が必要となるテーマ選びについては何も触れませんでしたが、それは、僕も全くのノーヒントで研究を始めたから、どうすればやりたいテーマが見つかるのかよく分からないからです。ただ、博士号を取るまでに書く各論は、博論のテーマに至る道筋の切片のようなところがあると思います。僕の場合、フルペーパーを 1 本書いたら自分の立脚点ができて、2 本書いたらそれらを補助線にして博論テーマが見えた気がしています。(まだ本当に書けるのか分からないけど。)