機械学習

機械学習入門者の考える理想的な学習

こんにちは、チズチズです。

今私は機械学習や深層学習を学んでいるのですが、序盤の頃は学び方を間違えていたなぁと反省しているので、その反省を踏まえて書いていきます。

まず

理論を学ぶよりコードを書け

ちょっと言い方を変えると

体系的に理解してから本質を理解しろ

これは、今私が一番大切にしていることで機械学習の勉強だけではなく日常でも活かそうと考えているものです。

まずは機械学習の具体例で説明していきます。

理由は後ほど説明します。

なぜ理論よりコード?

理論数式ばかりで理解が難しく、忘れてしまうことがある。
コードライブラリで簡略化されているため、書く分には知識ゼロでも書ける。

まずこのような違いがあることを明記しておきます。

理論を簡略化したものがライブラリですよね。

私は理論から学びましたが、理論の部分は今ほぼ忘れてしまっています。

私の場合ですが、理論から学ぶのは自分には合っていませんでした。

なぜなら、数式を理解してもライブラリにおいて数式と関数の結びつきばかりを考えてしまって進みが悪くなってしまったからです。

コードから学ぶとどうなるの?

まず、ライブラリは数式が関数化されているので操作するのは簡単です。

知識ゼロでもコードを組めます。

まずは体系的にこんなことをしたらこういう結果が出てくる。この関数を使うとこうなるということを学んでみます。

そして、いつかパラメータチューニングや応用編になったときに理論を理解したいというときになったら、数式的に理論をしっかりと理解するのが良いと思います。

今まで関数化されていたものの中身を理解するだけなのですから、なるほどとなる部分も多いでしょう。(数学の知識は予め勉強する必要はあるけれど)

チズチズの挫折

私は、Udemyのある理論から理解する機械学習の講座を買って勉強していました。

その講座は順序よく解説されているので、教えていることはとてもわかりました。

しかし、それを学んでからコードに活かせずにどう勉強すれば良いのだろうかと低迷してた時期がありました。

最終的に私はコードを書いてみて理論は後にする、という勉強法で勉強を進めていたら楽に効率よく学習することが出来ました。

私はこれからも体系的に理解してから本質を学ぶ。という学習をやってみようと考えています。

機械学習で使う数学ってどんなものがあるの?

機械学習や深層学習で使う数学って本当に広範囲のものばかりです。

簡潔に言うと

大学数学のほぼ全てを前提知識とした専門的な数学

です。私も1冊機械学習の理論書を持っていますが、大学数学を学んでようやく理解でいるものではないのではないかと考えています。

Twitterで軽くまとめてみました。

これらを全て勉強するのには相当な年数がかかります。

まり、理論から理解しようと思ったら上の数学全てを理解してからコードを書けということになります。

機械学習でも深層学習と線形回帰では結構違いあるので、大概には言えませんがこんなもんです。

今、こんなに勉強しなくちゃいけないって思った人!

習うより慣れろ!コードから書いてみよう!!

こんなに勉強しなくちゃいけないとなると気が遠くなります。

ライブラリはある程度簡略化されてるからこそまずはそこからやってみて、必要なときに理論を理解するのが良いと思います。

例えば、コードの勉強をしつつ線形代数を勉強して理論を理解したくなったときに線形代数を使えるようにするっていうことも可能です。

まだ機械学習を初めて数ヶ月しか経っていませんが、理論から理解するのは眠くなる上挫折しやすくなるので危険だと考えています。

あれ?機械学習だけじゃない?

私がおすすめする勉強法は

体系的に理解してから本質を理解する

です。

競プロでも蟻本とかでは具体例が一緒にあるように、こんなときにはこのアルゴリズムを使う。というような学習ができるのです。

つまり、これは機械学習だけの話ではないと思っています。

体系的な理解をするのは具体例で実践してみることが一番の近道だと思います。

何事でも「習うより慣れろ」が使えそうです。

最後に

もちろん、勉強法は人それぞれです。この記事はあくまでも私が一度挫折しそうになった経験を踏まえて自分はこのように勉強すると効率が良いというものをまとめてみたものです。

読んでくれた方の参考になれば幸いです。

お読み頂きありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です