30歳を過ぎて機械学習エンジニアに転身して半年になったのでこれまでやってきた勉強についてまとめる

# はじめに
どうも、30過ぎて情シスから機械学習エンジニアに転身するという割と変態的なキャリアを形成しているものです。
これまでの自分の反省も元にどう勉強してきたか振り返ってみたいと思います。
もともと理系出身ですし、IT業界の経験自体はあるので完全未経験というわけでもないので、理系の情報系の学生さんとか、大学卒業してあまり年数が経たない社会人の方であれば参考になる部分があるのではと思います。


## 基本スペック
- 年齢…32
- 学歴…理系大学院修士修了。物理系(大学初年度の線形代数、微分積分、確率統計ならギリギリなんとかなる。[Python機械学習プログラミング](https://www.amazon.co.jp/dp/4295003379/ref=cm_sw_r_tw_dp_U_x_yUJ8CbSW7EZ50)や[はじめてのパターン認識](https://www.amazon.co.jp/dp/4627849710/ref=cm_sw_r_tw_dp_U_x_hVJ8CbHZRFNCX)を見て数式でつまづくことはほとんどない。)
- これまでのキャリア…ERPのパッケージ開発1.75年(Javaなど)→ネットワークエンジニア1.75年(ツール作成程度にPython)→社内SE3年(社内システムの企画/保守。プログラミングはやってない。SQLならギリ書いていた)

現在はとある会社さんにて自然言語処理を対象に業務を行なっており、機械学習、深層学習等を用いて文書分類などを行なっております。

#学習内容
プログラミング、機械学習、数学と順にどのような学習をしてきたかまとめます。

## プログラミング
基本スペックのところで触れましたが、わずかにPythonを書いたことがあったので、思い出す程度に[Progate](https://prog-8.com/)のPythonをとりあえず1周だけやってあとは、実践でなんとかしています。
一応[入門Python3](https://www.amazon.co.jp/dp/4873117380/ref=cm_sw_r_tw_dp_U_x_7KJ8CbJ2V41H5 )を持っていて、現場においているのでたまに使っています。ただ、ググったり公式のドキュメントを見てなんとかしていることが多いです。
むかしPython初めてやったときも、入門サイトに一日かじりついてとりあえず使えるようにしたので、他言語経験者であれば今だと上記Progateやドットインストール等を一周やって実践に移ってもいいのではないでしょうか。
シェルやLinuxコマンドについては一応ネットワークエンジニアやってたことがあったので、思い出しながらなんとかしてます。
DBについては現時点であまり本格的に使用していないので割愛いたします。



## 機械学習
機械学習については実践で使う→家で中身＋周辺を勉強するというスタイルを取っています。
半年＋αであらゆる分野を実務で使えるようになるのはかなり難しいですしね。

初めての勉強で使ったのが

- [ゼロからつくるDeepLearning](https://www.amazon.co.jp/dp/4873117585/ref=cm_sw_r_tw_dp_U_x_5bK8Cb9S49QVQ)
- [ゼロからつくるDeepLearning2](https://www.amazon.co.jp/dp/4873118360/ref=cm_sw_r_tw_dp_U_x_RcK8CbQ7RZ94H)

の2冊を業務に入る前に読んでいました。
ここで実際に写経しながら中身も理解しつつ、丁寧に読んでいきました。2冊で一ヶ月以上かけたと思います。
同時に[CourseraのDeepLearningコース](https://ja.coursera.org/specializations/deep-learning)を受講しました。上記の本とかぶる部分も多いのですが、英語が大丈夫な方であればこちらはわかりやすいのでおすすめです（私は触れていないのですが、機械学習のコースもかなりわかりやすいようです）。
正直ここでPythonのコーディングや、Numpyの使い方をかなり強化したような気がします。
どちらも数式が多少出てきますが、丁寧に説明してくれているので高校くらいの数学が分かっていれば問題ないと思います。

あとは業務をやりながら、

- [Python機械学習プログラミング](https://www.amazon.co.jp/dp/4295003379/ref=cm_sw_r_tw_dp_U_x_yUJ8CbSW7EZ50)
- [直感DeepLearning](https://www.amazon.co.jp/dp/4873118263/ref=cm_sw_r_tw_dp_U_x_WnK8Cb6M3GAC3)

の業務で取り扱う部分を参照しているような形です(Python機械学習プログラミングについてはほとんど一回は読んでいると思います)。併せてKerasやScikit-learnなどの公式のチュートリアルなども適宜参考にしながら必要なところから学習しています。
Python機械学習プログラミングについては数式を使っての説明とコードがバランスよく載っていて中身を知りながら使うにはいいのですが、
数学が苦手な方は面喰らう可能性が高いので、そういった方は別の本を当たった方がいいかと思います。

Kaggleが有名ですが、実務でほぼ日本語のみを取り扱っている都合上、役に立つデータセットが少ないので使用していないです。
個人でデータを触るときは、[国会の議事録](http://kokkai.ndl.go.jp/api.html)をAPIで10年分以上抽出してきているので適当に加工したデータセットとして使用しています。
そろそろ他のデータセットを探さないとなぁと考えていたりします。

## 数学
パターン認識の勉強も少しずつですがやっています。
まだ、完璧に全てを理解しているわけではないのですが、 

- [言語処理のための機械学習入門 (自然言語処理シリーズ)](https://www.amazon.co.jp/dp/4339027510/ref=cm_sw_r_tw_dp_U_x_grK8CbP1KMVGP)
- [はじめてのパターン認識](https://www.amazon.co.jp/dp/4627849710/ref=cm_sw_r_tw_dp_U_x_hVJ8CbHZRFNCX)

の二冊を読み進めています。はじめてのパターン認識→言語処理のための機械学習入門の順で読んだのですが、言語処理の本の方がわかりやすく逆の方が良かったなぁと思います。
数学の確認の章がついてあったり行間をわかりやすく埋めてくれているので、言語処理以外の方でも、読む価値があるのではと思います。

個人的に線形代数でオススメなのが大学生向けに授業動画を上げられておる[予備校のノリで学ぶ「大学の数学・物理」](https://www.youtube.com/watch?v=svm8hlhF8PA&list=PLDJfzGjtVLHnc1vTpBaCNKMUl6HauQv1a)です。
線形代数も多数授業が上がっていて、私も全部は見ていないのですがわかりやすく内容も絞ってあるので、必要なところの復習に活用しました。
統計については有名な[統計学入門](https://www.amazon.co.jp/dp/4130420658/ref=cm_sw_r_tw_dp_U_x_j1O8Cb7NF2M5K)を持っていて、実務に入る前に読み返しました。今はわかりやすい本がたくさんあると思うのでこの本でなくていいですが、どれでもいいから基礎的な確率統計の本は一冊通読しておいた方がいい気がします。
微積については今のところ特に困っていないので何も使用していないです。


# 最後に
真面目にやられている方に怒られるかもしれませんが、はじめから完璧を目指さないことが大事だと思っています。
ライブラリを使うだけであれば、アプリ開発ほどのコーディング力が求められるわけではないのでまず使ってみるというのがいいと思います。

使う→中身を理解する→また使う→・・・

を繰り返すのがいいのではと思っています。今でもゼロからつくるDeepLearningを今読み返しても発見があったりするので、今後もこのプロセスを何度も繰り返すことになるのかなぁと思います。

あとは個人的に良かったのかなぁと思うのは、実務で早い時期に機械学習の案件に参画できたことかなと思います。どんな形であれ、実務経験は強いと思います。

世間で言われているAIブームのイメージとは異なり、普段は前処理ばかりで地味な分野なのですが、楽しくやれているので、今のところ転身してよかったかなぁと思っています。