Courseraでは様々な大学や団体が提供している講座をオンラインで受講できる。その中でもスタンフォード大学が提供している機械学習に関する講座はよく知られている講座の一つです。サイトによるとこれまで470万人が受講しているようです。

今回は余暇の時間を使って講座を修了したので印象に残った点を書き残して置きたいと思います。

事前知識と準備

人気のコースということで修了した人のブログ記事などを読み、線形代数の復習をする事に決める。書店などでも数学学習についての本や、プログラマ向けの数学の書籍やムックは多く、その中からいくつかを手にとりました。かんたんに目を通してみると数式の理解に不安があると思い、この書籍の中の演習問題を実際に解いて答え合わせをするという事を行って行列計算を復習しました。

振り返ってみると、講座の中で直接必要になる知識では無かったのです。ただ手を動かして問題を説いておいたおかげで行列を頭でイメージしやすくなり、それが講座の理解をスムーズにした部分はありました。個人的には事前準備をした事はプラスになったと思いますが、特に準備せずに受講することも可能だと思います。

視聴環境

講義のビデオは日本語でも英語でも字幕を表示でき、トランスクリプトもあります。ごく一部、翻訳に違和感がある点などもありますが基本的に日本語字幕で視聴できます。スキマ時間での視聴にはモバイルアプリがとても便利でした。

各動画には数回の選択式のクイズがあり、また各週には5問中、4問正解で合格となるクイズがあります。 動画の内容を理解した上で、教材を見返せば合格できる内容になっています。クイズは3回不合格になると次の受験まで8時間の待機時間がある点だけは注意です。

段階的に発展していく序盤

全11週60時間程度の講座は大きく分けて、教師あり学習、教師なし学習、大規模な機械学習システムのデザインというような流れで進みます。その中では個別の手法、線形回帰、ロジスティック回帰、ニューラルネットワークなどよく知られた手法の理論の解説と実装を繰り返していく流れになります。 さまざまなブログ記事でも触れられていますが、講師のAndrew Ng先生は込み入った部分については「この部分は理解できなくても大丈夫」と明確に言ってくれます。また数学的な証明などは講座の範囲外として、このアルゴリズムを実装するにはこの式を使えば良いというショートカットを提供してくれます。

講座で最初に取り扱う線形回帰とロジスティック回帰の2つの手法を起点として他の手法も解説していく事が多く、この2つの手法の解説にはじっくり時間を割いているように感じました。講義でいうと3周目くらいが終わる頃には時間配分的には半分近い分量になっているように感じます。そしてニューラルネットワークが出てくると話題の転換のペースも上がってくるのでまずは線形回帰、ロジスティック回帰を頑張って理解し、ニューラルネットワークが始まる辺りがよい目標になるように思います。

応用的な話題を扱う終盤

講座の終盤では応用的な話題として協調フィルタリングによるレコメンデーションシステム、写真から文字を認識するOCRシステムなどを取り扱います。どちらも利用者目線でも開発者目線でも身近な例です。一方でこれらを構築する経験というのは希少です。 あくまでシンプルな例ではあるものの、元となるデータからスタートしてどのように処理を行うのかを順を追って解説するというのは興味深く面白い講義でした。

実際に機械学習を利用したシステムを設計する際もパイプラインの設計や学習データの確保など同様の流れを行う事になるので、複数の題材で流れに沿って解説をするというのはよい内容だと思います。

プログラミング課題のテストケースが助けに

この講座にはOctaveによるプログラミング課題があります。 想定所要時間3時間の課題が2週から9週までの8回分で、それなりの所要時間です。

実際に記述する内容は数行から数十行程度で、課題が記載されたPDFや講義のスライドにあった数式をOctaveにどのように再現していくかという形です。 Octave上でのデバッギングなどに慣れない最初の課題は5時間くらいかかってしまいましたが、慣れてくると所要時間の半分程度で終わるようになってきました。

コードが出来上がったら提出用のスクリプトを実行すると採点結果が表示されます。この採点は難度失敗しても待機時間などは発生しないので安心して実行できます。

動かないコードをフォーラムに投稿して質問するような事が禁止されており、詰まった時にどうやって解消するのかは不安がありました。ですが、実際はFAQやリソースが整備されておりそれらを参照すれば解消できるようになっていました。

特に便利だったのがテストケースとチュートリアルです。実装する課題はすべて関数化されているので、テストデータと結果、場合によっては中間変数の内容がテストケースとして提供されています。これらを見ることで具体的な挙動や間違っている部分を理解する事が出来ました。

詰まってしまう事もあるのですが、その際には基本的な見落としがある事が多く、プログラミング課題で試行錯誤する中で実装しようとしているロジックの理解が深まるように設計されているのではと思います。

認定証の発行

講座の受講は無料でも可能ですが、認定証の発行は有料となっています。今回は休暇中に完了したかった事もあり最初から料金を支払って進めました。受講完了後に料金を支払って認定証を発行する事もできるはずです。

まとめ

講座を通じて、機械学習が独立した技術領域というより、ソフトウェアに実装されるアルゴリズム、デザインの一つであるような感覚を持ちました。概要は理解していても、理論や実装の解説を見ることで理解の解像度が劇的に上がったと感じます。講座が終わってみると、これまで関わったシステムやプロジェクトについて思い返す事が多々ありました。

この講座は公開されてから時間が立っています、またディープラーニングについては取り扱っていません。機械学習の入門としては今でも非常に優れた教材で受講する価値があると思います。トータルの所要時間は60時間程度ですが、YouTubeやNetflixを見ている時間を一定程度振り向ければカジュアルに受講できる分量かなと思いました。(自分は受講期間中は以前ほどYouTubeなどの配信を見なくなりました)

また講師のAndew Ng先生の解説スタイルが良かったでの他の講義も受講してみようという気になりました。やはり人気のあるコンテンツだけあって、素晴らしい内容でした。この講座が気になっている方は、受講してみることをおすすめします。