実装手法でなくて理論をきちんと勉強しようと思い、coursera machine learningの門を叩く

今回は理論から機械学習をきちんと勉強しようと思った話を書こうと思います。

 

機械学習の勉強を始めて、便利なライブラリを使って、それっぽいモデルを作って遊んだりしたのですが、このところとても壁を感じています。

ほんとにsklearnとかめちゃくちゃ便利で、線形回帰とかロジスティック回帰とかはほんの数行fitとpredictするだけで、アルゴリズムきちんと理解していなくてブラックボックスでも精度がそこそこ出るモデルが作れたり、とにかく動かすことができます。

ただ難しい複雑なアルゴリズムとかになってくると、調整しないといけないハイパーパラメータが増えてきて、そこをいかに処理するかというところで習得難易度が上がります。

機械学習はじめて最初の壁がここなように感じていて。

ただ、そこにおいてもGrid Searchするだとか、Optuna使うだとか、アルゴリズムを理解していなくて機械的にパラメータ探索する手法があって、その手法のやり方を学べば、難しいアルゴリズムを使ってそこそこよい精度のモデルを作ることは可能です。

 

しかし、しかしですよ。

ここ最近思うのは、機械学習モデルの実装はどんどん便利になっていくんだろうなということです。

PythonやRにおけるライブラリもそうだし、今ではGCPだったらSQLだけで簡単な機械学習モデルは組めるそうだし、これからはまさにプログラミングすら不要な、GUI操作で簡単に誰でも精度の高いモデルを組めそうな時代が来るんだなと思います。

聞いた話ですが、DataRobotとかまさにそんな世界観だそうで。

IBM WatsonのAutoAIとか、GoogleのAutoMLなんかもすごいです。敷居がさがりまくりです。

 

そうなったときに、いま理論をおろそかにしてライブラリの使い方をせっせと勉強するのはあまり得策ではない気がしていて。

近い将来実装の手法の敷居がもっと低くなると仮定するのであれば、「ライブラリの使い方」という実装手法の知識はもっと便利な実装手法にとって代わられることが大いに想像できます。

しかしいくら実装方法が便利になっても、そのおおもとの機械学習の理論がきちんとわかっていないと、

誤って使用してしまったり、

モデルはできてもどうしてそんなパフォーマンスになるのか説明できなかったり、

自分のビジネスに機械学習モデルを最適化できなかったり、

いろいろと不都合が生じるように思います。

どういうときにどういうアルゴリズムを使うべきだとか、こういう条件でしかそのアルゴリズムは使えないだとか、そういうことも理論をきちんと勉強することで根本から理解できるように感じます。

 

というわけで、先を見据えて勉強するならば、結果がすぐに見えて成長したように錯覚しやすい実装手法よりも、

勉強するのも大変でなかなか身につかなくて(成長という)果実がすぐには手に入らない理論をきちんと勉強した方がよいのだろうなと感じました。

(そもそもライブライの使い方わかっただけで、機械学習使えるようになったなんて思うのがおろかだという話です)

 

そこで入り口としてcourseraのmachine learning講座を始めることにしました!

正確には2か月前くらいには始めていたもののの、途中までやって放置していたのを再開することにしました。

この講座は、理論を解説して、数式をプログラミングコードに起こす(octaveという言語ですが…)というのを繰り返すので、理論もわかりつつ、理論とエンジニアリングの橋渡しにもなるという点でとても良い講座なようです。

 

興味ある方はこちらから↓

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

がんばります!(一緒にがんばりましょう!)