hirolog

20代医大生のブログ。日々の情報収集のアウトプット。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day6

今日の目標

Machine Learning - Stanford University | Coursera

を始めてから5日目となります。

あれ、まだ5日目か。この5日間充実し過ぎててめっちゃ長く感じます。。

今日はWEEK5のプログラミング課題を終わらせて、WEEK6も終わらせちゃいたいです。

6日目でやった事

Machine Learning WEEK5 終了

全部でかかった時間:9時間(昨日の5時間含む)

難易度:★★★☆☆

内容

コスト関数と誤差逆伝播

誤差逆伝播アルゴリズム

誤差逆伝播法のイメージ

誤差逆伝播法の実装における注意

・Unrolling prameters

・Gradient checking

・Random Initialization

(この辺適切な日本語訳がない..)

・全てを合わせる

感想

WEEK4に引き続き、ニューラルネットワークの回でした。

内容はbackpropagationについてがほとんどで、それをいかにして実装していくかという部分にフォーカスされていました。

やっている事を式にするとかなり複雑であり、実際アルゴリズム自体が複雑です。

なのでこれをイチから自分で書けと言われるとちょっと厳しい気もします。まとめたノートを見つつ繰り返しで身につけていくしかないですね。

課題自体はかなり誘導がされていて今回は解きやすかったように感じました。

それにしても毎回思いますが、この課題は本当によくできていますね。。授業内容の理解にはうってつけです。

課題の最後で実際にニューラルネットワークアルゴリズムを動かして、Iterationを400にすると99%以上の精度を出すことができました。その分計算に結構時間がかかっていて(15分くらい?)、今までの計算でこんなに時間がかかっていることはなかったので、計算量の膨大さを実感しました。

何はともあれニューラルネットワークはマジですごいですね。マジで強力なツール感が半端ないです。

Machine Learning WEEK6 終了

全部でかかった時間:7.5時間

難易度:★★★☆☆

内容

学習アルゴリズムの評価

・Train/Cross Validation/test error

Bias vs Variance

・Train/Cross Validation error の表示

・lambdaの選び方

・Learning curves

・Large errorが起こった時の対処法

・Neural Networkとoverfitting

スパムメール分類器を作る

・エラー分析

歪みデータ

・精度と再現率

・F1score

機械学習におけるデータの重要性

・大きなデータ適用に関する論理的解釈

感想

今回は将来的に機械学習を実装するにあたって注意しておいたほうが良いtipsを習いました。

特に強調されていたのが、エラーが発生した際に盲目的にデータの数を増やそうとしたり、フィーチャーの数を増やそうとするのではなくて、何が原因なのか(bias vs variance)を見極めて何をすべきかを考えよ、ということです。

かなり実践に近い内容で、いざ機械学習を利用しようと思った時にまずぶち当たる壁に対してあらかじめ答えを用意しておいてくれている回でとても勉強になりました。

今回習ったことは実際に機械学習を実用化する時まで頭に入れておきます。

特に共感したのが、意思決定のスピードを上げるための数的な指標を用意せよ、という点です。昨年度、長期インターンベンチャー企業で働いていて感じたのが、意思決定の難しさでした。ビジネスの世界では根拠が明確にない状態での意思決定が求められます。それによって今後の結果が大きく変わったりするので、経営者に求められる大事なスキルの一つです。なので、その難しい意思決定はできるだけデータドリブンであるべきであり、今回学んだような数的指標があるだけでその質に大きな差が出るわけです。

実践的なことまで考えて教えてくれている点は、Ng先生がさすがだなと思わざるを得ません。

最後の方の精度・再現度の話は、まさに医学部で習う、検査の感度・特異度の話と繋がる話でした。

明日に向けて

明日は所用で実質稼働時間は6時間程度になりそうです。

なんとかWEEK7を終わらせられると良いのですが。。

所感

今日でこのコースも後半戦に差し掛かりました。

小テストのページで「最近この課題を終わらせたのは〜人です」みたいなのが毎回出るのですが、week1の時はそれが3万人くらいだったのに今では1万人くらいになってます。結構途中で離脱している人もいるみたいです。

全くのプログラミング初心者が、ここまでよくリタイアせず続けてこれたなと思います。自分を褒めてあげたいです。

ここまでで感じたのは、短期で一気にやっちゃう方が前回までの内容も頭に入っているし、進め易いんじゃないかと思っています。

ただ何よりも、Ng先生の解説はマジでわかりやすいです。

Medilinkの清澤先生を超えるレベルでわかり易いので(医学部ネタですみません)、初心者の人でもぜひトライしてもらいたいなあって思います。