1. Qiita
  2. 投稿
  3. 深層学習

【人工知能初心者向け】機械学習・Deep Learningプログラミング学習の道筋と参考書籍

  • 13
    いいね
  • 0
    コメント

eeee.010.jpeg

はじめに

今回は私が人工知能プログラミングを学習する際に参考にした書籍と、
そのスキル習得の道筋を上記フローと共に振り返りメモとして残します。

現在私は競馬予想・AIがゲームをプレイするプログラムを作成しています。
これから人工知能の領域に一歩踏み出そうという方に少しでも本Qiitaが役立てば幸いです。

今回具体的にプログラムの説明はしないので、
人工知能プログラム自体に興味のある方は本Qiitaの最後にリンクを載せているので参照してください。

前提

今回選択した書籍は私が読んだものの中でも比較的易しめで、
可能な限りプログラムが添付されているものを選択しました。
なぜなら、プログラムを実装して、動かして、理解して、を繰り返すのが、
スキル習得(実装を含む)するための近道だと実体験から感じたからです。

ですが、「人工知能」の世界は広くまだまだ未開拓です。
また、下記引用の通り、データサイエンティストの定義・スキルセット・スキルレベルは広大です。

機械学習を学ぶために必要なスキル.
・ ビジネススキル
  ・ビジネスに対する深い理解
 ・ロジカルシンキング
 ・ドキュメンテーション/プレゼンテーション
 ※ 多くの場面でデータ集めから理論的な説明が必要になります。

・ ITスキル
 ・幅広いIT知識
 ・大規模データ処理に関する知識
 ・データベースに関する深い知識
 ・プログラミング
 ※ 本当に範囲が広いのでインフラからロジックまでフルスタックにできる人が必要になります。

・ 統計解析スキル
 ・数学
 ・データ分析手法の理解
 ・データ分析ソフトウェアのスキル
 ※ 確率・統計、微分積分、行列などが必須になります。
   記号が多いので最初自分はぜんぜん理解できませんでした。

引用元:機械学習を始めて2週間、機械学習を始めるのに必要だったこと - Qiita

スキル習得のためには継続的な努力と反復練習が必須となるでしょう。

今回は上記の「ITスキル、統計解析スキル」の中でも特に「機械学習、深層学習」に絞ったスキル習得の道筋と参考になった本を記述します。

また、機械学習と深層学習を理解するには実際にプログラミングをしていくことが必須となります。
スキル習得にあたっては開発言語にPythonを選択するのが自然かと思います。
なぜなら、Pythonには下記のような機械学習、深層学習のライブラリが豊富に揃っているからです。GitやQiitaなどでも殆どがPythonで記述されています。トラブルシューティングをする際にもPythonを選択していれば、インターネット上の情報を活用することが可能です。
 [機械学習ライブラリ一覧]
  TensorFlow:https://www.tensorflow.org/
  Chainer:http://chainer.org/
  Caffe:http://caffe.berkeleyvision.org/
  Theano:http://deeplearning.net/software/theano/index.html
  Torch:http://torch.ch/
  scikit-learn:http://scikit-learn.org/stable/
  PyML:http://pyml.sourceforge.net/
  Pylearn2:http://deeplearning.net/software/pylearn2/
  PyBrain:http://pybrain.org/pages/home

スキル習得の道筋・ゴール・方針

道筋とゴール

スキル習得のゴールは「初歩的でも自分で機械学習・深層学習をプログラミングできる。」としています。
そして、ゴールまでの道筋をStep1〜Step4に分割しています。

qqq.010.jpeg

スクレイピング、統計等の知識は今回は割愛しています。
機械学習と深層学習はともに共通している部分がありますが、今回は分けています。

方針

理論や背景はともかくまずはやってみることを主眼とし、
スキルを習得していくのが良いと私は考えています。
ただ、人工知能ってなんだかよくわかってないという人はまず外観を掴んだ後(誤解を解いた後)に、実践していくことをおすすめします。

Step毎に参考になる書籍を紹介しています。
主観ではありますが、可能な限りレベルに見合った書籍を選択しました。

人工知能スキルを習得!

Step1.人工知能の歴史を把握する

