Photo by Strelka Institute for Media, Architecture and Design
秋山です。
最近、機械学習の勉強をしている人や、機械学習に関連した研究開発の求人を探す人がすごく増えてきましたね。弊社のエンジニアにも機械学習を勉強中の人達が何人かいます。
ただ、「機械学習を勉強したいけど、難しすぎて何から手を付けたらいいのかよくわからない」という人も多いです。それなりに開発経験のあるエンジニアでもそうなので、経験の浅い人だと、なおさらかと思います。
機械学習と一言で言っても、実践するのに必要な知識の分野は多岐に渡ります。
そこで今回は、未経験者が機械学習エンジニアとして転職するにはどういった知識や勉強が必要なのかを書いていきます。
■最低限必要な知識
◆プログラミングスキルとライブラリを使える知識
Pythonには、Tensorflowやscikit-learnなど、機械学習に適したライブラリが多くそろっていて、それらがよく使われています。最低限、各種ライブラリを使いながらのプログラミングが滞りなくできる知識は必要です。
また、ライブラリが使えても「ライブラリの中で何が起こっているのかはよく知らない・わからない」という状態では意味がありません。どんな開発でもそうですが、「結果が想定と異なる」とか「問題が起きた」というときに、ブラックボックスな状態だと改善や原因追求のしようがないので…。
機械学習では、内部でどんな処理が行われているのかの解析が必要な場面も多くあります。よく使われているPythonライブラリの中身はC言語やC++で書かれていることが多いので、C言語やC++についても、コードを読めるぐらいの知識は必要だと思います。
◆数学の知識
機械学習では、前提として数学の知識が必要となります。
絶対に必要なのが微分積分、あとは線形代数と行列暗算、統計などに関する知識はあったほうがいいでしょう。あとは機械学習で何がしたいかによって必要な分野は変わってきます。とりあえずは高校数学レベルの知識は網羅する必要があります。(実践していくと高校数学レベルじゃ足りなくなってきて大学数学も勉強する必要が出てくるかと思いますが、まずは高校数学を固めておかないとその先に進めないので…)
◆機械学習の概念やアルゴリズムに関する知識
当然、機械学習で使われるアルゴリズムなどの知識も前提として必要です。教師データあり・なし学習にはどんな手法があるとか、ニューラルネットワークがあって、ディープラーニングがあるとか、回帰によって分類する手法の中にはどんな手法があるかとか…。
◆データベース・データモデリングの知識
データモデリングとは、超簡単にざっくり言うとデータにおける相関や固有ベクトルといったパターンや構造を見つけたり、分類、異常検出などの予測、解析、検証などを行う過程のことで、データを正しく学習させるには必須の知識です。
あと、そもそもデータベースが操作できないといけないので、SQLやR言語の知識も必要となります。
全ての分野を網羅的に書くとキリがない・やりたいことによってさらに必要な知識は異なる・実務で機械学習やるならこんなもんじゃ全然足りない……のですが、機械学習入門スタートラインの手前に立つには、上記のような知識は最低限必須かと思います。
■レベル別学習方法
◆数学の知識が足りない人
数学の知識が怪しい人は、まずはこのあたりの書籍で高校・大学レベルの数学をおさらいしましょう。
◇長岡先生の授業が聞ける高校数学の教科書
長岡先生の授業が聞ける高校数学の教科書数学 (考える大人の学び直しシリーズ)
- 作者: 長岡亮介
- 出版社/メーカー: 旺文社
- 発売日: 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.21.2 documentation
Matplotlib: Python plotting — Matplotlib 3.1.0 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回
- この商品を含むブログ (5件) を見る
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 33回
- この商品を含むブログ (20件) を見る
- 作者: Trevor Hastie,Robert Tibshirani,Jerome Friedman,杉山将,井手剛,神嶌敏弘,栗田多喜夫,前田英作,井尻善久,岩田具治,金森敬文,兼村厚範,烏山昌幸,河原吉伸,木村昭悟,小西嘉典,酒井智弥,鈴木大慈,竹内一郎,玉木徹,出口大輔,冨岡亮太,波部斉,前田新一,持橋大地,山田誠
- 出版社/メーカー: 共立出版
- 発売日: 2014/06/25
- メディア: 単行本
- この商品を含むブログ (6件) を見る
内容が網羅されているぶん、ぶ厚くて値段も高いので、ここまで書いてきたような分野の勉強が一通り終わって、紹介してきた書籍も理解できて、「さらに詳しい内容を勉強したい」とか「実務で機械学習やることになったので本腰入れて学びたい」という段階にきたときに手を出すくらいでいいでしょう。それでも読んでいて「わからない…」というところは出てくると思うので、そんなときは立ち戻って復習しながらコツコツ進めていきましょう…。
◇Kaggle
Kaggle: Your Home for Data Science
Kaggleは、ざっくり言うと機械学習の競技プログラミングサイト…みたいな感じです。データと課題(例えば「この人口データを正しく分類してください」みたいな…)が投稿されて、参加者はその課題に合った最適モデル構築を目指して競い合います。
チュートリアルなどをいろいろやってみて、機械学習に慣れてきたらチャレンジしてみると勉強になると思います。
■まとめ
機械学習はハードルが高いと思われがちですが、数学とPythonの知識を固めつつ、チュートリアル的なところから進めていくとイメージも掴みやすいと思います。逆に、自分でコードを書いて実行して結果を見ないことには、いつまでたっても理解できないと思うので、まずは手を動かしてみましょう。
私もときどき勉強がてら、たまにこのブログでPythonや機械学習に関する記事を書いているので、興味のある方はごらんください。
paiza.hatenablog.com
■動画でプログラミングが学べるpaizaラーニングにPython×AI・機械学習入門編が登場!
動画でプログラミングが学べるpaizaラーニングでは、Python、Java、C言語、C#、PHP、Ruby、SQL、JavaScript、HTML/CSSなど、プログラミング初心者でも動画で学べる入門レッスンを公開しています。
そしてこのたび、新たに「Python×AI・機械学習入門編」が追加されました。
人気声優の上坂すみれさんによる進行役のスベトラーナ・小百合・ベレフスカヤと一緒に、実際に画像認識技術を使いながら、初心者でも機械学習を体験・学習できるレッスン内容になっています。
Python×AI・機械学習入門編は全編無料でごらんいただけます。詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。