AIエンジニアになるには?- 必要なスキルと学習方法-

AIエンジニアとは

まず、AIエンジニアはどういった職業なのか?

端的に説明すると、AIエンジニアとは、AIに与えるデータを整理したり、機械学習や深層学習のアルゴリズムを使ってデータを解析する職業のことではないかと思います。

大きく分けるなら

  • データサイエンティスト
  • 機械学習エンジニア

に大別できます。

AIを扱うエンジニアは新しい仕事だと言えるので、こういう細かい分け方についてはまだちゃんと定まっていない部分も大いになるかと思います。

ですが求められるベースのスキルに大きく違う部分はなく、どちらもデータの解析AIの開発を行うのが主な仕事です。AIエンジニアは、プログラマシステムエンジニアと同じくくりで見られることが多い職業です。

しかし、必要な知識スキルは大きく違います。

プログラマは設計に沿ったプログラムを書くことが仕事ですが、AIエンジニアはデータの解析をするのが仕事です。

もちろんプログラムも書きますが、その他にもより良い構成でAIに学習させて、素早くデータを解析する必要があります。

また、AIの学習に使うデータもAIエンジニアが与えなければなりません。AIエンジニアは科学者のようなより専門性の高い知識と技術が必要になります。

AIエンジニアに必要なスキル

AIエンジニアに最低限必要な知識を考えるにあたって
大きく6つの区分に分けてみました。

ここでは、将来AIエンジニアとして業務を行うにあたり、
大きく分けて6つの内容の基礎知識の全体像を把握してください。

①数学
– 微分、線形代数、ベクトル、行列、確率など

②統計の知識
– 標準偏差、分散、確率分布、推定、検定などなど

③プログラミングスキル
– Python
– numpy、pandas、matplotlib、scikit-learn、TensorFlowやkeras

この中で特にpandasを使いこなせると良いです。
機械学習を行う上で、データ前処理が必須なのですが、データ前処理を行う上で便利なライブラリです。②数学
– 微分、線形代数、ベクトル、行列、確率など③統計の知識
– 標準偏差、分散、確率分布、推定、検定などなど

④機械学習の基礎知識

  • 教師あり学習と教師なし学習
  • 前処理、特徴量設計、学習と評価
  • 単回帰、重回帰分析、最小二乗法、パーセプトロン、ロジスティック回帰
  • 決定木、ランダムフォレスト、サポートベクトルマシン、K-means
  • ディープラーニングの実装スキル及び知識
  • scikit-learn
  • TensorFlowやKerasなどのフレームワークの知識
  • scikit-learnで学習済みモデルを作るまでの流れなど。
    1.データの収集とデータの前処理欠損値の補完や外れ値の削除)
    2.特徴量の設計(特徴量の選択)
    3.モデル開発(モデルの選択と学習)
    4.モデル評価・・・交差検定、混合行列で評価など

⑤SQLを使ってデータベースを操作する知識
– select、insert、update、delete、where、like、limit、sum、avg、max、group by、having、order by、テーブル結合、ビュー、サブクエリ、caseなどなど

⓺クラウドの知識
– AWSやGCPやAzureなどのクラウドインフラ回りの知識

大きく6つもあり以外と多いなと思われたかもしれませんが、
一度に全てやるのではなく、①/②でベース知識を抑えた上で
③と④を進め、最終的に⑤・⑥あたりを進めていくのをオススメします。

理由実際にプログラムを書き、学習を進めていくのを推奨されている方も多いですが私は、理論からしっかり学んだほうがいいと考えている派です。

理論から入ったほうが、実践の際に理解度がぜんぜん違うことを実感できます。

AIエンジニアになるための学習方法

必要な知識は前の節で紹介しましたが、どのようにそれらを学べば良いのか考えていきます。

まず、数学に関して知識が不足していると感じる方は、下記のコンテンツからキャッチアップしていくことをおすすめします。

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

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

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

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

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

◇スバラシク実力がつくと評判シリーズ
スバラシク実力がつくと評判の微分積分キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!

スバラシク実力がつくと評判の微分積分キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!

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

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

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

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

その次に統計学に関してですが、

このあたりの本でいいのではないかと思います。

■統計学の知識がたりない人

明日からつかえるシンプル統計学 ?身近な事例でするする身につく最低限の知識とコツ (現場の統計学)

明日からつかえるシンプル統計学 ?身近な事例でするする身につく最低限の知識とコツ (現場の統計学)