まずは、外観をつかむ。
このSTEPでのポイントは、人工知能における誤解を解くことです。
また、今後巨人の肩に乗ろうとするのであれば、Turing testやELIZAなど過去の偉人の功績も礼儀として把握しておきたいところです。

そんなの常識だよ!という方はこのStepを飛ばしてもらって構わないと思います。

Qiita6.004.jpeg

  • 人工知能は人間を超えるか

b.jpg

プログラミング要素はなく、誰でも読める入門にはもってこいの書籍です。
この本では人工知能の歴史、及び技術概要にふんわりと触れることができます。
私の周りを見てもまだまだ人工知能を誤解をしている人は多いので、
その誤解をここで解いておくことがスキル習得の道の第一歩となるでしょう。

Step2.人工知能技術全般に触れてみる

Step2ではプログラミング主体の書籍を参考に実務的な技術に実際触れてみます。
兎にも角にも手を動かしてみる。まずやってみる。それから学ぶ。
プログラムや理論がわからなくても、サンプルプログラムをコピペして動かすことが何よりも重要です。

機械学習や深層学習の

Qiita6.005.jpeg

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

q.jpg

この書籍は機械学習や深層学習の領域からもう一歩ビジネスサイド出て、かなり実務的な内容になっています。

マルコフ連鎖やLSTMなどを用いたテキスト解析、チャットボットの作成、
深層学習による牛丼の識別…などなど。
加えて、機械学習・深層学習に必須なデータ収集テクニック(スクレイピングやクローリング)まで網羅しています。
その分内容は広く浅くなってしまっていますが、本書のプログラムを何度もかいたり、自分なりにアレンジをかけてみると、非常に網羅的なスキルが身につきます。

この書籍を一通りこなすと、
人工知能とは様々な技術や手法の集合体であり、
実は人工知能っぽいものだったとわかってくるかと思います。

世の中がいう「人工知能(と言われているもの)」はチューリングテストを行った結果、「知的だ」と言っている存在にすぎないということです。

Step3(Step4).機械学習について深掘りしたくなったら

機械学習とはどういうものかがつかめてきたら、機械学習の世界にもうすこし足を踏み込んでみましょう。
個人的には深層学習よりも先に機械学習に触れることをおすすめします。

Qiita6.006.jpeg

  • Python機械学習プログラミング 達人データサイエンティストによる理論と実践

h.jpg

Step2で基礎知識が身についていなければ、難易度が高いかもしれませんが、
機械学習の実装についてかなり詳しく書かれており理論も記述されているため非常によい書籍だと思います。
最後の方では深層学習にも触れられます。

数式が多く拒絶反応が出る人がいるかもしれませんが、気にせず実装し続ければ問題ないです。
やっているうちに体が覚えていきます。気づいたら読めるようになっています。

この書籍に書いてあることが分かるようになれば自分で機械学習プログラミングをすることが可能になると思います。

更に理論的な知識が欲しくなれば、本書にも記述がされているように論文を参照したり別の書籍を当たる必要があります。

Step3.深層学習について深掘りしたくなったら

昨今ホットな領域。機械学習のスキルがある程度身についたら深層学習にも挑戦していきましょう。深層学習はやることによっては、かなりのマシンスペックを要します。
精度を出すためには層をふやしたり、試行回数を増やす必要があるので、
GPUマシンを調達し快適な環境で学習することを個人的にはオススメします。

Qiita6.007.jpeg

  • 実装 ディープラーニング

j.jpg

深層学習を実践的な方面から掘り下げるときにこの書籍は非常に役立ちました。
環境づくりや実装だけでなく、(少々駆け足ではあるが)深層学習の基本的な仕組みや基本用語、
画像識別をする際のコツ、強化学習を実践しながら学ぶことができます。

本書籍では特に深層学習が得意としている画像認識について学ぶことが出来ます。

Step4.更に深層学習を深掘りしたくなったら

畳み込み層やプーリング層の特徴の理解やネットワークのチューニング等々、
実践的なテクニックが必要となったらこのSTEPへ。

Qiita6.008.jpeg

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

k.jpg

