Photo by Strelka Institute for Media, Architecture and Design秋山です。
最近、機械学習の勉強をしている人や、機械学習に関連した研究開発の求人を探す人がすごく増えてきましたね。弊社のエンジニアにも機械学習を勉強中の人達が何人かいます。
ただ、「機械学習を勉強したいけど、難しすぎて何から手を付けたらいいのかよくわからない」という人も多いです。それなりに開発経験のあるエンジニアでもそうなので、経験の浅い人だと、なおさらかと思います。
機械学習と一言で言っても、実践するのに必要な知識の分野は多岐に渡ります。
そこで今回は、未経験者が機械学習エンジニアとして転職するにはどういった知識や勉強が必要なのかを書いていきます。
■最低限必要な知識
◆プログラミングスキルとライブラリを使える知識
Pythonには、Tensorflowやscikit-learnなど、機械学習に適したライブラリが多くそろっていて、それらがよく使われています。最低限、各種ライブラリを使いながらのプログラミングが滞りなくできる知識は必要です。
また、ライブラリが使えても「ライブラリの中で何が起こっているのかはよく知らない・わからない」という状態では意味がありません。どんな開発でもそうですが、「結果が想定と異なる」とか「問題が起きた」というときに、ブラックボックスな状態だと改善や原因追求のしようがないので…。
機械学習では、内部でどんな処理が行われているのかの解析が必要な場面も多くあります。よく使われているPythonライブラリの中身はC言語やC++で書かれていることが多いので、C言語やC++についても、コードを読めるぐらいの知識は必要だと思います。
◆数学の知識
機械学習では、前提として数学の知識が必要となります。
絶対に必要なのが微分積分、あとは線形代数と行列暗算、統計などに関する知識はあったほうがいいでしょう。あとは機械学習で何がしたいかによって必要な分野は変わってきます。とりあえずは高校数学レベルの知識は網羅する必要があります。(実践していくと高校数学レベルじゃ足りなくなってきて大学数学も勉強する必要が出てくるかと思いますが、まずは高校数学を固めておかないとその先に進めないので…)
■レベル別学習方法
◆数学の知識が足りない人
数学の知識が怪しい人は、まずはこのあたりの書籍で高校・大学レベルの数学をおさらいしましょう。
◇長岡先生の授業が聞ける高校数学の教科書

長岡先生の授業が聞ける高校数学の教科書数学 (考える大人の学び直しシリーズ)
- 作者:長岡亮介
- 出版社/メーカー:旺文社
- 発売日: 2011/09/23
- メディア:単行本
- 購入: 2人 クリック: 19回
- この商品を含むブログ (5件) を見る
◇スバラシク実力がつくと評判シリーズ

スバラシク実力がつくと評判の微分積分キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!
- 作者:馬場敬之
- 出版社/メーカー:マセマ
- 発売日: 2017/09/01
- メディア:単行本
- この商品を含むブログを見る
◇統計学のための数学入門30講

