理系大学生がCourseraの機械学習コースを3週間で受講してみた

ついこの間、Couseraというスタンフォード大学が提供しているオンライン学習サイトにて、Andrew Ngという方の機械学習コースを終わらせました。本記事では、僕の学習の軌跡と感想、及び機械学習について得た知見などについてまとめます。参考になれば幸いです。

僕のスペック

英語: 得意、好き。洋書と海外ドラマが好きで、いつの間にかTOEIC900点超えてたみたいな感じ

数学: 普通の人から見るとかなりできるレベル。受験偏差値だと、65 ~ 70ぐらい

大学での専攻: コンピューターサイエンス

ということで、いわゆる、「文系からの〜〜」とか、「英語も数学もできないが〜〜」みたいな感じではないのでご了承ください。

とはいっても僕はそこらへんの一般人なので、スペック自慢をしているつもりは毛頭ございません(むしろ自分の雑魚さに憤慨している日々です)

このぐらいのレベルの人が、あのcourseraの授業を取ると、こういう感想を持つんだな、このぐらいの学習スピードで進むんだな、というのを参考にしていただければと思います。

講座について

講義の内容

機械学習です。以上。

もうちょい踏み込んだ内容としては、

まず、機械学習に必要な基礎的な統計学の知識が学べます。正規分布とか、ヒストグラムとか、そこらへんですね。そして線形代数について。機械学習では、行列というものを使ってゴリゴリ計算していくんですが、そのために必要な知識が学べます。

ってか書いてて死ぬほど味気ないなこれ。まあ、一言でまとめると、「機械学習を始めるのに必要な、数学の知識、統計学の知識から始まり、機械学習を実践する上でのツールの使い方、具体的な実践テクニック、そして実際に0から機械学習を行う」ところまでカバーできますね。

僕はこの講座を受ける前は、「機械学習さっぱりわからん」状態だったのですが、受講後は、理論的な知識が身につき、機械学習ってこういう仕組みなんだ、とわかるようになりました。

最近は猫も杓子もAIと言っていますが、「あ、コイツらなんもわかってねーじゃん」と論破できるぐらいの知識は余裕でつきますね。

講師のAndrew Ng先生は、香港からの移民のイギリス生まれ。MITで学位を取ったり、スタンフォード大学で教授になったりと、世界レベルの超ハイスペックマンです。

しかも講義はわかりやすいし、喋り方が超優しい、ということで、ほんとに最強ですね。これがグローバルエリートか、と驚嘆させられます。

日本の、頭がいいのかわからないがプライドが高く、見た目が終わってて、授業がよくわからない先生と比べると段違いです。

受講スタイル

このcourseraの機械学習コースは、全部で11回あります。受講を開始した日から、学習計画がcoursera上に出てきます。こういうペースで勉強してください、というやつ。

毎週授業を取り、課題を演習して、というのを約3ヶ月続けると、いつの間にか機械学習についてめっちゃ詳しくなれちゃうわけですね。

各回ごとに、受講の目安の日時が決められているので、非常に学習を進めやすいです。

字幕付きのビデオ + 全文文字起こし付きという、至れりつくせりっぷり(ただし全部英語。日本語字幕もついてる)。しかも、ビデオと文字起こしの文章が連携して、今はここを喋っているんだな、というのがハイライトされてわかるようになってます。超便利です。

講義のスライドもダウンロードでき、復習にもってこいです。

1回の講座では、5 ~ 10分の小ビデオが4 ~ 8本あり、各ビデオでは、選択式の選択問題が途中に出てきます。ただし、これは間違えてもOKなやつなので、適当に押しても先に進めちゃいます。

ビデオの終わりには、各章の確認テストがあります。これは点数を記録される & 8割以上得点しないと不合格、という形式。連続で3回不合格だと、スタミナ回復まで8時間という制限付き。

確認テストが終わったら、プログラミング課題が出てきます。手とり足とりでガイドしてくれるため、順番に解いていくと、いつの間にか、機械学習ができてしまうという、親切設計。とはいいつつ、何も理解してないまま臨むと爆死するという、丁度いい難易度設計になっております。

という感じで、全体を通して、超クオリティは高いし、何より設計が親切。質問フォーラムも設けられていて、この機械学習コースの講座が開設されてから今に至るまでの、Q&Aがすべて集約されてます。

普通に大学の授業より質も高いしわかりやすくて、俺なんのために学費払ってんのかなと思いました

受講期間

正式には、全11回の講座を毎週消化していって、だいたい3ヶ月であら不思議、機械学習について0だったところから、かなり遠くまで到達できます。

僕の場合ですと、受講のために会員登録をしたのが4月の中旬ぐらい。

コロナの影響で、大学の開始が5/11からになってしまいました。大学の開始まで2週間あるぞ、ということで、この期間で機械学習について学ぶか、と思ったわけですね。

僕は3ヶ月もやってられなかったので、2週間ですべての授業を取り、課題を提出して、講座を終える、という野心的な計画を立てました。

結果から言うと、全11回の授業自体は2週間で見終えたんですが、プログラミング課題が想像以上に重く、その分で追加で1週間ほどかかってしまった、という感じです。しかも、課題の最後らへんは、理解していないところがボロボロ出てきて、ネット上で答えを検索してチートしたりとかしてました。