言わずと知れたオライリーの「ゼロから作るDeep Learning」。
深層学習の理論や実践的なことまで深く理解するのにはうってつけの書籍。
最近の技術トレンドに加え、どうすれば認識精度が高くなるのか?なぜ高くなるのか?といったところまで詳しく説明がされているので、私自身も非常にお世話になっています。

ある程度スキルのある方は、深層学習はこの本一冊で十分かと思います。

この書籍に書いてあることが分かるようになれば自分で深層学習プログラミングをすることが可能になると思います。

役立った本リスト

上記以外でも機械学習・深層学習等々を学ぶ上で参考になった書籍のリストを連ねておきます。
詳細な説明は割愛しますが、参考になれば幸いです。

ざっくりとした難易度

かなり主観的ですが下記難易度で分けてみました。
入門:前提知識ほぼなし。数式不要。プログラミング不要。
易:数式不要。プログラミングの基礎知識があればいける。
普:数式がちょいちょい出てくる。易が分かれば分かる。
難:数式が出て来る。理論の説明が多い。結構手応えあり。

本のリスト

項番 サムネイル タイトル 著者 出版 難度 カテゴリ サンプルプログラム
1 a.jpg データサイエンス超入門 ビジネスで役立つ「統計学」の本当の活かし方 工藤卓哉 (著), 保科学世 (著) 日経BP社 (2013/11/7) 超入門 読物
2 b.jpg 人工知能は人間を超えるか ディープラーニングの先にあるもの 松尾 豊 (著) KADOKAWA / 中経出版 (2015/3/10) 超入門 読物
3 c.jpg あたらしい人工知能の教科書 プロダクト/サービス開発に必要な基礎知識 多田 智史 (著), 石井 一夫 (監修) 翔泳社 (2016/12/17) 機械学習、線形代数、解析学、統計学
4 d.jpg TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~ 中井 悦司 (著) マイナビ出版 (2016/9/27) 深層学習
5 e.jpg Chainerによる実践深層学習 新納浩幸 (著) オーム社 (2016/9/9) 深層学習
6 f.jpg データ分析のための機械学習入門 Pythonで動かし、理解できる、人工知能技術 (Informatics&IDEA) 橋本 泰一 (著) SBクリエイティブ (2017/1/21) 機械学習、深層学習
7 q.jpg Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう クジラ飛行机 (著) ソシム (2016/12/6) スクレイピング、クローリング、機械学習、深層学習
8 g.jpg Pythonによる機械学習入門 株式会社システム計画研究所 (編集) オーム社 (2016/12/1) 普(易) 機械学習
9 j.jpg 実装 ディープラーニング 藤田一弥 (著), 高原 歩 (著), 株式会社フォワードネットワーク (監修) オーム社 (2016/11/30) 深層学習
10 h.jpg Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear) Sebastian Raschka (著), 株式会社クイープ (翻訳), 福島真太朗 (翻訳) インプレス (2016/6/30) 機械学習、深層学習
11 i.jpg Pythonで体験する 深層学習 浅川 伸一 (著) コロナ社 (2016/7/26) やや難 深層学習、強化学習
12 k.jpg ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 斎藤 康毅 (著) オライリージャパン (2016/9/24) やや難 深層学習
13 w.jpg これからの強化学習 牧野 貴樹 (著, 編集), 澁谷 長史 (著, 編集), & 20 その他 森北出版 (2016/10/27) とても難 強化学習

おわりに

私自身はまだまだ未熟者ではありますが、この分野は新しく覚えることがとても多く刺激的です。これからも継続してスキルを習得していきます。

このQiitaを書こうと思ったきっかけは、
せっかく面白い分野なので人工知能初心者でも挫折することなく興味を持って学んでいってほしいと思ったからです。

(繰り返しになりますが)これから人工知能の領域に一歩踏み出そうという方に少しでも本Qiitaが役立てば幸いです。

備考

スーパーファミコンのソフトをTensorFlowで学習させてみる! - Qiita
puyo.jpeg

他にtensorflowで学習したマリオの動画はこちら
https://www.youtube.com/watch?v=T4dO1GKPx4Y

AIなどの技術情報を下記リンクにて配信していきますのでご興味のある方は
[facebook]
https://www.facebook.com/groups/1871981099685132/
[Twitter]
https://twitter.com/gauss_club