白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

CourseraのMachine Learningを受講中

こんばんは。

甲子園が終わり、オリンピックが終わり、日常が戻ってきた気がしますね。


f:id:Shiro-Neko:20160923163736p:plain

さてさて。
オンライン学習サイトのCourseraで7月11日から始まっている「Machine Learning」コースを受講しています。

www.coursera.org

全11週のうち6週が終わって折り返しですので、感想とかをちょっと書いてみようかと思います。
本当は毎週レビューとか書いたほうがいいんでしょうけどね・・・。

Coursera


わたしよりWikipediaさんのほうが詳しいですよ。

コーセラ(英名:Coursera)は、スタンフォード大学コンピュータサイエンス教授Andrew NgとDaphne Kollerによって創立された教育技術の営利団体である。世界中の多くの大学と協力し、それらの大学のコースのいくつかを無償でオンライン上に提供している。2012年11月の時点で196カ国から1,900,241人もの生徒が一つ以上の授業に登録をした。(もっとも、Daphne Kollerとのインタビューによると、授業を最後まで受講したのは、数十万人のみで、修了率は7~9パーセントに留まった[2]。)

ってなわけで、大学のコースがオンラインで無料できちゃうよっていうサービスです。
すごい!

基本的には講義の動画と演習の提出という形式になっています。
講義の時間や課題の難易度などはコースによって結構違うみたいですね。

日本だと東京大学も参加しているみたいです。(講義に日本語がないのは何故なの?)

Machine Learning


その名の通り、機械学習のコースです。
講師は上の説明にもある「Andrew Ng」先生です。
講義の内容は専門的ではあるけれど、非常にわかりやすいと評判です。

1週間の内容ですが、
・動画が2時間くらい
・演習が3時間くらい
です。

他にもさまざまなコースがあるのですが、このコースは日本ではかなり人気のようですね。
その理由(のひとつ)は

日本語字幕がある

素晴らしいですね。
しかもこれ、Coursera側が提供しているわけではなく、とある方が個人で字幕をつけてくれたのです。
感謝感謝です。

karino2.livejournal.com

そんなわけで機械学習初心者なわたしとしては、
「わからぬー」と叫びながらPRMLガリガリ読んだりするよりもとっかかりやすいかなということで始めました。
PRMLは上下巻ともに買いましたが、全然進んでいません…)

講義の内容


Week1 イントロダクション/1変数線形回帰/線形代数の復習

一応わたしは理系の人間ではあるのですが、数学なんてものは高校でさよならしたのであまり得意ではないです。
先生は「わかんなくてもまぁ大丈夫だよ」的なことを言ってくれるので、ちょっと心が穏やかになります。

ちなみにこの週は課題はありません。
そして、動画には字幕があるけどクイズ的なものには字幕がなくてあぅあぅします。


Week2 多変数線形回帰/OctaveMATLABチュートリアル

各週の課題は「Octave」または「MATLAB」というソフトを使って行うのですが、
そのソフトでこんなことできるよ的なチュートリアルがあります。
が、先生が華麗にあれもこれもと見せてくれるので正直覚えられる気がしません。
こんな機能あるんだね程度にほんのり見ればいいかと思います。

これだけは覚えておいたほうがいいのはベクトル同士の演算で、
「*」は内積の計算、「.*」は各要素の乗算ってことです。

そして、課題がすべて英語で絶望します。
ちょっと心が折れそうになりましたが、問題自体はさほど難しくはないのです。
もはや半分英語の勉強だと割り切って進めました。

ところで、Octaveの最新のバージョンをインストールするとsubmitでエラーが出てしまいました。
3.8を使いなさいということらしいです。
わたしはフォーラムをうろうろしていたらパッチがあったので、それを当てたら治りました。(どこだか覚えていない)


Week3 ロジスティック回帰/正規化

だんだんそれっぽくなってきます。
「ロジスティック回帰」だけど「回帰」じゃなくて「分類」だよ。
でも、そういうもんだから気にしないでとか言われます。
ちょっとここで急に式が難しくなる感じがするのですが、別に暗記しなくちゃいけないわけでもないので、
難しいなーくらいに思っておけばいいと思います。

正規化は最初はハマります。
 {θ_0}は対象外だよと説明してくれるのですが、うまくコードにできなくて悩みました。


Week4 ニューラルネットワーク(順伝播)

ニューラルネットワークは2週に分かれています。
単純パーセプトロンからかなと思っていたら最初から多層だったのでちょっと焦ります。
すでに自分で実装していて、理論がわかっていたので、ここはそんなに困るところはありませんでした。

課題ではだんだんと英文を全部理解するのが面倒になってきて、
文を雰囲気で読むようになってきたら、変な実装をしてツボりました。ふふふ。


Week5 ニューラルネットワーク(学習)

Week4では学習についてはやらずに、この週でバックプロパゲーションをやります。
これも理論がわかっていたのでなんとかなりましたが、内容的には結構難しい気がします。
やっぱりNNといえば手書き文字認識なんですかね。


Week6 アドバイス/機械学習のシステムデザイン

交差検証などの性能評価についてや、パラメタチューニングの勘所みたいなお話。
こういった内容はあまり他のところではお目にかかれないので、勉強になります。

実際の現場でどのように機械学習を使っていくかとか、
どうやって性能を上げていくかとかの参考になりそうです。

ところでこの週、なんだか日本語字幕がずれてしまっているところが多々あります。
字幕を付けた後に動画に変更があったのかもしれません。
困ったので英語字幕で見ましたが(ヒアリング無理)、早くて結構つらかった。

所感とか


・ちょっと挫けそうになるけど、意外と何とかなる

Week2でまずちょっと挫けます。
ここで「あ、無理」ってなってやめてしまう人が多いのかもしれません。
でもやってみると案外何とかなったりします。

・英語力足りない

成績が一番悪かったのが英語ですからね。
でもまぁ、「ふんふん、なるほどね」とか言いながら読んでいけば、何となくわかったような気がするもんです。
というか、こんな専門的な内容でもある程度理解できるんだから、学校の英語のテストってなんか違うよね。

・課題はプログラムっていうか式

急に新しい言語なんて覚えられないよとか思っていましたが、
ロジックを全部自分で作るわけではなくて、穴埋め問題みたいな感じなので大丈夫。
それこそ式をそのまま1行書くだけの問題なんかも結構あります。

・メモは取ったほうがいい

動画なので繰り返し見ることもできるのですが、
「あの話ってどこだっけな?」みたいに探すのは結構つらいです。
一時停止しながらメモを取っておくと、あとで見直しができてよいです。

そして後半戦へ


今週の講義はサポートベクターマシンです。
週末までに何とか頑張ります。

7月11日-10月2日までのコースを受講している方、残りもがんばりましょう。
これから始めてみたいという方、オススメですので是非。

それではそれでは。


後半の記事はこちら。
shironeko.hateblo.jp