ですが、機械学習コース全体を約3週間で終えたということで、割とスピーディーに進んだのかなと思います。

料金

無料。神すぎます。

ほんとに、なんのために大学に授業料を収めているのか不思議になるぐらいの神講座です。

すべてのテストに合格すると、修了証を発行できるようです。Linkedinとかにも載せられる、ちゃんとしたやつです。これの値段が約8000円。講座のクオリティに感動した人は、投げ銭代わりに払ってもいいのではないでしょうか。

この講座を取ろうか迷っている人は、こんな記事を読んでないで、とりあえず会員登録してみてください。

https://www.coursera.org/learn/machine-learning

どのぐらいの数学の知識が求められるのか?

どのぐらいの数学の知識があればいいんでしょうか?

本コース内でカバーされている分野もあれば、最低限これは知っとかないとまずいぞ、という知識、そして、必須ではないが知っておくと理解に役立つ、という3つのジャンルにわかれます。

本当にざっくりまとめると、

最低限知っておきたい知識

  • 高校レベルの微分積分(三角関数の積分とか、数Ⅲの範囲まではカバーしておきたいところ)
  • 指数対数。特に、自然対数eについて。logとかは全然出てこないんですけど、自然対数eを理解するために、普通の指数対数の理解が必要なので。まあ、ここに関しては、自然対数eさえ知っておけば、最悪なんとかなる、はずです
  • 微分積分を理解するのに必要な知識
  • 数列。Σを使った計算は結構でてきますね
  • ベクトル(基本的な計算とか、ベクトルとはなんぞやとか、そのぐらい知っておけば大丈夫です)

授業内でカバーされる分野

  • 線形代数(行列って、まじで簡単なので、ここに関しては何も知らない状態でも講義をうけて大丈夫だと思います)
  • ベクトル(機械学習では、行列でベクトルを表現して、それをボコって計算するんですが、まあ、講座を受ければわかります)
  • 統計学の知識(正規分布とか、相関係数とか、ヒストグラムとか、分散とか)

あるとGoodな知識

  • 偏微分(まあこれも、表記法がちょっと特殊なだけで、普通の微分とあんま変わんないっす)
  • 線形代数の踏み込んだ知識(detとか、ジョルダン標準形とか、正規化とか、逆行列とか)

理系大学生で、一年目の線形代数&微積分を学んだ人は、余裕だと思います。つまり、この講義を理解するのに必要な知識は全部持っている、という状態ですね。

受講したきっかけ

唐突、以外のなにものでもありません。もちろん、きっかけはあります。僕は大学に入ってからプログラミングの勉強を始め、おもにウェブ周りの技術について習得してきました。フロントエンド、バックエンド、インフラ、とかそのあたりですね。

ただ、機械学習系の内容については、意識的に触れるのを避けてたんですね。なぜかというと、ウェブ周りのことだけでキャッチアップすることが山のようにあったし、機械学習って、やってる人はみんな天才なんだろうな、と嘆き、自分がやってもしょうがねえんじゃねえの、と思ったからです。

しかし、プログラミングを始めてから2年がたち、プログラミングを始めた頃のような、毎日インプットが膨大すぎて頭がパンクしそう、みたいな状況からは脱し始めてきたんですね。

つまり、ゆとりができたとなんか新しいこと勉強したいなという思いがじわりじわりと出てきました。

色々調べてみると、どうやら機械学習がオンライン上で無料で勉強できる、というではないですか。しかも、あのスタンフォード大学が提供しているコース。しかも、授業は全部英語。英語の勉強にもなるし、これは得なことしかないな、ということで、受講をすることにしました。

これが2020年の4月の後半ですね。

現代の機械学習のホントのところ

「機械学習って、統計学なんだな」

これが、僕が授業を受講してまず一番に感じたこと。講座のはじめに習うのは、いわゆる回帰分析というやつです。y = ax +b という式をいかに、現実のデータと誤差が出ないようにフィッティングさせるか、というのがテーマでした。

僕が大学一年の実験の授業で習ったことの一つに、「最小二乗法」というのがあるのですが、やりたいことは全く一緒でした。

そして次にやるのは、ロジスティック回帰分析。

e = 1 / (1 + e^-z) という曲線を使ってゴニョゴニョします。

正規分布にも講座内で触れています。

そして、講座の後半に差し掛かったところで、ようやく、「ディープラーニング」が出てきます。真打ちがようやく出てきましたよ。

ところが、僕はけっこう驚いたのですが、ディープラーニングというのは、それまでの統計的な手法を応用・発展させることで理解できる概念だったのです。

つまり、何が言いたいのかというと、ディープラーニングとは、決して魔法ではなかったのです。数学的な技法を積み上げていくことによって実現できるんだよってことですね。

この講座を受けるだけでも、現代における機械学習・AIを使うべき分野・使えない分野がわかりますし、これから機械学習エンジニアになりたい、という人にはまずはじめに抑えておきたい内容がカバーされてます。英語の勉強にもなります。

ということで、生きとし生けるものすべてにこのAndrew Ng先生の機械学習コースをおすすめします。近所のおばちゃんも、ペットのタマも、トイレの花子さんにも

最後に、Andrew Ng先生、最高の講義をありがとうございました!

https://www.coursera.org/learn/machine-learning