機械学習
DeepLearning
ポエム

機械学習を一から学ぶときやってはいけないこと

または、いかに私は心配するのをやめてそこらへんで提供されているAPIを使うことを考え始めたか。

警告: 本記事は機械学習について解説するものではありません。失敗した人間の残したポエムです。

「やりたいこと」を決めずに始める

一般に(と、私が思っているだけかもしれませんが)、とりあえず「こういうのがやりたいなー」というのを決めて学習を始めるのは良いこととされています。
しかし、機械学習においては(これから機械学習をガチで研究すると心に決めているのでもなければ)、これは「良いこと」ではありません。ただの必須事項です

「機械学習」というのは非常に範囲の広い言葉です。
というか、特に数年前から流行って多方面で利用されている Deep Learning に限ってなお滅多クソに広いです。
しかも界隈は略語まみれで、ある略語を調べようとすると略語が出てきて、それを調べようとするとまた、という無限ループは日常茶飯事です。
自分を見失わないように、目標を立てておきましょう

サンプルコードから始める

死にます
非常にありがたいことに、世の中には(それこそQiitaを漁れば)無数のサンプルコードが転がっています。
しかし、この分野は非常に若いのです。枯れる気配はまだまだありません。
また、マジでゼロから書くと凄まじく厄介な界隈でもあるので高レイヤのライブラリが活発に開発されています。

ということはつまり使えない/参考にするのが限度なコードが山ほどあります
ぶっちゃけ一昔前 jQuery が流行りだした頃のコードの切れ端たちなんてマシな部類です。アレはダメなやつ見たらすぐわかりますしね。

開発環境から準備する

死にます
Jupyter Notebook とか平気でガンガン出てきますが、ぶっちゃけ無視したほうがいいです
そんなもんよりまず基本的な概念を勉強するべきです(とはいえ、Pythonなりなんなり、使う言語に慣れるという意味で有用なのは間違いありません)。
特にDockerやVagrantでガンガンコンテナ化してやるぜ!みたいなのは死にます。低レベルな部分に触りに行くことも珍しくないので、環境準備するならむしろハード買いましょう

AMD

死にます死んでばっかだな
流石に私みたいにAPUで機械学習やるぞ!とか思っちゃうおバカはそうそういないと思いますが、ほんっとうに理不尽かつ意味不明な死に方をします
それこそ Windows Me じゃねーんだぞ!! と叫びたくなることうけあいです。
徹夜でコードを仕上げ、朝コード流し、出社し、昼休みにリモートでつなごうとしたら落ちていて入れず、夜ログを見たら変な死に方をしていた日にはキレそうになります。

もしもあなたの開発機がAMDなら、諦めてIntel機にNVIDIAのグラボ載せたのを買うかクラウドにガンガン金をつぎ込む覚悟をしましょう。
札束重要です。さもないと時間が消し飛びます。

片手間+期間を区切る(~3ヶ月)

間に合いませんやっと死なないのが出てきた
もし仕事をしているなら、とりあえず一週間有給とって金と時間つぎ込めば、運が良ければスタートラインには立てるよね!ぐらいの気合を入れましょう
さもなくば、たっぷりと時間を掛けて基礎固めから入るべきです。

どういうことかというと、機械学習というものは非常に学習コストが高い領域です(よね?)。
あなたが学ぶべきものは、1に機械学習の基礎概念、2に信号処理(これはものによってはある程度無視できるかも)、3にライブラリ、4にライブラリ、5にライブラリです。概念レベルの話がわからないと困る上に、ライブラリも覚えることがいっぱいです
機械学習を学ぶことと比べられるのは、たぶんLoLやCivにハマることぐらいのもんでしょう。そのぐらい時間泥棒です。
なまじ楽しいから手に負えない

「やりたいこと」から始める

これに限っては賛否両論ある気がします。ただ、私はこれで死にました。
Qiitaでもなんでもかまいません。そこら中にある「Deep Learning やってみた!」だの「Deep Learning ハンズオン」だのを探してみましょう。

やたらめったら MNIST の手書き数字なるものが出てきますね?
ここからはじめてください。大抵のライブラリは最悪でも MNIST の手書き数字だけはお手軽に書けるようにできています
もしあなたが「うーん、でも俺自炊した本を OCR したいんだよねー」とか考えていたとしても(って、こんなこと考えるの私ぐらいですかね)、まずは MNIST からはじめてください。これが Hello World です。

さいごに

私はすっかりへし折れてしまいましたが、機械学習は楽しいですよ!
でも、「楽しい」は「大変ではない」ではありません
応用の利く楽しい領域だからこそ、無理のない方法で学びましょう

あと、ほんとに札束と時間重要です
それから、可能なら信号処理を勉強しつつ、たっぷり一年は掛けるぐらいの気持ちではじめましょう。もちろん、お試しレベルなら別ですよ!