このブログで一貫してお薦めしている「統計学的な考え方そのもの」についての入門書。基本の「き」からExcelGoogle Sheetsを使って学ぶことができます。代表値の概念やヒストグラム・散布図といった統計学の前段に当たるところから、相関係数や単回帰のようなその先の統計分析の初歩になるところまでをカバーしています。

Rによるやさしい統計学

Rによるやさしい統計学

Rで簡単にコードが書けて実践可能な例題をズラリと並べた統計学の入門書。入門書と言っていますが、内容自体は実はこの後に並んでいる中級者向けと同じぐらいのところまでを広くカバーしています。しかしながら、この本の良いところは数式を減らして代わりに徹底してRでコードを書いて実践し、なおかつプロットなどの可視化で視覚的に体感できるようになっている点。とりあえずこの本を最後まで写経*すれば、中級者向けの統計学の書籍も読みこなせるのではないかと思います。

統計学入門 (基礎統計学?)

統計学入門 (基礎統計学?)

自然科学の統計学 (基礎統計学)

自然科学の統計学 (基礎統計学)

人文・社会科学の統計学 (基礎統計学)

人文・社会科学の統計学 (基礎統計学)

鉄板中の鉄板である東京大学出版会の赤本・青本緑本の3巻シリーズです。記述統計・確率分布・中心極限定理などの確率論の基礎中の基礎・検定論・重回帰分析といった初歩を扱った赤本、実験計画法・線形モデル・最尤法・適合度検定諸論・GLM・検定力の基礎・乱数の基礎など自然科学分野でよく必要となるところを揃えた青本、そして系列相関・不均一分散・回帰モデル・操作変数法・内生性・時系列・疫学統計など経済学や社会科学分野でよく必要となるところを揃えた緑本、というラインナップです。

数学・統計学の知識を身につけたあとは、下記のような流れで知識を身につけていきましょう。

フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ
フェーズ2 機械学習プログラミング
フェーズ3 Kaggleに挑戦
フェーズ4 SQL、スクレイピング、クラウドなどの技術も身につける。
フェーズ5 機械学習スキルを活用してプロダクト制作をする
フェーズ6 教える

このフェーズごとに学んでいくことがもっとも自分自身に負荷をかけず、楽しく学ぶことができると思います。

フェーズ1ではプログラミング初学者の方を指しております。
もし、プログラミングを初めてという方は是非フェーズ1から目を通してください。

フェーズ2では実際にフェーズ1で学んだ内容をベースに、機械学習プログラミングに関する勉強方法を説明して参ります。
既にscikit-learnを使った機械学習プログラミングを行なっている方は飛ばして頂いても構いません。

フェーズ3ではKaggleといったコンペティションを通じて実践的なプログラミングを学ぶ方法を記述しています。

フェーズ4 機械学習をやる上で、データベースからデータを取り出すことは頻繁に行われますので、SQLの知識は必須です。ここでは、SQLの他にスクレイピング(データ収集用)、クラウドなどの技術の身につけ方を紹介します。

フェーズ5 機械学習スキルを活用してプロダクト制作に取り掛かりましょう。このレベルまで到達した方は、プロダクトを通じて学ぶことが多いです。

フェーズ6 人に教えることで自分の分かっていなかったことが明確になることがあります。なので、友人などに機械学習を教えて自分の理解を深めることもよいでしょう。

フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ

独学で、書籍を使って、
人工知能開発に最低限必要な知識は「機械学習の知識」と「Pythonの知識」と「機械学習のための数学と確率・統計学」です。

このフェーズでは、「機械学習の知識」と「Pythonの知識」に絞り学習していきましょう。


オススメ書籍を紹介していきます。

まず、プログラミング初心者または、Pythonの基本文法に自信がない方は下記書籍がオススメです。

p.jpg

・Python3 入門ノート

http://amzn.asia/8ccnGQH

こちらの書籍はpythonの基礎にあたる基本文法だけでなく、
機械学習プログラミングに関する基礎も学ぶことが可能です。
この書籍を一通り読み終えることで、pythonプログラミングの基礎力と、
機械学習プログラミングの体験が出来ます。

また、pythonプログラミングを始める際には、開発環境いらずのブラウザかつ無料で使える、CPU/GPUの機械学習環境が整ったGoogle Colaboratoryを利用してPythonプログラミングをしていきましょう。

次に、人工知能の概要に関してさらっと学びたい方は下記の書籍をお勧めします。

・人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書) [単行本]

ai.png

http://amzn.asia/iW1Ms5S

上記2冊はPythonの本を読み、
出てくるプログラムを手を動かしながら進めみることをおすすめします。

さて、上記2冊で人工知能に関する知識及び
Pythonプログラミングの基礎が固まった方は、
機械学習の一連の流れと統計的機械学習のプログラミングを始めましょう。

