paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

未経験者から機械学習エンジニアになるために必要な知識と勉強法

f:id:paiza:20180116141028j:plain
Photo by Strelka Institute for Media, Architecture and Design
秋山です。

最近、機械学習の勉強をしている人や、機械学習に関連した研究開発の求人を探す人がすごく増えてきましたね。弊社のエンジニアにも機械学習を勉強中の人達が何人かいます。

ただ、「機械学習を勉強したいけど、難しすぎて何から手を付けたらいいのかよくわからない」という人も多いです。それなりに開発経験のあるエンジニアでもそうなので、経験の浅い人だと、なおさらかと思います。

機械学習と一言で言っても、実践するのに必要な知識の分野は多岐に渡ります。

そこで今回は、未経験者が機械学習エンジニアとして転職するにはどういった知識や勉強が必要なのかを書いていきます。

■最低限必要な知識

◆プログラミングスキルとライブラリを使える知識

Pythonには、Tensorflowやscikit-learnなど、機械学習に適したライブラリが多くそろっていて、それらがよく使われています。最低限、各種ライブラリを使いながらのプログラミングが滞りなくできる知識は必要です。

また、ライブラリが使えても「ライブラリの中で何が起こっているのかはよく知らない・わからない」という状態では意味がありません。どんな開発でもそうですが、「結果が想定と異なる」とか「問題が起きた」というときに、ブラックボックスな状態だと改善や原因追求のしようがないので…。

機械学習では、内部でどんな処理が行われているのかの解析が必要な場面も多くあります。よく使われているPythonライブラリの中身はC言語やC++で書かれていることが多いので、C言語やC++についても、コードを読めるぐらいの知識は必要だと思います。

◆数学の知識

機械学習では、前提として数学の知識が必要となります。

絶対に必要なのが微分積分、あとは線形代数と行列暗算、統計などに関する知識はあったほうがいいでしょう。あとは機械学習で何がしたいかによって必要な分野は変わってきます。とりあえずは高校数学レベルの知識は網羅する必要があります。(実践していくと高校数学レベルじゃ足りなくなってきて大学数学も勉強する必要が出てくるかと思いますが、まずは高校数学を固めておかないとその先に進めないので…)

◆機械学習の概念やアルゴリズムに関する知識

当然、機械学習で使われるアルゴリズムなどの知識も前提として必要です。教師データあり・なし学習にはどんな手法があるとか、ニューラルネットワークがあって、ディープラーニングがあるとか、回帰によって分類する手法の中にはどんな手法があるかとか…。

◆データベース・データモデリングの知識

データモデリングとは、超簡単にざっくり言うとデータにおける相関や固有ベクトルといったパターンや構造を見つけたり、分類、異常検出などの予測、解析、検証などを行う過程のことで、データを正しく学習させるには必須の知識です。

あと、そもそもデータベースが操作できないといけないので、SQLやR言語の知識も必要となります。


全ての分野を網羅的に書くとキリがない・やりたいことによってさらに必要な知識は異なる・実務で機械学習やるならこんなもんじゃ全然足りない……のですが、機械学習入門スタートラインの手前に立つには、上記のような知識は最低限必須かと思います。

■レベル別学習方法

◆数学の知識が足りない人

数学の知識が怪しい人は、まずはこのあたりの書籍で高校・大学レベルの数学をおさらいしましょう。

◇長岡先生の授業が聞ける高校数学の教科書

長岡先生の授業が聞ける高校数学の教科書数学 (考える大人の学び直しシリーズ)

長岡先生の授業が聞ける高校数学の教科書数学 (考える大人の学び直しシリーズ)

高校数学レベルから学び直したい人向け。ちょっと高いんですけど、数学I~Ⅲ、数~Cがこの一冊(DVD-ROMつき)で学べると思えば、むしろ安いはず…。

◇スバラシク実力がつくと評判シリーズ

マセマ出版のこのシリーズもわかりやすいですが、内容が大学数学レベルなので、高校数学から怪しい人は先にそちらを固めてからがいいかも。

◇統計学のための数学入門30講

統計学のための数学入門30講 (科学のことばとしての数学)

統計学のための数学入門30講 (科学のことばとしての数学)

統計学に必要な数学の知識が一通りまとまっています。

◆プログラミング・ライブラリの知識が足りない人

Python使ったことないな、ライブラリよく知らないな、という人は、自分で実際に手を動かしながら、コードの書き方とかライブラリの使い方を学ぶのがいいと思います。

paizaラーニングのPython入門

paizaラーニング
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などなど(ほかにもたくさんあります)、機械学習によく使われているライブラリは公式チュートリアルなどをやってみて、何ができるか、どんな場面で使うと便利なのかを知っておいたほうがいいでしょう。

Home | djangoproject.jp

NumPy — NumPy

Python Data Analysis Library — pandas: Python Data Analysis Library

scikit-learn: machine learning in Python — scikit-learn 0.19.2 documentation

TensorFlow

Matplotlib: Python plotting — Matplotlib 2.2.2 documentation

Welcome — Theano 1.0.0 documentation


ちなみに、Pythonの環境構築やNumPyのチュートリアルについては以前このブログでも書いたので、興味のある方はご覧ください。
paiza.hatenablog.com

paiza.hatenablog.com

◆データベース・データマイニングの知識が足りない人

データマイニングについては、NumPy、pandas、matoplotlibなどを使って、実際に自分でやってみるのが一番です。

人口分布など一般的なオープンデータを拾ってきたり、ライブラリに用意されているサンプルデータや自分の興味のあるデータを使ってみるといいでしょう。以前書いたこちらの記事では、paizaのユーザーがスキルチェック問題を解いた際のデータ(っぽく作ったダミーデータ)を分析してみましたし、
paiza.hatenablog.com

こちらの記事では(グラフ描画して可視化するためのFacetsを使った記事ですが)、身近なところで都内の放置自転車数のデータを使っています。
paiza.hatenablog.com


あとSQLが苦手な人は、勉強しましょう。「paizaラーニング」には「SQL入門」もあります。
paizaラーニング

◆機械学習の基礎知識が足りない人

初心者が機械学習の基礎知識について学ぶには、このあたりのサイトやスライド、書籍がいいでしょう。

CourseraのMachine Learningコース

www.coursera.org
Courseraというオンライン講座でスタンフォード大学の先生によるMachine Learningコースが無料受講できます。

◇書籍

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロからというタイトルですが、Pythonの知識がある人向けのディープラーニング入門書です。

はじめてのパターン認識

はじめてのパターン認識

はじパタは線形代数や統計など数学の知識がある人向けのパターン認識入門書…という感じかと思います。

パターン認識と機械学習 上

パターン認識と機械学習 上

  • 作者: 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.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段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのスキルチェック





※このブログで紹介しているキャンペーンやイベント、およびサイト内の情報については、すべて記事公開時の情報となります。閲覧されたタイミングによっては状況が変わっている場合もございますのでご了承ください。

ITプログラマー・エンジニア転職・就活・学習のpaiza

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編

エンジニアのためのプログラミング転職サイト|paiza転職

プログラミング スキルチェックエンジニア求人一覧

未経験からエンジニアを目指す人の転職サイト|EN:TRY

プログラミング スキルチェックエンジニア未経験可求人一覧

エンジニアを目指す学生の就活サイト|paiza新卒

プログラミング スキルチェックエンジニア求人一覧

ブラウザを開くだけで エディタ、Webサーバ、DB等の開発環境が整う|PaizaCloud