takuti.me ABOUT

2017-03-31

修士課程で機械学習が専門ではない指導教員の下で機械学習を学ぶために

会津大学から東大情報理工へ進学して早2年、この春無事に修士号をゲットした。めでたい。

この2年間はこれまでの人生で最も濃く、楽しい時間だった。関わったすべてのみなさんに感謝したい。積もる話は山ほどあるけど、ここでは研究活動でこの2年間を振り返ってみる。

修士課程で僕が置かれた状況は標題の通りで、この分野の人気が高まっている昨今、卒業論文や修士論文のテーマ設定に際して同じような境遇のひとは少なくないと思う。この記事がひとつの事例として、そんなみなさんの参考になれば。

※個人の経験を述べるだけで、『機械学習を学ぶ際のオススメテキスト』とか『数学の知識はこれさえあればOK!』といった内容ではない。

TL;DR

  • 大学院の外に“先生”を求める
  • 上記の経験から「自分はある程度“正しい”方向に進んでいる」ということを定期的に実感することが重要
  • とはいえ、指導教員の協力は必須

どんな2年間だったか

M1

M2

テーマを決めるまでの流れ

次の3ステップで進めた:

  1. 分野全体を俯瞰する
    • 自分の場合は機械学習サマースクールへの参加がこれ
    • 関連する講義の聴講や、ネットに上がっているスライド等を眺めるのも良かった
  2. ある程度“世界地図”ができたらサーベイを行う
  3. 締め切りドリブンで何らかの成果をコンスタントに出す
    • 常に次の学会の投稿締め切りを見据える

一度実装すれば、独自の入力データでの実験やアルゴリズムの改良、性能評価もすぐにできる。数式の理解が深まるのもよい。手を動かすことはとても大切で、論文をひたすら“消費”しているだけでテーマがひらめくことはまずない。

ただ、論文を読んで実装する日々はとても楽しいので、油断すると興味がどんどん発散してしまい、テーマが具体化せず、自分の論文が書けない。そこで僕は常にどこかの学会の投稿締め切りを見据えて、締め切りドリブンで、小さくてもいいから何らかの成果を定期的にアウトプットするようにしていた。

ここで大切なのは学会の開催情報をウォッチすること。指導教員と専門分野が異なると「この学会に出してみようか」みたいな話は降ってこないので自分で探して投稿する。国内会議の情報は人工知能学会のメーリングリストから、国際会議は WikiCFP から。注意事項として、たとえ小さな成果でも、プライドを捨ててよくわからない会議に投稿するのは避ける。どうせ質の低いフィードバックしか得られない。少なくともIEEE, ACMの会議であることが条件。

機械学習サマースクールが良かった

合格エントリにも書いたとおり、大学院入学前の段階で、自分のやりたい分野(機械学習)と指導教員の専門分野がズレていることは分かっていた。もちろん相談には乗ってもらえるが、サーベイや最終的なテーマ設定は自力で行わなければならない。

そんな中、入学直後に幸いにも機械学習サマースクール (MLSS) の参加募集を見かけ、この分野を俯瞰する絶好の機会だと思って応募した。(入学直後の他大学出身の学生の推薦書を書かされる先生の気持ち…。)

その後無事にMLSS参加が決定し、M1の最高のタイミングで最高の夏を京都で過ごした

  • 「機械学習全体のトレンドはどこにあるのか?」
  • 「この分野はいま本当にディープラーニング一色なのか?」

といった漠然とした疑問を抱えて参加したMLSSで得たものの大きさは計り知れない。

これまで何となく「機械学習について研究できれば…」と考えていた自分に、ストリームデータ解析、Scalable machine learning という心ときめく分野の存在を示してくれたのもMLSSだった。(『ストリームデータ解析の世界』)

さらに、『機械学習とは最適化問題を解くことにほかならない』という事実を理解したのもこのタイミングだった。これに気がつくと、いろいろな手法がぐっと身近に感じられるようになる。

そして何より、MLSSで出会った世界中の研究者・学生たちの熱量がその先のモチベーションになった。

