機械学習サマースクールで勉強してきました

こんにちは、Zucks Ad Networkの開発をしている @hagino3000 です。8月の後半にMachine Learning Summer School 2015 Kyoto (以降MLSSと表記)に参加してきました。世界各国の研究者と交流しつつ刺激的な講義を受けるも、内容が難しくて毎晩悲壮な気持ちで復習に励む日々を送っていました。以下、MLSSの内容と講義の感想をいくつか。

mlss | Machine Learning Summer School Kyoto 2015

f:id:hagino_3000:20150914140100j:plain

モチベーション

機械学習はネット広告業界で広く使われています。Zucks Ad Networkにおいても配信する広告の選択ロジックに機械学習を利用していますが、さらに他の処理についても適用できないか試行錯誤している所です。今回はデータ解析チームの底上げ、つまり勉強と新たなネタ探しのためにZucks Ad Networkチームのa_macbeeと二人で参加してきました。

MLSSの内容

期間は2週間。毎日のスケジュールは1コマ90分で午前に2コマ、午後に3コマの講義もしくはポスターセッション。

講義は機械学習の各領域について理論から実装まで幅広く採択されていて、確率集中不等式の証明を延々と続ける物から、いかに機械学習を使ったシステムをスケールさせるかという実践的な話まで。対象は修士・博士課程の学生、学術界、企業研究者との事です。*1 講師陣は豪華な顔ぶれで、「講師陣が凄いから」という理由で海外から日本のMLSSに来ている人もいました。*2

講義は全て英語、それを朝の8:30から19:00まで受け続けるという経験は今まで無かったため、個人的に相当の負荷でした。翻訳に脳の処理能力の半分をもっていかれるため、スライドの数式を読んでいる間にどんどん話についていけなくなる悪循環。毎晩の復習で理解不足を補うスタイルをとっていましたが、復習が間にあわず後半は睡眠不足に。

コーヒーブレイク

講義の合間に30分のコーヒーブレイクがあり、講堂の外で立ち話タイム。参加者の国籍は様々で日本人は半分もいないため自然と英会話の実地訓練となります。

自分は半分しか理解できなかった講義の後に「だいたい今の講義は理解できたよ」と言われたり、元Amazonのエンジニアには「1~2万台のマシンで機械学習タスクを回していたよ」という話を聞いたり、他の参加者との圧倒的な実力差が露になる時間でもありました。私は夕方には英語コミュ力を使い果してしまい、日本人っぽい人に話しかけて回復を図っていました。

最初は知人がいないので手当たり次第に声をかけるしかなかったのですが、徐々に知り合いが増えて、仕事に関係する研究者を紹介してもらえたりするのが面白かったです。ネット広告配信系の同業者は見あたりませんでした。

琴線に触れた講義をいくつか

Convex Optimization

MITのConvex Optimization Short Courseの内容。

多くの最適化問題は解析的に解けないしNP困難、しかし目的関数と制約が共に凸関数の場合は凸最適化問題として解ける、これは美しくて、多項式時間で解けるし、グローバルな解が求まる etc. という導入で始まる情熱的な講義。いかに問題を凸最適化の形の落し込むか、そして凸最適化をどうプログラムで解くかという流れで、最後は適用事例をいくつか。

デモは全変動最小化による画像復元や広告配信、どれもIPython Notebook形式になっていて手元で動かせて良かった。Disciplined Convex Programmingはお手軽凸最適化ソルバーとして使いやすそう。

講師のBoyd先生は相当の有名人だそうで、随所に挟まれるジョークと生徒の質問を I don’t know. Next!! と高速に捌いていく様は見ていて面白い。他の講師にもネタにされるぐらいなのでBoyd先生の名前は覚えておいた方が良さそう。

Scalable Machine Learning

ハードウェアの制約の元で、機械学習のアルゴリズムをいかに高速化させるか、またそれを使ったシステムをスケールさせる手法についての話。エンジニア的にはかなり面白い講義だったが、そうじゃない人は辛そうでした。

序盤は「アルゴリズムはシンプルでもメモリにランダムアクセスすると遅い、L1L2キャッシュヒット率を最大化させよう」という話、違う世界だなーと思いながら聞いていたらその後に「スポットインスタンス使え、予めスポットインスタンスで走らせる事を想定して設計しろ」という話が始まったので懺悔しながら真剣に聞きました。使いこなせてなくてすみません。複数のマシンで機械学習モデルの訓練をする際に、パラメータの更新がボトルネックになるのをどうするか、という話は機械学習でなくとも有用な話。あとNetflixすごい。

講義はもとより、Smola先生は「今こんな感じのシステム運用してるんだけど、ここの速度を上げるにはどうしたら良い?」という極めてPracticalな質問にも答えてくれたので非常に頼もしい。

資料は公開されなかったが、同じタイトルの講義資料はネット上でいくつか見つかる。

Topics in Selective Inference

仮説検定の歴史から入ったので古典的な話かと思いきや、False Discovery Rate(FDR)やPost Selective Inferenceといった仮説検定でミスを犯さないための新しい手法の解説。仮説検定の枠組みはもう進歩していないと思っていたので新鮮な気持ちで聞けました、『ダメな統計学』には続きがあったのかと。(Post Selective Inferenceは2015年の論文)

機械学習においては、目的変数に寄与しない素性にウェイトを付けてしまう事をType1 Errorとし、weightベクトルからFDRを計算する事で、Type1 Errorをどの程度含んでいるか計算する事ができる、というのはなるほどなあと。

Stochastic Optimization

機械学習プロフェッショナルシリーズの「確率的最適化」を出されたばかりの鈴木大慈先生による講義。Boyd先生の講義に無かった、凸最適化問題をいかに解くかという話。

凸関数の性質に始まり、随所に証明を挟みつつ、各種勾配降下法のアルゴリズムを説明。内容は「確率的最適化」の本に沿っていたが、3コマ(4.5時間)で本の80%を終らせるスピードで、途中で振り落とされてしまった。仕事では実験はPythonを使っているが、本番は科学技術計算ライブラリの少ない言語を使うので、自力で実装するためにもこういった講義は助かります。

Submodular Functions

よさそう(小並感)

まとめ

研究者でもない唯のエンジニアでもなんとかなりました。参加して良かった点を挙げると

  • 普段の環境から隔離されて、勉強に専念できる
  • 自分の知らなかった領域について、インデックスを一気に張れる
  • 夜は気になる人に声をかけて四条方面に繰り出せる
  • 現場の課題について研究者とディスカッションする事で気付きが得られる

といった所でしょうか。演習時間が無かったので、気になった所は後で手を動かすなりしないと身につかないだろうなと感じています。まだまだ学んだ内容の理解が浅いのでしばらく基礎に立ち戻りつつ復習に専念します。*3

*1:大学の数学は前提知識の様でした。確率論、線形代数は当然として集合、位相、グラフ理論あたりも。

*2:MLSS自体は世界各地で年に数回開催されている

*3:早速「集合と位相」/内田 伏一を注文しました