平凡なソフトウェアエンジニアが論文執筆を目指す 第一回

3 min read読了の目安(約3200字

平凡なソフトウェアエンジニアが論文執筆を目指す 第一回

趣味、もしくは会社で論文を書くことを目指して、
まずは、一般的な論文の執筆について調べてみました。

  • 論文を書くメリット
  • どういう論文を書くべきか?
  • 研究をするコツ

筆者のスペックは、学士論文、修士論文、WorkshopだったかProceeding投稿だったかを二本やったくらいで、
特にトップカンファレンスに論文を投稿した経験はない。
それに近い読者には役立つ記事になると思います。

この記事の内容

  • ソフトウェアエンジニアが論文を書くメリットは転職で履歴書が少し光るくらい(?)
  • 論文の切り口は色々とあるので、イメージに近い論文を探して、それを目指してみてもいいかも。
  • 研究を始めるなら、論文の骨子を先に作る、面白い研究を探し、面白さに納得するのが、重要なファーストステップ。

論文を執筆するメリット

論文を書くのにはそれなりの工数がかかるので、
まず、論文を執筆するメリットについて考えたい。

まず、論文を書くと成果になり、履歴書に書くことができる。
また、自分が見つけた知見を再現できる形で残すことで、
他の誰かに使ってもらい世の中にインパクトを与えることができる。

金銭的なメリットとしてはどのようなことがあるだろうか?
特許と比べると、金銭的なメリットはない。
また、論文から論文を引用してもらえるが、論文のアルゴリズムを使ったサービスから、
引用されることはないので、世の中の役には立っても感謝されないし、
例えば、研究をするからと行ってクラウドファンディングをするのも、
特殊な例を除けば難しいと予想できる。
研究ができると、大きめのIT企業で重宝される可能性があり、
年収が上がるという可能性は考えられるし、Research系のポジションへも採用されやすくなるかもしれない。

まぁ、といっても、保証はないし、やらなければならないものでもない。
論文を書くか書かないかは、純粋に論文を書くことが楽しいかどうか、
自分の名前で公式な場に知見を残したいか、といった問にYesならやるべきなのかも。

私は、論文を書くことで、自分の思考にどういう変化が起きるのか興味があって、
副産物として、転職していいポジションをゲットできればまぁラッキーくらいな考えで、
論文執筆をやりたいと思っています。

どういう論文を書きたいか決める。

「新 企業の研究者を目指す皆さんへ」では、論文では、事実、法則、方法の提示をするということが述べられています。
論文をいくつか、読んで考えてみた感じだと、これら複数が一つの論文に含まれていることもある。
事実を提示した論文のいい例としては、Alpha Go、法則、方法としては挙げられていませんでした。
色々と読んでみたところ、コンピュータ分野では、方法の論文が多いようですし、
おそらく、方法、事実の論文はエンジニアリング的なことをしながら書きやすそうです。

私としては、事実(やってみた論文)を作るのが最もフィットしそうなので、
まずはやってみた論文に挑戦したいところです。

やってみた(作ってみた)論文としては、Alpha Go以外にも、

などがあり、こういう応用アプリ系+インパクトのあるデモのセットが私のアウトプットイメージなりそうです。

また、効率化とかも好きなので、方法論の論文を書くのも良さそうです。
例えば、次の論文はInstance Segmentationの高品質なデータセット構築を提案している論文で、
デプスカメラとReconstructionアルゴリズムで、数日で100万物体のアノテーションを実現しています。

法則の論文は、最も縁が無いものだと考えています。

まずは、自分が書いてみたい論文を探して、
その論文を目指してやっていくのがいいかもしれません。

研究をする上でのコツ

「新 企業の研究者を目指す皆さんへ」という本の前半では、
研究者として仕事をする上でのTipsについてさらっと触れられています。

特に、次の二点の重要性は前半で何度も述べられており、
これらについて掘り下げたい。

  • 良い問題をさがすこと
  • 研究前に論文の骨子を作ること

良い問題を探すためのヒント

良い研究をすることの重要性はこの本では何度も述べられていた。
研究者であれば、本数を出すことはキャリア上、価値あるだろうが、
本業が研究でない人間が本数を出す価値は(過程として価値はあれど)結果としては意味はないので、
良い問題を解くことは更に重要だと思います。

本を読んでいて見つけた良い問題のヒントを列挙します。
この中からしっくりくるものを自分の基準とすれば良さそうです。
いい研究テーマを超まとめると2つ。まぁ、当たり前のことですね。

  • 現実の問題に基づいていて、実際に役に立つ。
  • 難度がほどよい。(難しすぎず、簡単過ぎず)

その他、「新 企業の研究者を目指す皆さんへ」から抜粋したメモ。

  • 金本先生の話
    • 面白い研究をすると、面白いプレゼンができる(かもしれない)
    • デモをしたら、買いたいと言われるようなデモができる研究をする。
      • デモ≒GIF動画。確かにGIF動画があると、Githubリポジトリも非常に高印象。
      • GIF動画のイメージを思い浮かべながら、作り、それでどう評価されるか想像する。
    • good research is based on real phenomena or problem, makes difference
    • 買いたいと思うには、これにも使える、あれにも使えるというイメージが湧くことが一つの基準
  • 企業の研究テーマは必要だからやる。この時点で、real problemに基づき、makes differenceできる。
    • なので研究を依頼されて断る理由はない
  • 難度が程よい問題を探す
    • 世の中の問題は超難しいか、解いても意味がないかがほとんど。なので注意

研究前に論文の骨子を作るメリット

色々な人が、研究をする前に論文を書くことの重要性を主張している。
「新 企業の研究者を目指す皆さんへ」でも同様でした。

このことについて少し考えてみる。
私の少ない経験に基づいてだが、論文の構成は次のようになっていることが多かった。

  • Introduction
    • 取り組む問題領域の、活用分野の話
    • 問題領域の問題点と難しさの説明
    • 解法、評価方法
    • その他Contributionも一緒に列挙する
  • Related Work
  • ...

Introductionにおいて、研究の意義を説明することが必要で、これを書くことで、
研究の良さを頭の中から出して、可視化することができる。
頭の中でのみ考えるより、研究の良さを明確にできる効果がありそうで、
論文の骨子を先に書く。という習慣は確かに良さそうですし、
Introductionを先に書く、のでもいいかもしれません。