社会実装において気をつけていること

シンプルな手法を選ぶ

自分を含む多くの研究者に共通していることだと思うけど、最新のトップ会議の論文は採択されてもあまり信用していない。特に今年出された、ごりごりテクニックが盛られているような論文はまず手を出さない。simple yet effectiveみたいな文言もあまり参考にしない。どうせそこまでシンプルでない。YOLOやStyleGANのような、著者が異常とも言えるような執念をもって精度改善に取り組んでいる手法もたまにあってそういうのは検討するが、ほぼ例外扱いでよいと思う。PoCを回す際には、2, 3年前くらいのちょっと枯れつつあるような手法を選択する。

シンプルであればあるほど良い。シンプルであると、後から実用上の拡張が要請された場合でも応えやすくなる。ただしシンプルであるというのは考えられてないことを意味するのではなく、きちんとした理論的基盤に立った上でこね回すと最終的にシンプルな式になって、直感的にも整合性が取れている、みたいなのが良い。最新の論文でもそういう綺麗だなーと思うやつは検討材料に入る。

ChatGPT、Gemini、Claudeに質問すると、なんかいろいろ枝を生やしたようなキメラ手法を提案してくる。参考にはするがそのまま選択することはまずない。本質っぽいなあと思うものを抽出して大して面白くない研究に変換する。言われてみれば単純で性能は伸びるだろうけど、面白くないなあ、思いつけば誰だってできるじゃん、そんな感想が査読者から出てくるだろうなあという研究であると良い。そういう意味ではデータや計算機でごり押す系の研究もそれなりに好き。SO(3)対称性?データ拡張でええやろ!割り切っててそれはそれで良い。

一歩一歩研究をする

世に出回っている研究についてのアドバイスの多くは、だいたい発想をフル回転させて面白い研究をしよう、という内容に帰着される。素人発想、玄人実行。云々。論文を書いたり読んだりする上ではむちゃ重要であるが、社会実装という意味ではそこまで重要ではない。速度や精度が劇的に改善されたり、解けない問題が解けるようになる、ということはほぼないからだ。というか、役に立つ研究の多くは学術的には面白くない。シンプルだが荒削りな研究を見つけて、たぶん意図としてはこう言いたいんだろうなと著者の心を読みながら、ならこの場合はこれでええやろと枝をちょきちょき剪定してmarginalな改善を積み重ねていくのは、面白い研究ではないが、面白くないことをきちんと一歩一歩進めるのも一つの才能だと思ってやることにしている。

自我を出さない

marginalな改善を積み重ねているとき、自分は、他の研究者もたぶん同じような改善するだろうな、みたいな気持ちになって改善している。そこにオリジナリティはあまり出さない。例えば自分は博士課程ではMarkov Random Fieldという、今からすると古文書みたいな研究をしていた。別にこの手法を入れようと思えば適当に導入して、Revisiting〜というタイトルで発表することもできなくもないが、本流ではないのでやらない。

こういう、なんか少し自己主張したくなる、系の改良を、自分は自我を出すと表現している。論文を出して採択されて招待講演で発表するのは気持ちがいいが、それで終わる可能性が高くなる。あんま自我を出さないほうが社会実装としては早い気がしている。

ある程度全部やる

良い手法ができた、リポジトリにドラフトを置いておくのであとはエンジニアチームよろしくお願いします。場合にもよるけどそれよりはデプロイまである程度責任を持って実装したほうが上手くいく率が高いように感じる。出産直後は異常に負担がかかりそういう余裕が無くなってしまったのが心残りであるが、本来はやるのが良い。たまにはC++/Rustで低レベルレイヤーを書いたり、フロントエンドを弄って遊ぶのも良い。研究者は頭が良いんだから全部できるやろ!👍の精神である。コッカラッス!