はじめに
Qiita界隈で絶賛されているスタンフォード大学のオンライン学習courseraの機械学習コース。先人たちの偉大な投稿を参考に私も期限ギリギリでようやく認定を取得することが出来ました。
・例の機械学習コースが良いらしいと知りながらも2年間スルーし続けたがやはり良かったという話
・数学を避けてきた社会人プログラマが機械学習の勉強を始める際の最短経路
・機械学習をゼロから1ヵ月間勉強し続けた結果
https://www.coursera.org/account/accomplishments/certificate/K8G564RYG7HH
このコースはcoursera自体の創立者Andrew Ng先生がコンテンツを作っており、大変丁寧に設計された内容になっております。それでも修了までに幾つもの壁があったと感じましたので、それに関してシェアさせて頂きます。
翻訳の壁
Andrew Ng先生の英語は大変簡潔に話されており、解説も丁寧であるため、ある程度英語の経験がある方なら特に問題なく理解できるかと感じております。が、新しい内容を英語で理解するのに抵抗がある方は必然的に日本語の字幕を頼ることになると思うのですが、こちらの字幕の翻訳はディープラーニングを使っていないのか精度があまり良くありません。
例えばこちらの原文に対して
In this video, we'll talk about the second major type of machine learning problem, called Unsupervised Learning.
Coursera付属の翻訳だと
このビデオでは、二番目に大きな機械学習 問題である「教師なし学習」についてお話します。
google翻訳だと
このビデオでは、教師なし学習と呼ばれる第2の主要なタイプの機械学習問題について説明します。
どちらが自然な翻訳なのかは一目瞭然かと思います。これの微妙な差分が説明でずっと続いていくのです。
先生の話している内容がわからないのは実力不足ではなく翻訳精度の責任だという可能性が有ります。日本語の字幕がわからないときは英語の字幕をコピペしてgoogle翻訳にかけてみることをおすすめします。
線形代数の壁
ある程度講義が進むと線形代数の概念がたくさん出てきます。私は大学時代1限で眠かったという覚えしかありませんでしたが、今回の講義でようやく線形代数の使用方法がわかりました。線形代数ではA×B≠B×Aの場合がほとんどであったりして、式の意味合いが普通の算数と少し違います。もし、これまで線形代数を学ぶ機会がなかった方にはここだけでも理解するのに少し時間が必要かと思います。先生はココらへんも丁寧にしかし、ものすごいスピードで解説してくれますが、きちんとやるのであれば通常大学の講義で1コマ使うような内容です。目標は機械学習を取得することなので線形代数はある程度わかる前提になっているかと感じております。
数字の行列が出てきて急に内容がわからなくなっても、それは実力不足ではなく学んでいない数学の分野かもしれません。日本語で素晴らしい解説記事が有りますので参考にしながら進めてみて下さい。
線形代数の基礎
MATLAB・Octaveの壁
先人たちも書き残していらっしゃいますが、本コースではプログラミングの課題をMATLABかOctaveの環境で実施する形になっております。先生はこちらのツールも丁寧に高速に解説してくれるので、行列の変換操作が可能になりますが、やはり使いこなすにはある程度の慣れが必要になってきます。MATLAB未経験な筆者にとってはここが本コースの一番のハマリポイントでしたが、中盤のプログラミング課題はにはいくつか機械学習の理解というより、MATLABの行列変換の演習には思えたものが有りました。
プログラミング課題がうまく進まなくても、それは機械学習への理解ではなくMATLAB操作の問題の可能性が有ります。近くにMATLABが得意な人がいれば教えてもらいましょう。
こちらの記事にはものすごく助けられました。追記しました。
・MATLAB-Sample 【基礎】行列操作
・機械学習を1ヵ月で実践レベルにする #6 (Octave 実践編)
孤独の壁
近くに聞ける人がいない場合はオンラインで議論できる場所"Discussion Forum"が用意してあります。
こちらも英語になりますので、英語を読むのが遅い方はガンガンgoogle翻訳を使われるとよいかと思いますが、読んでみるとわかりますように、質問のレベルはそんな高くないです。メンターが頑張って解説をしてくれます。私は最初これを読んだ時、皆同じところで躓き悩むのだとわかり、けっこう安心できました。質問が出来なくてもいいので是非見ることをおすすめします。
時間の壁
最後の先生からの感動的な話の中にもありますが、それなりのコンテンツ量が有りますので、特に仕事の合間に学習するとなると、完了までは継続する力がいります。途中まで進めていて、諦めそうなになってしまった方(私がそうでした)にお伝えしたいのは最後のコース10と11はプログラミング課題がありません。私的にはコース6−9が一番辛いところでしたので、そこまで差し掛かっている方は絶対に乗り切れるので是非修了してみてください。
大変勉強になるコンテンツでした。Andrew先生有難うございました。
リンクしてくださってありがとうございます。 Octave での行列計算の壁には、こちらもいかがでしょうか。
Octave によるVectorial implementation
有難うございます。こちらの記事にもお世話になりました!追記させて頂きました!