フェーズ2 機械学習プログラミング

・Pythonではじめる機械学習

download.jpg

こちらも手を動かしながらコードを書き、またその後コードを読む(写経)をおこなってください。
ただ本を読むだけより、手を動かしながら進める方が理解が深まります。

http://amzn.asia/0GskuMa

61qCGR2QqGL._SX390_BO1,204,203,200_.jpg

http://amzn.asia/9EPUIpg

ここまで来てライブラリの中でどのような処理がされているか気になった方は、ニューラルネットワークをnumpyなどの最小限のライブラリを使って、実装してみましょう。

数学の知識が不安な方は、下記で紹介している数学の本などを参考にしてみてください。

ニューラルネットワーク、ディープラーニング
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

download.jpg

http://amzn.asia/caXkYL3

こちらも実際に手を動かしながら、ニューラルネットを作りながら学びます。h

機械学習の技術書を読み、数式アレルギーが出た方はキカガク吉崎さん
の動画をオススメいたします。

手書きで講義で数学が学べ、何より説明がわかりやすいです。

数学がアレルギーの方は上記のほんと合わせて、2つの動画を利用することをオススメします。

【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 – | Udemy

【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 中級編 – | Udemy

数学+α
Pythonで動かして学ぶ! あたらしい機械学習の教科書

51iDMtWhZxL._SX355_BO1,204,203,200_.jpg

http://amzn.asia/fzt2aXa

確率、統計学
Pythonで学ぶあたらしい統計学の教科書

515zrlsaraL._SX350_BO1,204,203,200_.jpg

http://amzn.asia/1zA7oAJ

データ前処理
前処理大全[データ分析のためのSQL/R/Python実践テクニック]

download.jpg

http://amzn.asia/aa5dHB0

次に、ライブラリを用いてDeepLearningの学習をしましょう。
ライブラリはTensorFlowまたはKerasをオススメしています。
初心者にオススメなのはKerasの方です。

・Keras
PythonとKerasによるディープラーニング

51-0e4nTugL._SX387_BO1,204,203,200_.jpg

http://amzn.asia/8Ya7Xu5

※日本版は2018年5/28日に発売予定です。
英語版は下記から購入可能です。

Deep Learning with Python (英語)

・TensorFlow
TensorFlowではじめるDeepLearning実装入門

51+CSAP98RL._SX387_BO1,204,203,200_.jpg

http://amzn.asia/hLtvTDT

書籍以外にも、Udemyなどがオススメです。
次の動画も合わせてご利用してみてください。

Pythonで機械学習:scikit-learnで学ぶ識別入門

フェーズ3 Kaggleに挑戦

さて、フェーズ1,2では書店で販売されている機械学習関連の書籍を紹介しました。

上記の書籍を順番に1〜3ヶ月ほど手を動かしながら進めると、機械学習の一連の流れや、自分で機械学習のモデルを読み書きできるレベルになっているはずです。

ここでは、次のフェーズとしてKaggleSIGNATE(旧 DeepAnalytics)を使って、実践します。

Kaggleは、世界中のデータサイエンティストが集まるコンペティションサイトです。企業などが分析してほしいデータをここに載せて、ユーザーが分析をして、分析の精度を競います。

上位3位にはデータをあげた企業から賞金も出ます。

Kaggleのオススメの使い方としては、Kernels(カーネル)という機能を使うことです。カーネルでは、各データセットに対して他のユーザーが構築したモデルのコードの説明などがわかりやすく書いてあります。

Kaggleで実際にデータ解析を行うとわかりますが、データの前処理が大変重要です。ここでのポイントとしては、pandasを上手く使いこなせるかが鍵になっております。

pandasのデータ加工でわからないことがあれば、
pandas公式 チュートリアルから再度復習してみてください。

書籍としてはPythonによるデータ分析入門がオススメです。

フェーズ4 SQL、スクレイピング、クラウドなどの技術も身につける。

実データに関しては、Web上のデータであればデータベースに保存されていることが多いため、SQLの知識も必要になります。

ここでは、SQLを使ってデータ分析をするための参考になる書籍を紹介します。
・ProgateのSQL編(SQL初級者向け)
Progate[プロゲート] SQL

・SQLを使って分析をする(SQL中級者向け)
ビッグデータ分析・活用のためのSQLレシピ

61kzm62vzeL._SX382_BO1,204,203,200_.jpg

データ収集はデータベースから行うこともあれば、スクレイピング等で行うこともあります。
スクレイピングはWebサイトに掲載されている情報を収集するための技術です。
ここでは、スクレイピングの技術習得のためにオススメの書籍を二冊紹介いたします。


