こんにちは。 機械学習はブームですよね。激アツじゃないですか?「俺機械学習やってるで」と言ったらなんかかっこよくないですか? 今回は

「機械学習を始めたいけどどうやればいいんや。。。数学とかムリポやんプログラミングとかムリやん。。」

って思っているけど

「けどやりたいなあ、とりあえず一旦やってみよかな」

って思っている人のために機械学習の始め方を僕の経験を中心にまとめようかと思います。とはいっても長くなりそうなので具体的な進め方は次回にしてこの記事では僕のこれまでの過程を記します。

•機械学習の始まり方

まず、僕が機械学習を始める前のスペックを簡単にまとめます。
  1. 数理科の3回生
  2. 単位取れればいいや。くらいのモチベーション生活
  3. エクセル?ワード?パワポ?全部使えない
  4. ハッカーかっこいいー、けどパソコンのこととか全くわからん
多分、普通の学生だと思います。これだけ見ると文系と同じといっても過言ではないはず。ともかくこの状態から機械学習を始めた経緯と独学の方法などを書きたいと思います。 機械学習と聞いて思い浮かぶものはなんでしょう。僕が学習前に抱いていたイメージはおそらく画像処理に関係していたと思います。数年前に流行ったSNOWというアプリが印象的です。これはどうやって顔変えてるんや?と疑問に感じていました。そんな風に思いながら生活していると担任の先生が人工知能を研究していることを知りました。そして詳しいことは全く覚えていないんですがなぜか機械学習をすることしました。しかし、そのモチベーションは長く続かず、僕の中の第一次機械学習ブームは過ぎ去りました。 そして時が経ち、ある日僕は「将来は農業をやろう。」と決意しました。そして考えました「僕は今数理科で数学を学んでいる。どうやって農業をしようか。。」、そして僕は先生に相談しました。「数学で農業をしたいんですが何かアドバイスはあります?」先生は「農業界は数学を必要としている。」と答えてくれました。そこから今尚続く第二次機械学習ブームが始まりました。 機械学習は僕にとって初めての独学でした。もちろんプログラムは書きまくりますし、そのたびに数え切れないほどのエラーが出ました。そしてその都度グーグル先生に「〜〜〜エラー」で検索して解決に試みていました。よくスクリプトでhogeとかhello worldとかありますが、これの意味がそもそもわからない状態だったのでかなり苦戦しました。

•機械学習の進め方

そして初めての実装は「主成分分析」でした。実装?と思った方もいるでしょう。僕の場合は次の手順で数多のアルゴリズムを学習しました。
  1. 論文を読む
  2. 「PCA tutorial」で検索してまとまった記事を大量に読む
  3. 数式から導出しプログラムを書く
  4. 他人の実装から学ぶ
まず「論文を読む」という行為はもっとも重要でしょう。なぜならそのアルゴリズム導出の経緯が書いてあるからです。 そしてブログやまとめサイトでアルゴリズムについて他人の解釈を見てみるのは自分の理解につながると思います。なので僕はあらゆる方法でそのアルゴリズムについての資料を集め読み漁りました。具体的には「PCA pdf」などと検索しました。海外の大学のレジュメは豊富に落ちているので検索でたくさん出てきます。「stanfordのandrew先生」にはお世話になりました。そして数式から導出についてですが機械学習は数学により成り立っています。なので数式から理解することでアルゴリズムの本質がわかります。「このアルゴリズムはこうなっているのか、ここが強みか、ここが弱みか」などと考えることができます。 そしてライブラリ(出来上がりのプログラム)を使わず自分で一からプログラムを書きそのアルゴリズムを実装することを随時目標にして進んできました。とはいっても前述通りプログラミングはおろかパソコン自体素人の僕がいきなり書けるはずありません。そこで「PCA implementation in python」などと検索して先駆者のコードを参考にコーディングを勉強しました。様々な人の実装例のコードから読み取り、文法の使い方やクラスの作り方などを学びました。いうまでもなく見たことない文字が大量にあったのでこれについても一つづつ検索してそれぞれの意味を確認しました(長文読解で英単語を調べる感じです)。 こんな感じで勉強を進めてきました。

「プログラミング系ばっかやん、数学はどうやって勉強してん、数理科やからそんなしてないんか?」

って思った人いるかもしれません。答えは「No」です。プログラミングと同じくらい数学を勉強しました。方法は全く同じです。例えばテイラー展開を例にとりましょう。機械学習に限らずテイラー展開は様々な場面で登場すると思います。テイラー展開は数理科なら一年生で学びますが、前述通り不真面目だった僕は名前しか知りませんでした。なので「tyler expansion stanford」 で検索しあらゆるpdfを読み漁りました。そんな風にしてその他の定理なども勉強してきました。もちろん今尚現在もです。 でわ。