cyclog

すべて個人の妄想です

Cousera Machine Learning を修了しました

2019/02/04から始めたMachine Learningコースを、本日2019/04/17、無事に修了しました。

先人達の記事や翻訳が本当にありがたかったので、後陣の皆々様へ多少なりともサポートになればと思い、困ったことなどの実体験レポートを認めることにしました。

 

tl;dr

  • cousera Machine Learningコース、機械学習の基礎がわかるので超おすすめ。今すぐ勢いで申し込もう
  • 英語ができなくても、数学が得意でなくても、社畜でもなんとかなる
  • 実戦で使えるようにするなら、演習の復習はやった方が良い

 

Machine Learningコースって?

機械学習初心者が学ぶならこれ、ってくらい有名なStanford大学のオンラインコース機械学習と聞いてパッと思い浮かぶような、下記の内容を網羅できます。

手法以外にも、正規化や、実際に機械学習を使う際の考え方やTips等も、惜しげも無く教えてくれる神コース。

 

www.coursera.org 

この講義の最も素晴らしい点は、「直感的に理解できる」だと思います。「中身はわからなくても手法が使えればいいや」ではなく、「その手法を使った時に、何がどう動いてこの結果ができているのか?」をきちんと可視化して教えてくれるところ。数式が出てきて躓きそうになっても、ほぼ必ず同じ内容を可視化したり別の方法で説明してくれるので、1回ビデオを最後まで見るとなんとなく理解できる。こんなに教え方が上手いひとがいるのかと驚愕します。気をつけないと、するする理解した気になってしまって、後で何度もビデオを見返すことになるので要注意。

 

最後の講義ビデオを終えると、講師のAndrew Ng先生の優しさに泣く。ありがとうございました……!

  

受講前の小生のスペック

  • 某日本企業の社畜。サービス企画、サーバ系システムのPMや開発工程管理、UXデザイナー等。何屋かよくわからない。
  • 企画屋当時、Google AnalyticsExcel使ったサービス利用実績分析等は最低限やってた
  • Python/Java/PHP/HTMLは齧ったことがある。が、ほぼ10年以上前
    インターネッツ黎明期に自サイトをタグ打ちしていたオタク)
  • 機械学習Deep Learningについては入門記事や書籍に触れた程度
  • 英語勉強中。TOEIC 640くらい。超簡単な文章ならわかるレベル
  • 線形代数統計学は大学でやった記憶だけある。ほとんど覚えていない

 

受けようと思ったきっかけ

流行に乗り遅れた職場で興った 何でも屋 データサイエンティスト増やそうキャンペーンで勉強を始めたものの、Pythonの各ライブラリを使うだけだと結局何をしているのか全くわからなかったので。

 

もう少し詳しく。元々AIには興味があって、今後はExcelやブラウザを使うのと同じようにAIも使いこなせないと死ぬな〜と思っていました。キャリアの方向性は常に迷走しているものの、マネジメントや企画屋をするにしても基本的な技術の概要は知っておくべきだし、エンジニアするなら当然知るべきだと。

機械学習やAIについてオンライン/オフラインで情報収集している中で、こちらの講義名と先生のお名前をよく見かけることに気付く。と言っても、いつか受けようかな〜と思っている程度で、社畜なので平日の時間もなかなか取れずに幾星霜。

職場で「データドリブン」がバズワードになり、機械学習を勉強する機会に恵まれたものの、企業向け各セミナーは概ね「使えること」が目的なので「なぜそれを使うのか?」「なぜそのパラメータを選ぶのか?」等については良く解りませんでした。勿論、使うこと第一という考え方も大事だと思うのですが、自分は中身のロジックや動きがわからないと理解できないし使いこなせないタイプなので、基礎から学びたかった。(典型的な暗記ができないタイプです)

なんやかんやで偶然2/3のタイミングでCouseraのページを開いたら、受講開始2/4の文字が。受けるなら今しかねぇ! と勢いで申し込みました。勢い大事。

 

なお、講義ビデオ自体は無料で視聴できるそうなのですが、自分は〆切がないと別のことをしてサボる癖があるので、己のケツを叩く意味で課金して始めました。

(昔見たときは6k円くらいだった気がするけど、小生が申し込んだときは8,573円でした。ガチャ課金より圧倒的にお得だしめちゃくちゃ勉強になるので実質タダ)

 

受講スタイル

主な環境は、MacBook Pro 13inch (ver.10.14) とiPhone。時々iPad Pro。

通勤中や空いた時間にiPhoneで講義動画を見て、プログラミング演習の課題はMacで。プログラミング演習は主に週末土曜日に終えて、日曜は 遊び 予備日にしてました。基本的に決められたスケジュールに合わせて、1週間単位で課題を提出。平日まったく時間が取れなくても土日でカバー。講義のスケジュール通り11週で修了しました。

他の方の受講レポートを拝見すると、サクサク受けて数日でクリアした! なんて猛者もいらっしゃる模様。すごい。

 

講義の流れ

講義は全部で11週間。講義ビデオを見る → 復習クイズ5問 → プログラミング課題の流れ。チャプターによっては、クイズ5問が2回あったり、プログラミング課題があったりなかったり。

クイズとプログラミング課題は80%以上で合格。クイズは1問までは落としても大丈夫。3回間違えると8時間後まで再チャレンジできない。クイズの問題は時々少しだけ変わるので、前回と同じ回答で大丈夫と思わずにちゃんと読んで回答した方が良い。

プログラミング課題は、コマンドラインからsubmitで何度でも提出できる&自動採点。 夜中でも時間を気にせずできます。

 

英語できなくても大丈夫?

