ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

coursera の Machine Learning講義を終えた

最近出張が多く、出張時は早めにホテルに戻って時間をつぎ込んでなんとか終えることができました。

修了証
https://www.coursera.org/account/accomplishments/certificate/2MA52ABXEDVD

内容

他の所でもいくつも記事が見つかるのでざっくりですが、機械学習全般について浅く駆け足で進みました。演習にはoctaveを使います。octaveはほぼ行列計算のみで、ファイル開いたり、グラフ書いたりするところは全て準備してありました。日本語の字幕も英語のテキストもついているので、英語は聞き取れなくてもなんとかなります。練習問題は英語のままなので、ある程度の英語力は必要ですね。

このコースを受ける前に、はじめてのパターン認識を時間をかけて読んでいたので、ちんぷんかんぷんな所は無かったのですが、良く分かってなかったところが分かるようになりました。先に機械学習の本を一冊くらい読んでから挑戦した方が良いと思います。本と同じ式でも、数式を毎回説明してくれると理解が早かったです。SVMについては、この本だけで無く、他の本を読んでもよく分からなかったのが、この講義でだいだい分かったのでそれだけでも十分価値がありました。

演習

演習にはoctaveを使いました。octaveは使ったことがあったので特に違和感なく進めることができました。課題の難易度は、ちゃんとテキストを読んでその通り実装すればOKでした。

はまった所が二カ所あって、一つ目がニューラルネットワークの所。ニューラルネットワークはチョットクワシイくらいののりでいどんだのですが、sigmoid関数の入れ忘れが多発したり、最初は要らないのに正則化項をつけて計算が合わなかったり、俺の知ってるNNと違うって思いながら結構苦労しました。各計算のステップで行列の次元が自分の期待通りになっているかを確認しながら進めてなんとか終わらしました。とりあえずpdfをちゃんと読むことが大事でした。

もう一個はまったのが、ローカルの計算結果は一致しているけど、submitかけるとNGになるのがありました。諦めてフォーラムを見たら、テストパターンが出ていたのでそれを動かしてみればどこでNGになるか分かりました。僕の場合はパラメータθが一つだと思っていたのが、submitの時はθが3つになっていて通らなかったケースです。最後の方で気がついたのですが、submitの時も標準出力は生きているので、とりあえず入力データを表示するだけでも大分楽になると思います。

quiz

週に一回か二回、軽いテストがあります。正解しないと先に進めないで緊張しました。全て一発でPASSしたのですが、満点があまりなくだいたい80点のギリギリ突破でした。間違うところは、毎回「この中らから正しい物を全て選べ」で、多分機械学習ではなく英語力が駄目だったんじゃ無いかと思ってます。結構緊張するし、通ったときはやったーってなるので上手い仕組みだと思います。また、この結果も先生にどこを間違えたか統計取られていて学習データにされているんだろうなと思ってニヤニヤしていました。

最後に

全部終わると先生からの熱いメッセージがあって泣けてしまうと言う事前情報があって、でも僕はそんなに苦労してないから泣かないでしょと構えていたけど普通に泣いてしましました。

次はいろいろ受けたい授業があって、大学で習っていないベイズとか、コンパイラとか、それいうとプログラミングなんてのも正式に教育を受けた記憶無いのでいろいろやってみたい。

若い人へのアドバイス

年取ると何をやるにも遅くなるので、ほんと若い人は若いうちにやりたいことやるべき。
例えば演習問題やろうとしても、とりあえずEmacs立ち上げるのに5分〜10分かかるし、だいたい先が見えると休憩入れたくなる。若いときはこれくらいの入力データなら全部頭に入った気がするんだど、一つ一つノートに次元と先頭の方の値を書いていかないと、何をやっているかすぐ分からなくなってしまう。動画見てるとすごく疲れるし、courseraやってから新幹線乗ったら電車酔いして吐きそうになったり、ほんとやばい。

いろいろ書いたけど、めっちゃ面白かったのでみんなもやってみるといいよ!