- 作者:永田靖
- 出版社/メーカー:朝倉書店
- 発売日: 2005/04/01
- メディア:単行本
- 購入: 23人 クリック: 398回
- この商品を含むブログ (25件) を見る
◆プログラミング・ライブラリの知識が足りない人
Python使ったことないな、ライブラリよく知らないな、という人は、自分で実際に手を動かしながら、コードの書き方とかライブラリの使い方を学ぶのがいいと思います。
◇paizaラーニングのPython入門
paizaでは、プログラミング未経験者・初心者向け学習サービス「paizaラーニング」を公開しています。
「paizaラーニング」では、今まで有料だった「Python入門編」が、今月から【全編無料】となりました。Pythonを学びたい人はぜひ使ってみてください。
C言語、JavaScript、SQL、HTML/CSS、Python、Java、PHP、Rubyなど、ほかにもプログラミング初心者でも動画で学べる入門レッスンが多数あります。
◇Pythonの公式ドキュメント
Pythonは公式のチュートリアルも充実しているのでやっておくといいですね。あと、前述もしましたがブラックボックスじゃ意味がないので、Pythonの使い方でわからないことが出てきたらドキュメントをあたってみましょう。
www.python.org
◇各ライブラリのチュートリアル
PythonのWebフレームワークDjangoや、数値計算ライブラリのNumPyは当然として、データ分析に便利なpandasとか、scikit-learn、TensorFlow、matplotlib、Theanoなどなど(ほかにもたくさんあります)、機械学習によく使われているライブラリは公式チュートリアルなどをやってみて、何ができるか、どんな場面で使うと便利なのかを知っておいたほうがいいでしょう。
Python Data Analysis Library — pandas: Python Data Analysis Library
scikit-learn: machine learning in Python — scikit-learn 0.19.1 documentation
Matplotlib: Python plotting — Matplotlib 2.1.1 documentation
Welcome — Theano 1.0.0 documentation
ちなみに、Pythonの環境構築やNumPyのチュートリアルについては以前このブログでも書いたので、興味のある方はご覧ください。
paiza.hatenablog.com
◆データベース・データマイニングの知識が足りない人
データマイニングについては、NumPy、pandas、matoplotlibなどを使って、実際に自分でやってみるのが一番です。
人口分布など一般的なオープンデータを拾ってきたり、ライブラリに用意されているサンプルデータや自分の興味のあるデータを使ってみるといいでしょう。以前書いたこちらの記事では、paizaのユーザーがスキルチェック問題を解いた際のデータ(っぽく作ったダミーデータ)を分析してみましたし、
paiza.hatenablog.com
こちらの記事では(グラフ描画して可視化するためのFacetsを使った記事ですが)、身近なところで都内の放置自転車数のデータを使っています。
paiza.hatenablog.com
あとSQLが苦手な人は、勉強しましょう。「paizaラーニング」には「SQL入門」もあります。
◆機械学習の基礎知識が足りない人
初心者が機械学習の基礎知識について学ぶには、このあたりのサイトやスライド、書籍がいいでしょう。
◇CourseraのMachine Learningコース
www.coursera.org
Courseraというオンライン講座でスタンフォード大学の先生によるMachine Learningコースが無料受講できます。
◇書籍

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者:斎藤康毅
- 出版社/メーカー:オライリージャパン
- 発売日: 2016/09/24
- メディア:単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る

- 作者:平井有三
- 出版社/メーカー:森北出版
- 発売日: 2012/07/31
- メディア:単行本(ソフトカバー)
- 購入: 1人 クリック: 7回
- この商品を含むブログ (4件) を見る

- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー:丸善出版
- 発売日: 2012/04/05
- メディア:単行本(ソフトカバー)
- 購入: 6人 クリック: 33回
- この商品を含むブログ (20件) を見る

- 作者: Trevor Hastie,Robert Tibshirani,Jerome Friedman,杉山将,井手剛,神嶌敏弘,栗田多喜夫,前田英作,井尻善久,岩田具治,金森敬文,兼村厚範,烏山昌幸,河原吉伸,木村昭悟,小西嘉典,酒井智弥,鈴木大慈,竹内一郎,玉木徹,出口大輔,冨岡亮太,波部斉,前田新一,持橋大地,山田誠
- 出版社/メーカー:共立出版
- 発売日: 2014/06/25
- メディア:単行本
- この商品を含むブログ (5件) を見る
内容が網羅されているぶん、ぶ厚くて値段も高いので、ここまで書いてきたような分野の勉強が一通り終わって、紹介してきた書籍も理解できて、「さらに詳しい内容を勉強したい」とか「実務で機械学習やることになったので本腰入れて学びたい」という段階にきたときに手を出すくらいでいいでしょう。それでも読んでいて「わからない…」というところは出てくると思うので、そんなときは立ち戻って復習しながらコツコツ進めていきましょう…。
■まとめ
機械学習はハードルが高いと思われがちですが、数学とPythonの知識を固めつつ、チュートリアル的なところから進めていくとイメージも掴みやすいと思います。逆に、自分でコードを書いて実行して結果を見ないことには、いつまでたっても理解できないと思うので、まずは手を動かしてみましょう。
私もときどき勉強がてら、たまにこのブログでPythonや機械学習に関する記事を書いているので、興味のある方はごらんください。
paiza.hatenablog.com
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。