聴き取り/読み取りができるに越したことはないですが、できなくても何とかなります。まず講義のビデオに日本語字幕がある。有志の皆様本当にありがとうございます。ただ字幕が途中で切れていたり、訳がおかしかったりする場合があるので、その時は英語字幕に切り替えてGoogle翻訳にコピペすればOK。

 字幕が途中で切れているビデオに出会って絶望した場合は、字幕を提供してくださる先人に感謝して、ローカルで字幕をつけてビデオを再生すれば問題ない。(オンライン視聴でないとビデオ視聴の受講履歴はつかないので、ローカルで見終えたらオンラインでも視聴フラグを立てておくこと)

 

blog.maxicarv.com

  

プログラミング課題のPDF、ソースコードも英語ですが、こちらも全て翻訳してくださっている先人が居り、日本語で理解することができます。本当にありがとうございます。スクリプトの中のメモは、ほぼ解答に近いヒントが書いてあるので、読んでから解くのがオススメです。

 

qiita.com

 

クイズの日本語訳は見つけられませんでしたが、基本的には講義内で出てきた単語が主なのでそこまで困りません。全てGoogle翻訳に放り込めば何とかなります。5問中1問は英語の翻訳ミスで落としてもやむなし、という心意気で臨みました。(再チャレンジもできるし)

……本当は英語の勉強がてらやればよかったとは思うのですが、社畜は課題をクリアするので精一杯でした。無理して続かないよりはテクノロジーに頼るスタンスで。

 

数学・統計学わからなくても大丈夫?

最低限のことは、講義ビデオで先生が教えてくださるので大丈夫かと思います。行列演算でわからなくなった箇所は、検索して色々なサイトを徘徊しました。講義に出てくる単語で検索すると、解説してくださっているサイトもたくさん見つけられます。 

あとはこちらの本が比較的わかりやすい。全部は読んでいませんが、必要なページだけ目を通す感じでOK。

 

人工知能プログラミングのための数学がわかる本

人工知能プログラミングのための数学がわかる本

 

 

プログラミングできないけど大丈夫?

プログラミングスキルはそこまで必要ないと思いますが、何らかの言語に触れたことがあれば安心です。実際に書くコードは数行、多くてもfor文数個なので、殆ど数式をそのまま書くような感じです。(y = a*x + b、みたいな)

octaveは初めて触れましたが、講義ビデオにもoctaveチュートリアルがありますし、課題を提出するのにoctaveで困ることはありませんでした。(フォーラムを見ると、インストールで躓くケースがあるようです)

講義自体がoctaveを中心に進むので、octaveをインストールできるPCは必要。プログラムの大半は準備されていて、【ここからここまでの間に、講義ビデオでやった式を入れてね!】って書いてあるので、そこに数行埋めるだけです。

よくわからない時は、講義ビデオを見返したり、過去のフォーラムのTop View辺りを探して解きました。何度でも提出し直せるので、クリアするまで書き直し→提出の繰り返し。

 

プログラミングで1番困ったのは、1問目は正解だけど、1問目のコードを使った2問目ではエラーになるケース。(結果的に、1問目のコードが1問目のパターンでのみ通るコードで、汎用性がなかった)

何問目から解いてもいいのですが、1問目のコードを使って次のコードが動く、というシチュエーションが多かったので、殆ど1問目から順に解いてました。

 

ちなみに、検索すると先人達のソースコードGithub等に上がっていますが、他所様の回答をコピペするとcouseraから永久追放なので厳禁です。そこまでしなくても、色んなパターンで数式を書き直すとクリアできます大丈夫。

自分はプログラミングが得意ではないので、クリアし終えた後に、他の方のコードを参照して復習に充てました。行列を使って1行で書いている猛者のコードはとても勉強になるので、クリア後に見てみるのはオススメ。

 

他に読んだ本など

何も知らないでいきなり飛び込むよりは、サラッと読める入門書に触れておくと良いかもしれません。本だけで十分に理解できなくても、単語を知っているだけで違うと思います。

 

最初はガチ初心者だったので、ひとまずざっくりと流し読み。

マンガでわかる機械学習

マンガでわかる機械学習

 

 

機械学習そのものではないですが、データサイエンティストって? という内容をざっと網羅する用に。 

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)

 

 

Python使ってざっと基本的なところを流したい方向け。

 

 

何に気をつけるべき?

チャプターによってビデオの量と課題の難易度にばらつきが大きいので、前倒しで受けられる週はなるべく前倒しで時間を稼いでおいた方が良いです。特にビデオが多い週は、単純計算でビデオの時間分の時間がかかります。(倍速再生すれば別)

あと、3週目までの線形回帰やロジスティック回帰辺りの内容(正規化など)がベースとなって後半まで効いてくるので、最初の方はしっかり理解できるまでビデオを見たり調べることをオススメします。(あとで遡ることになった)

 

細かい話ですが、課題提出の〆切は、PST(米国太平洋標準時)なので、JST日本標準時)とは17時間時差があります。日本時間で24時を回ってもまだいけますので諦めないことが肝心です。

 

で、結局どこまでできるようになったの?

基本的な機械学習の手法については、動きが直感的にわかるようになりました。ただ、例えばプログラミング課題に出てきたような画像認識のアプリケーションをバリバリ書いて作れるようになっているかというと、全く作れる気がしません。プログラミング課題はあくまで数式を少し埋めるだけのものなので、Pythonで復習がてら全てのコードを移植してみようかと思っています。

 

何にせよ、本を読んだりPythonのライブラリを使っただけではわからなかった、機械学習の基本的な考え方を理解できるようになったのはとても有難いことです。「この講義をどれくらいオススメしますか?」と訊かれたら、全人類とりあえず受けてみて、という程度にはオススメです。ここまでの文章を読む時間が捻出できる方でしたら、このまま勢いで申し込んでみては如何でしょうか。

 

お申し込みはこちら↓

 

www.coursera.org