研究テーマを選ぶ
気になって仕方がないもの、自分が常日頃からやりたいと思う研究テーマがあるならそれをまず第一の選択に据える。 もしやりたいことが分からない、もしくは複数思い浮かぶ(こっちの方が大半)場合、とりあえず少しでも興味のある分野の情報を調べてみる。
しかし、やりたいことが定まったとしてそれをどう研究テーマレベルに落とし込むかは別の話
情報を浅く広く集める
- 広域な網羅的なサーベイを読む
- あるトピックを少しでも面白いと思ったら、その狭い領域のサーベイを読む
- NeurlIPS, ICMLなどのトップカンファレンスの中から、自分が興味のある分野の論文のリストを取得し、そのオーラルやabstractionだけをメモする。
- これらの中でデータセットや指標についても調査する
ここまでの作業で、まとめたメモを見返すと共通点がわかる。
問いを立てる
例えば、LLMのhallucinationに興味があるとする
- 分類・分析: hallucinationにはどんな種類がある?
- 原因: なぜ起きる?
- 解決策の提案: どうすれば減らせる? 制御はできる?
- 評価: どう計測すればいいのか?
- 比較検証: 色々あるうちのどの手法がどの条件で効果的なのか
それぞれの問いに対して、答えることがそのまま研究テーマとなる
制約を考える
研究テーマとは別に、外部の課題、自分の強みやリソースを考慮してテーマのサイズを変える
- 数学に強みがあるなら自分でアルゴリズムを考案してみる
- データセットが存在していないなら取り組むのは難しい
- 研究室のリソース以上のGPUが必要なら厳しい
- 金融や医療など特定ドメインに興味や知識があるならそのドメインに特化させてみる
など。方向性は変えずに、テーマの規模感や微妙な方向性を調整する。
考えたテーマをまとめる
ここまでの問いと制約を組み合わせてテーマを一文でまとめてそれを研究テーマとする
あとは走りながら考えてみる。多くの場合テーマは研究中にさらに磨かれていくので興味を持った実験の論文を読んで、コードを動かしていく
研究を進める
コードを動かしてみて評価を回す。スコアが上がったら成果が出ている証拠 指標だけではなく、実際にデモを動かしつつ様子を見て改善を確認したらチェックポイントとして記録していく(git commitを使う)