Hatena Developer Blog

はてな開発者ブログ

Coursera を利用した機械学習勉強会

はてなアプリケーションエンジニアの id:takuya-a です。

はてなでは、 BrandSafe はてな や、はてなブックマーク のカテゴリ分類など、様々なところで機械学習を利用していますが、今月の初めより、 Coursera機械学習のコースを参加者全員が修了する ことを目的とした勉強会を開催しています。

今回は、その機械学習勉強会についてご紹介します。

機械学習の学習をするうえでの課題

機械学習は、独力で勉強するのが難しい分野です。 教科書を一人で読み通すのは大変でしょうし、体系的な知識を得るのはさらに困難です。

各地で機械学習の輪読会が開かれているようですが、

  • 発表の準備が大変
  • 参加者に詳しい人がいないと、わからないまま終わってしまう箇所がある
  • 参加者の理解度を測るのが難しい
  • 発表を聞いているだけだと、身につかない(実体験として)

といった課題があります。その点、 Coursera だと

  • 発表の準備が必要ない
  • 各分野のトップランナーによる講義なので、質が担保されている
  • 毎週課題が出て理解度をチェックされる
  • 課題を通して自分で手を動かすことで、より理解が深まる

という利点があります。

Coursera の機械学習コースについて

Web サイトは以下の場所で公開されています。

このコースには、以下のような特徴があります。

  • 講義のクオリティが高い(説明が異常にわかりやすい)
  • 機械学習を体系的に学べる
  • サイトやアプリが使いやすい(日本語字幕あり)
  • 実践的な機械学習アルゴリズムを実装できるようになる

スタンフォード大学の機械学習のコースで、今期は 11 週の講義があります。 Andrew Ng 先生という、機械学習の第一人者の講義が無料で聴けます。 ログインが必要ですが、 Facebook アカウントでもサインアップできます。

回帰問題(線形回帰)に始まり、分類(ロジスティック回帰、SVMなど)、クラスタリング(KMeans)、次元削減(PCA)など、機械学習のトピックが一通り抑えられています。 機械学習の基礎を体系的に学べることで、より発展的な手法を学ぶ際にも、適切な教材を見つけて学習していくことができるでしょう。

毎週の課題は、 Quiz とよばれる 4 択式のものと、 Assignment というプログラミング課題があります。 プログラミング課題では Octave という、 MATLAB クローンの言語を使います(無料で使えます)。 まだ 3 週目ですが、すでにロジスティック回帰を使った分類の実装が課題になっています。ただ、スクラッチで組む必要はなく、ある程度用意されたテンプレートを使うことで、講義に出てくる知識だけで無理なく実装できるようになっています。

教材はすべてインターネット上にあるので、いつでもどこでも機械学習の勉強ができます。 iOS/Android 用のアプリもあって、講義の動画をスマホで見ることもでき、とても便利です。 毎週の講義のレジュメが Wiki ページ(要ログイン)に公開されていて、復習しやすいのもポイントです。

勉強会の形式

今のところ、以下のような形で開催しています。

  • 毎週水曜日に集まって、全員で講義ビデオを見る
  • 適宜、ひっかかったところや疑問点について議論する
  • 自分の理解を言い合う
  • はてな東京オフィス・京都オフィスで同時開催(Web 会議システムで接続)
  • 外部参加者・学生も歓迎
  • 忙しいとき、予定があるときは自習でも可

Coursera のような MOOC では、最後まで終了する率が非常に低いそうです。 一人でやっていても、特に、期間中に忙しい週があったりすると挫折しがちです。 必ずしも地理的に同じ場所に集まる必要はないと思うのですが、みんなで一緒にやることが重要だと感じていて、なかなか一人ではモチベーションが維持できず続けられない人(自分のことです)でも頑張れるというところがあります。

情報共有の工夫

また、勉強会全体での周知や情報共有、議論のために、 Slack と GitHub issues を利用しています。

Slack

この機械学習勉強会には、外部の学生も参加しています(といっても元インターンですが)。 会社で使っている Slack のチームには社外秘の情報も流れているため、機械学習勉強会用のチームを用意しました。

講義関係の話をすることで、理解が深まることはもちろん、雑談などを通してみんなで参加しているという一体感を形成する上でも一役買っていると思っています。

GitHub issues

Slack だと流れてしまうので、ある程度まとまった文章や数式を書きたいときのために、GitHub issues を使用しています。

講義や課題でつまづきそうなポイント(たとえば Octave のインストールなど)を共有することができます。

まだそれほど書き込みがないのですが、パブリックなリポジトリにあるので、これを見たあなたもぜひ Coursera のコースに参加して、議論に参加してください!

一緒に機械学習を勉強しましょう!

機械学習でサービスを改善していけるエンジニアを募集しています

はてなでは機械学習などの技術でサービスを改善していけるエンジニアを募集しています。 応募をお待ちしています!