トップ «前の日記(2012-08-20) 最新 次の日記(2012-08-28)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2012-08-23

_ courseraの授業を受けてみた

courseraという、Webベースの自習システムが話題になったので、試しに受講してみた。

最初は1月開講の機械学習のコースだったけど、なんか開始が伸びに伸びて実際に開講したのは4月の末からだった。期間は2か月半。

週あたり大体2つの単元というかテーマがあって(たとえば、ロジスティック回帰+正規化とか。ニューラルネットワークはそれだけで1週間)、最初はスーパーバイズド機械学習(予測とか)で、1変数の線形回帰、次は多変数の線形回帰、……と少しずつ複雑さを増して行って、アンスーパーバイズド機械学習(クラスタリングとか)で一応終了。途中、高速化や評価などの講義とか、Octave(GNUのMATLABクローン)のチュートリアル(プログラミングの実習で利用するので)とかが入る。

このコースは、ハウトゥーに重点が置かれた講義なので(と言っていたと思うのだが)時々、証明(なぜ線形回帰で大域最適な点を見つけられるかなど)が説明されるけど、どう計算するか、どういう局面でどの計算方法を使うのか、といった講義に重点が置かれていた。

Ng先生の英語は僕にはそれなりに聴きとりやすくて(何を言っているかわかるので辞書を後からひけるという意味であって、どういう意味の内容を話しているかがわかるということではない)、ときどき止めて戻して見直すのは必要だったが、4/5くらいはわかったと思う(全然、何言ってるかわからないところもあるけど)。1講義、つまり1/2週あたりに15分程度のビデオが7本くらい。それから宿題として普通の問題集(10問くらい。主に選択問題ただし多選択あり)とプログラミング(穴埋め問題。要所要所でグラフ表示などがあるので、講義の内容を実習で確認するという雰囲気)。

実際にやってみると、聴きとれなくて見直したり、わかったつもりでわかっていなくて宿題の問題がひどい点で、できなかった単元を見直したり(宿題は再試行可能)すると、大体、1日2~3時間、2日くらいできない日があって、土曜日に問題解くのを入れて4~6時間くらいかかった(正味、週あたり10~12時間近くを使っていることになる)。このあたりは、英語の聴き取りに難がなければ半分くらいの時間で済むとは思う。

という具合に、実際に受講してみたら結構時間が取られた。とは言うものの、1か月半くらい進んだところでペースがわかってきて、それなりに進められるようになったので、何気なく、暗号の講義も取ってみたら、こっちは大変だった。

まず、先生の早口っぷりがすさまじい(ただ、慣れというのは確かにあって、最後のほうでは結構わかるようになった)。しかも、内容が(僕にとっては)すさまじく難しい。というか、日本の数学と用語は英語だから異なるのは当然として、どうも解の求める道筋が違うような気がする。とはいっても、高校までの数学の知識でどうにかなるレベルではある(高校生のための数学入門みたいなWebページを最初に参考ページとして示された)。

講義も、20分越えのビデオが週あたり10本以上あったりして、えらく大変で驚いた(つまり、先生によって講義の粒度にはばらつきがある)。

ただしプログラミング実習は実におもしろかった(特に、パディングオラクルの実習がおもしろかった。いずれにしても、解読系はプログラムの結果が確実に見えるのでおもしろいに決まっているのであった。もっともMLのほうもおもしろいのだが)。

プログラミング実習で利用する言語は、MLのほうはOctave(またはMATLAB)が指定されていてそれを利用した(ヘルパ関数が提供されているからだと思う)。

一方、暗号のほうはほぼRubyで解いたが(結果をWebで提出して採点して返す仕組みなので言語は問わない。Wikiの書き込みを見ると、他にもPython、Java、C#、Haskell、Perlとまんべんなくいるようだった。ただ、modPowとかmodInvとかを使う必要があるときはJavaを使った(が、途中でOpenSSLのBNクラスを使えば良いと気付いてからはRubyに戻ったけど)。あと、バグがあったのが原因だったのだが、Rubyで計算したら1時間以上かかっても終わらないのでJavaに切り替えたときもあった(が、そもそもバグなのでJavaでやっても終わるわけがない。であらためてそのままJavaで修正してやっているうちに解にたどりつけた(正しく解ければ秒殺だった)ので、結局Rubyでやるとどのくらい時間がかかるのかはわからずじまいだったけど)。

宿題(というか週ごとの小テスト)について、暗号のほうはえらく難しくて(そもそも講義の理解がものによってはほとんどわかっていなかったりするのが原因だとは思う)ぎりぎり及第点というところ(7/10以上)だった(一方、MLは復習してリトライすると10/10とれたが、そこは実習系と論理系の違いだろうな)。

無事完了すると、PDFの修了書を送ってくれる。何の役に立つんだ? という疑問があるが(ちゃんと注で、これはスタンフォード大学の提供している教材を使っているけど、スタンフォード大学で学んだという意味ではないし、スタンフォード大学の何かを証すものでもなんでもない、とか書いてある)、Wikiでの生徒の書き込みをみると、会社に対してちゃんと受講したという証拠として提出するというのはあるらしい。

(これは暗号のほう。48.8/63.5で、最終試験が9.5/13 となっている。ようするにぎりぎり及第)

以下、感想。

・ひさびさに勉強っぽいことをやったわけだが、おもしろかった。

・いろいろフィードバックを要求したりすること、教材は都度作り直しているらしいこと、スタンフォード大学は実際に学校で行う講義を集合講義から変えようとしているというようなニュースを見かけたことから考えると、学生用の教材作りのベータテストのような意味合いがあるのかな?

・せっかくMLのやり方はわかったので、一発学習させてみようと思いながらなかなか手がつかないのはよろしくないなぁ(資格取得が趣味の人みたいだ)。

・他の大学も参入してきているのでどんどんコースが増えている。これみるかぎり相当人気があるのだと思う。それにしても、資金源と、目的(本当の学生用教材のベータテストというのはあるにしても)は何なのだろう?

・今度は、9/18開講のオダスキーのFunctional Programming Principles in Scalaを受ける予定。これはスタンフォードではなく、スイス連邦工科大学だ。

(以下追記)まとめを書いてないじゃん。

というわけで、ある程度英語が聞き取れて、週に10時間くらいを確保できそうで、おもしろそうな講義があったら、受けてみると良いと思います。

講義のビデオは多分フラッシュだと思うけど、PCのブラウザでも見れるし、iPadのSafari(ということはmp4かな)でも見られます。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え