・1冊目にオススメ
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう

61sxmRFvyfL._SX376_BO1,204,203,200_.jpg

・2冊目にオススメ
Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド

51IiWeYB-7L._SX399_BO1,204,203,200_.jpg

・クラウド
ここではGoogle Cloud Platform(GCP)の簡単な説明をします。

Google Cloud Platformは、Googleが保有する膨大なインフラストラクチャや機械学習等といったサービスを使った分だけの支払いで利用することができるクラウドサービスの総称であり、GCPを使うことでサービスを開発する上でのインフラ周りや、高性能なデータ分析・機械学習サービスを各種APIを通じて利用が出来ます。
GCPとよく比較されるサービスとしてAmazonのAWS、Micro softのAzureなどがありますがそれらの違いは下記記事を参考にして見てください。

Google Cloud Platform とAWS、Azureの違い

また、GCPのAPIをPythonで呼び出すことが出来ますが、下記画像にある通り画像認識・動画解析、音声認識、自然言語処理などのAPIが用意されています。
自分の作りたいものを作るときに、0からscikit-learnやKerasなどを使って自前で作るより、APIを使った方が簡単にかつ、精度の良いものを作ることが出来ます。
自分にあったAPIを探し、ドキュメントや、Googleで検索したり、qiitaで調べたりして出てきた記事を参考にすれば実装が出来たりします。

スクリーンショット 2018-05-07 16.55.00.png

GOOGLE CLOUD PLATFORM での PYTHON

フェーズ5 機械学習スキルを活用してプロダクト制作をする

フェーズ5まで、機械学習スキルやそれ以外の人工知能関連技術を学びました。
ほとんど最後のフェーズですが、次のフェーズとしてはプロダクト制作をすることをオススメします。

プロダクトには様々な形があると思いますが、ひとまずWebアプリケーションが学習コストが少なく済むので、オススメです。
次に、モバイルのアプリなどに取り組んで見ても良いでしょう。
Webアプリケーション作成にはPyhonの他にも、HTML, CSS, JavaScriptの知識が必要です。
これらの知識はプロゲート, ドットインストールなどを利用して身につけましょう。

・HTML, CSS, JavaScript
プロゲート
3分動画のドットインストール(dotinstall)

また、PythonでのWebアプリケーション開発はDjango,Flaskなどのフレームワークが有効ですが、一人で学ぶには、Flaskが学びやすいです。
FlaskはUdemyの動画を参考にすると良いでしょう。
Udemy

動画を見るだけでなく、動画のプログラムを打ち込みながら手を動かして進めるのがオススメです。

さらに、Web開発を身につけた方は、Google CloudのAPIなども合わせ学び、これまで学んだことを合わせてあなたのアイデアを形にしてみてください。
Google Cloudでは、画像・動画分析、音声認識、テキスト分析などを容易に扱うことが可能です。

フェーズ6 教える

プログラミングや機械学習を学んだら、友人でも良いので誰かに教えることをオススメします。

教える以外にもQiitaやブログに記事を書いたり、イベントでLTに参加するのもよいかと思います。

AIエンジニアの需要

ここまでAIエンジニアに必要なスキルについて解説をしてきました。

ここでAIエンジニアの需要はあるのかどうか、調べてみました。

現在、AIエンジニアは経済産業省が選ぶ先端IT人材に認定されていて、
それらのエンジニアはかなり不足している状況だといえます。

https://www.kantei.go.jp/jp/singi/keizaisaisei/miraitoshikaigi/suishinkaigo2018/koyou/dai5/siryou4.pdf

未来投資会議 構造改革徹底推進会合「企業関連制度・産業構造改革・イノベーショ
ン」会合(雇用・人材)資料4  平成30年4月4日(第5回)


プログラマなどの一般的なエンジニアも不足している状態が続く中、より高度な技術や知識が求められるAIエンジニアは今後も不足していくことが予想されています。

ただし、AIエンジニアで未経験を歓迎するような求人はかなり少ないの現状で、理系大学卒や理系大学院卒の人材への求人が多くを占めています。

AIエンジニアになりたければ、転職をするという心持ちよりも、データサイエンティストという科学者になる心持ちで学習をしていく必要があるようにも思います。

まとめ

今回はAIエンジニアに必要な知識スキル、さらには学習方法今後の需要について、説明をしてきました。

今までAIエンジニアについてはっきりと分からなかった人もこの記事を参考に、AIエンジニア/データサイエンティストなどを目指していただければ幸いです。