MLSSでの経験に加え、3ヶ月ほどかけて行ったサーベイ作業を経て、M1の秋頃に自分の研究テーマを機械学習の中でも特に『情報推薦』と『オンラインアルゴリズム』に定めたのであった。

研究テーマの“正しさ”を確認するために学会やインターンに行く

サーベイやMLSS参加から大まかなテーマが見えてくると、次に関連する学会発表やインターンの機会を探した。研究者未満のひよっこ学生が自力でテーマを具現化するためには、「自分はある程度“正しい”方角に進んでいるという安心感が何より重要なのだ と声を大にして言いたい。“正しさ”とはすなわち、

  • 極端に時代遅れなテーマではないか
  • 先行研究や提案手法に関して、致命的な誤解をしていないか
  • アプリケーションとして、現実のニーズを捉えられているか

ということ。これらは研究発表やインターンを通してある程度推し量ることができる。

僕は楽天技術研究所, Treasure Data, Silver Egg Technology の計3社に2ヶ月間ずつインターンとして受け入れていただいた。各社でお世話になった方々には感謝してもしきれない。本当にありがとうございました。

そして、インターンの傍らで修士課程在籍中に執筆、発表した原稿は国内会議3本、査読付き国際会議2本の計5本。詳細は ABOUT より、どうぞ。

共同研究のような話にはならなかったけど、インターンで Real-world machine learning に触れて、そこで得た問題意識から論文の Introduction, Experiment, Discussion を組み立てる、という好循環が自分の中にあった。

学会発表はいずれも非常に有意義で、「今更その方向性は古いのでは…」という厳しいコメントを頂いたこともあれば、企業の研究者が何人も食いついてくれたこともあった。その都度関連論文を読み漁り、方向修正をした。また、Reject された RecSys2016 も含め、査読付き国際会議のレビューコメントは無償で得られる最高のフィードバックだった。

そしてそれまでの学会発表、インターン経験の集大成として修論を執筆し、無事に修了したのでした。

振り返り

  • 指導教員が味方になってくれることが大前提で、その点自分はとても幸運だった
    • 学会とか、先生の協力無しでは行けない
    • 専門分野が異なるとはいえ、遠からず近からずなところではあったので、かなり本質的な部分でのフィードバック、指導までしていただいた実感がある
  • 精度やスループットなど様々な面で、サーベイから思いつく研究テーマと実アプリケーションでの応用可能性のギャップはヤバいので、機械学習の応用研究は企業(で|と)やるべきだと強く思う
  • 好き勝手に修士論文を書いたけど、やっぱり細部はツッコミどころ満載で、専門家から見ると「やってみた」感の強い安直なテーマに終わってしまった点はふつうに努力不足

以上、僕の修士課程2年間でした。

もちろん自身のバックグラウンドや指導教員の指導方針など、様々な要因によって状況は大きく異なる。また、僕は卒論も好き勝手なテーマで自由に執筆させていただいたため、ここまで書いた研究への取り組み方がどれだけ一般的なのか、それは知らない。しかし個人的にはこの2年間、与えられた(手に入れた?)環境の中でできることは8割くらいやり切ったかな、という感じ。至らなかった点も含め、得たものを今後につなげていくことができれば。

まぁいろいろとあったけど、この2年間で本当に大切だと思ったのは運動と睡眠、そして消極的に、それでも着実に書き続けるという姿勢を維持すること、それだけ。それさえできれば、あとはどこへでも行ける。

これから

このご時世、機械学習ほど実世界応用が身近な研究分野も珍しい。なので大学院に入学する前からずっと、修了後はまず一度企業でエンジニアとして "Real-world machine learning" に向き合おうと決めていた。そして、気が向いたら数年後にどこか他の国でPh.D.コースに入ろうかなぁ、などとゆるく考えている。予定は未定だけど。

そんなわけで、(地味に2月からアルバイトとしてお世話になっていましたが)ひとまず4月からは Treasure Data の東京オフィスで Data Science Engineer になります。よろしくお願いします。