はじめに
こんにちは。
近年機械学習やらディープラーニングやらが話題になってきて、文理問わず「知識をつけないと!」と思っている方は多いと思います(自分もその一人です)
そんな風に思いつつネットをさまよっていると、「CourseraのMachine Learningをやるべき」みたいな記事を目にすることがあります。けれど正直、文系(というか当時の自分)にとってみれば「結局受けてもなにがなんだかわからなくて時間の無駄なんじゃ、、」みたいに思うと思います。そこで、自分の受講体験を基に、「いや、数学苦手な文系にこそ受けてほしい!」ということを示し、ちょっとでも機械学習を学ぶ人が増やせればなと思い執筆します。
そもそもCourseraのMachine Learningとは?
知っている方も多いと思うので多くは語りませんが、CourseraのMachine Learningとは、機械学習初学者向けに作られたオンライン動画講座です。巷にあるいろいろな学習教材と違うところは、
・無料である
・スタンフォード大学が提供している
・先生は機械学習の世界的権威でGoogleにいたこともあるAndrew Ng先生
・日本語字幕がある
ということでまさにコスパ最強の学習法というわけです。
自分のスペック
ここで自分のスペックをさらっと書いておきます。とにかくこんなレベルの人間でもできるってことがわかっていただければ十分です
・文系単科大学所属の学部生
・得意教科は国語と日本史
・センター試験の数学は数学IA,IIB 合わせて100点前後
・線形代数を落単し再履修
・プログラミングはHTML,CSSをサークルのHPのために学んだくらい
・機械学習については松尾先生の本を読んだくらい
・講座受講前の事前準備なし。体当たり。
一言で言うと数学が苦手でプログラミングの経験もないということです。よくこんなので受けようと思ったものです。
実際やってみた結果
無事終了することができました
(とても感動的な最後の講義)
Courseraには期限があり、一応そこまでに終わらせなければいけません。このコースでは3ヶ月と設定されているのですが、自分は1週間オーバーで修了しました(このようにもし終わらない場合優しく延長してくれます)。
必要な数学の知識
・Σが何をしているかわかる
・二次関数とか三次関数がだいたいどんな形をしているかわかる
これがわかるレベルであれば十分だと思います。まあ高校数学をそれなりに真面目に聞いていた人なら大丈夫だと思います。
「え、線形代数は??」「微積分は??」と思った方もいるかもしれませんが、線形代数に関しては講義の中でこれでもかというくらい丁寧な線形代数のレクチャーが有ります。
微積分に関しては、「お前らわかんないでしょ?」という前提のもと話を進めてくれるので、必要ありません。実際僕は講座の中で微分も積分もしませんでした。
必要なプログラミングの知識
これに関しては全く不要です。というのも、使用する言語がOctaveというものなのですが、この言語がスグレモノでまるで紙に数式を書いてるかのように直感的にコードが書けます。また、for文とかif文のようなプログラミング的な話も出てくるのですが、これまた丁寧なレクチャーがあります。
週ごとにプログラミング課題が設定されており、それを解くのが次週へ進む条件なのですが、以上のような特徴+授業のわかりやすさで文系でも解くことができます。
その他文系におすすめできるポイント
Andrew先生の授業がとにかくわかりやすい・面白い
先程も少し言ったのですが、Andrew先生はさすが世界的にも有名な大学の講師ということで授業が非常にわかりやすいです。基本的には、「何をしているのか直感的にわかってもらう」→「中で何が起きているのか詳しく見てみる」という抽象→具体の流れに沿って理解していくことができます。授業のレベル的にも、なんにもわかってない人を相手にしているというスタイルなので、1から懇切丁寧に説明してくれます。また、モチベーションを上げるのも非常にうまいです。「ここまでやったらシリコンバレー以上だね君は(意訳)」みたいな一言をたまに挟んでくれたり、プログラミング課題を達成したおまけとして自分の書いたコードで実際に動くシステムを見せてくれたりと、枚挙に暇がありません。
数学が好きになる
高校時代の数学を学んでいて、「これ何の役に立つん?」みたいに思った方も結構いるんじゃないでしょうか。しかしながら、この講座を受講し、実際にプログラミング課題なんかをこなしていると「数学はこんな風に機能しているのか!」とわかって数学に興味が持てます。数学が苦手だけど、これからの時代には必要だし…と思っている方にとっても、いいきっかけになるんじゃないでしょうか。
数学的な考えが身につく
この講座では、実際にどのような発想であるアルゴリズム(機械学習を実装する方法のようなもの)が出来上がっていくのかが解説され、プログラミング課題でそれを実際に実装するという流れで講座が進んでいきます。そのため、物事を事実に沿って、順序立てて考えていくという考え方が自然と身につきます。
逆に文系には辛いところ
もちろん、数学の世界に飛び込むということで文系には辛いところもあります。
時間がかかる
正直なところ、この一点に尽きると思います。
実際に比べたわけではないのですが、数字と常に向きあっている理系の方々と比べると進みは遅いと思います。特に最初の方では、数学的な考え方に慣れ、プログラミングに慣れ、多少複雑な行列計算に慣れ…ということでなかなか歩みが進まない瞬間が多いと思います。そこまで高度なことをしている印象も持てないので、なかなかモチベーションも上がりづらい時期だと思います。
しかしながら、後半に行けば行くほど慣れてきてスピードも上がってくるので、諦めずがんばってください。
しかしそれでもやる価値はある!
なかなか文系には辛いところがありますが、それでも修了した後には、世間で言われている機械学習の話がある程度理解できるようになり、さらに自分で実装もできるということで非常に自信がつきます。それだけでなく、身近な課題を機械学習の力を用いて解決できるようになり、自分や周囲にとって大いに助けになると思います。
ぜひ、受講してみてください。