y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

Coursera の機械学習コースを受講しました

Andrew Ng 先生による Coursera の機械学習コースを受講しました。受講期間は 1/25 から 4/17 でしたが、少しずつ前倒しして進めた結果、3/20 に終えることができました。
www.coursera.org

機械学習の基本的なアルゴリズムをざっと学べる内容で、数学的に平易な説明になるよう配慮されている印象を持ちました。上記のリンク先でシラバスを確認できます。プログラミングの課題をこなしながら進めていく形式で、特にエンジニアにとっては、楽しみながら勉強できるのではないでしょうか。アルゴリズムを学べるほか、アルゴリズムを問題に適用する際のノウハウ、機械学習の適用例のデモなども含まれていて、面白い内容でした。

講義は Week 1 から Week 11 まで全 11 週の構成です。週ごとに、授業内容を動画で学び、選択式の Quiz とプログラミングの課題 (Assignment) をこなしていく形式です。課題には締切日が設定されており、最後にまとめて・・・ということはできません。逆に、どんどん先行して進めていくことは可能で、時間のあるときに進めて余裕を作っておけば、後が楽になります。課題が設定されているのは Week 2 から Week 9 までで、Week 1, 10, 11 には課題はありません。

各週の講義動画の長さを調べてみると、以下のグラフのとおりでした。私は、第一週目のボリュームに「これは動画を見るだけでも結構な分量だなぁ」と挫けそうになったのですが*1、このように講義動画の長さは一週目が最長で、全体的には二時間を超えない程度のボリュームになっています。

講義動画にはボランティアの方によって日本語の字幕が付けられており、リスニングが苦手な人でも日本語で受講できます*2。その一方で、クイズや課題の問題文は英語なので、英語をまったく読めないという人には厳しいかもしれません。なお、週ごとの課題に締切日が設定されていることを除けば、回答の制限時間といったものはないので、スラスラと読める必要はありません。辞書を引きながらでも大丈夫です。また、クイズにも課題にも記述式の問題はなく、英語を書く場面はありませんでした*3
karino2.livejournal.com

数学的な前提知識としては、ベクトルや行列の四則演算は理解している必要があります*4。最初の講義でも初学者向けの説明がありますが、計算練習を含めてある程度慣れていないと、その後の講義のスピードに着いて行くのが難しいかもしれません。各週の課題をこなしていくためにも行列の計算は必要になります。また、講義で出てくる数式をしっかり理解するためには、多項式対数関数の微分についても知っているとよさそうです*5。一方で、確率、統計の分野については、数式として正規分布が出てくるということはあるものの、それほどの事前知識は必要なさそうな印象があります。

プログラミングの課題は MATLAB または Octave で実装して提出するのですが、これらの言語に特に精通している必要はありません。あらかじめ決められた関数に、講義で説明される数式の計算を実装する形式で、それぞれ数行程度のごく小規模な課題です。課題の関数を実装することで機械学習の特定の問題を解くプログラムが完成する形に周辺部分が作りこまれており、週ごとの内容に応じて、手書き文字 (数字) の判別、画像の減色処理、推薦システムといったシステムが動作する様子を確認できるようになっています。

なお、MATLAB は有料のソフトウェアですが、この講義を進める目的に限って利用できる、特別なライセンスが提供されているようです*6。この講義で機械学習について学びながら MATLAB に触れてみるのも面白いかもしれません。

*1:内容的にも、第一週は線形代数の復習といった感じで、数学的な予備知識があると少し退屈してしまうということもありました。

*2:英語の字幕を選択することもできます。

*3:受講者同士が互いに質問したりする掲示板が用意されており、そこではもちろん英語でのコミュニケーションになりますが。

*4:除算は出てこなかったかもしれません。

*5:こちらは、必要な数式は講義の中で提示されるので、それらの数式をオマジナイとして受け入れてしまえば最後まで進められそうな気はします。とはいえ、やはり数式の意味を含めて理解できる方が勉強になると思います。

*6:私自身は MATLAB の home ライセンスを購入済みだったので、今回、このライセンスは試していません。