2017.06.01
機械学習について勉強したくなったら読みたい本
今回のテーマは「人工知能・機械学習」です。機械学習を始めたいと考えるプログラマや、人工知能をビジネスに活かしたい人に向けて、おすすめの解説書を紹介します!
[特集]Manateeで自分に合ったIT書を探そう!-第2回-
ニューラルネットワークによる高精度な画像認識や、人間とAIによる囲碁の対戦など、様々な分野で人工知能とその周辺技術に注目が集まっています。コンピューターソフトウェアが人間のような知能をもっているかのようにふるまう様を見て、魔法かSFの世界のようにとらえている方もいるかもしれません。しかしながら、人工知能を支える重要な技術要素である「機械学習」を学ぶことで、その本質がはっきりと見えてきます。
最近は、機械学習に関する優れた書籍が数多く出版されており、学習のハードルが大きく下がっているため、学習を始めるには、まさにちょうど良いタイミングです。特にプログラマの方々にとっては、これまで培ってきた、さまざまなデータを扱うテクニックや、プログラミング言語に関する知識が存分に活かせるため、ぜひチャレンジしていただきたい分野です。
ただし、機械学習を根本から理解して本当の意味で使いこなす上で、学ぶべき技術領域は多岐に渡ります。どこから手を付けてよいか迷っている方も多いかも知れません。そこで、本特集では、これから機械学習を始めたいプログラマにおすすめしたい電子書籍を紹介します。
プログラマが機械学習という大きな武器を手に入れることで、これまで世の中になかった新しい価値を創造するアプリケーションを開発できる可能性が大きく広がるでしょう。
まずはしっかり基礎を固めよう!
機械学習を始める前にまず押さえておきたいのは、土台となる数学の知識と、実装に必要なプログラミング言語に関する知識です。特に数学の知識は、機械学習で利用する「モデル」の仕組みを正しく理解する上では欠かせません。
とはいえ、数学が苦手……学生時代のことなのですっかり忘れてしまった……という人も決して少なくはないでしょう。まずは、これらの振り返りと基礎固めに最適な書籍をご紹介します。
Pythonの基礎を学んで機械学習ライブラリを体験
機械学習の世界では、プログラミング言語として「Python」が多く用いられています。マイナビ出版の『実践力を身につける Pythonの教科書』は、プログラミング言語「Python」の入門書です。
Pythonのインストールと開発環境の作り方からはじまり、簡単なサンプルコードを使って文法が解説されています。リストや関数などの基礎、そして、モジュールとパッケージの基本的な説明へと進んだあとに、続く実践編では、機械学習ライブラリであるscikit-learnを使った手書き文字認識の解説があります。
まさに「教科書」のように丁寧な説明で、はじめてプログラミングを学ぶ方にも無理なく読める内容になっています。
[マイナビ出版]
ニューラルネットワークを自作しながらPythonと数学を学習
次に紹介するのは、深層学習(ディープラーニング)の基礎となるニューラルネットワークを自作しながら、Pythonと数学を学んでいくという書籍です。マイナビ出版の『ニューラルネットワーク自作入門』は、ニューラルネットワークの基本的な仕組みをしっかりと解説したあとに、Pythonを使って実装していくことで、ニューラルネットワークがどのように機能するのかを段階的に学ぶことができます。分かりやすい例をとりあげながら、「重み」とはなにか、どのように学習するのかといった初歩的なところから図解しています。
誤差逆伝播や勾配降下法についても、具体的な数値を代入したかたちで、親切に数式を説明しています。その後は、PythonやRaspberry Piを使って、実際に動くサンプルを試すことができます。
中学・高校レベルの数学の知識があれば難なく読み進められますので、特に数学が苦手な方におすすめです。また付録では、微分の仕組みや考え方が、わかりやすいイラスト付きで丁寧に解説されています。数学自体を復習したいという人にもちょうど良いでしょう。
[マイナビ出版]
機械学習の全体像を理解しよう!
機械学習を一言でいうと、データの背後にある数学的な構造をコンピューターによる計算で見つけ出す仕組みのことです。データをどう取り扱うのか、モデルとは何か、パラメータチューニングにはどう取り組むのか、予測精度についてどう考えればよいかなど、いくつかの重要なポイントをつかむことが大切です。そこで機械学習の基礎と全体像を把握するためにおすすめの書籍があります。
機械学習の基本からニューラルネットワークや自然言語処理まで
インプレスの『Python機械学習プログラミング 達人データサイエンティストによる理論と実践』は、ロジスティック回帰やサポートベクターマシンなど、機械学習の基本から始まり、ニューラルネットワークや自然言語処理まで包括的に幅広く学ぶことができます。使用しているライブラリはscikit-learn、Theano、seabornなどで、これらを使った実装を試すことができます。
アルゴリズムの詳細な説明のあとに、Pythonによる実装例を学ぶことができるので、一歩ずつ理解度を確認しながら読み進められます。また、異なるモデルを組み合わせるアンサンブル学習を用いた、より精度の高い分類器の実装を学ぶこともできます。
本書の大きな特徴は、データの適切な前処理によるトレーニングセットの構築や、ハイパーパラメータのチューニングのためのベストプラクティス、さらに、学習済み予測モデルを使ったWebアプリケーションを開発する方法など、より実践的な内容が含まれているところです。すでにPythonや数学の基礎知識があり、機械学習で解決したいビジネス課題がある方は、この書籍からスタートするのがよいでしょう。
達人データサイエンティストによる理論と実践
[インプレス]
深層学習のおもしろさ&奥深さを体験しよう!
機械学習の中でも特に注目を集めているのが「深層学習(ディープラーニング)」です。深層学習は、ニューラルネットワークを用いたモデルを利用して、複数の層の処理を重ねることで、より複雑な判断ができるようにする技術です。現在は、深層学習の便利なライブラリも数多く提供されています。深層学習の入門におすすめの書籍を紹介していきましょう。
TensorFlowを通じて畳み込みニューラルネットワークを理解
マイナビ出版の『TensorFlowで学ぶディープラーニング入門 畳み込みニューラルネットワーク徹底解説』は、TensorFlowを使って深層学習の代表的なモデルのひとつである「畳み込みニューラルネットワーク(CNN)」の仕組みを理解するための書籍です。
まず冒頭では、ロジスティック回帰によるニ項分類器で、基礎となる仕組みをしっかりと理解します。次に(ニューラルネットワークを用いない)シンプルな多項分類器による、MNISTデータを使った手書き文字の分類の解説があります。その後、ニューラルネットワークを用いた分類や畳み込みフィルターによる画像の特徴抽出などの理論と、TensorFlowを用いたコードを丁寧に解説しています。
本書の大きな特徴は、どのパートも「なぜ、その数式でモデル化するのか」「数式をどう解くのか」「それをどのようにコードに落とすのか」が、平易な表現で説明されているところです。そのため、深層学習の本質的な部分を深く理解したい方におすすめできます。Docker環境で動作する、Jupyter Notebookを使ったサンプルコードが提供されており、実際にTensorFlowのコードを動かしながら読み進められるので、深層学習のはじめの入門書としても最適でしょう。
畳み込みニューラルネットワーク徹底解説
[マイナビ出版]
段階的に深層学習を習得できる
また、マイナビ出版の『詳解 ディープラーニング TensorFlow・Kerasによる時系列データ処理』では、Googleがオープンソースとして公開している機械学習ライブラリである「TensorFlow」と、TensorFlowとTheanoのラッパーライブラリである「Keras」を使って深層学習を学ぶことができます。
冒頭では、深層学習を理解するために必要となる数学、具体的には偏微分と線形代数の基本が、約20ページにわたり丁寧に説明されています。続いて、Pythonによる開発環境のセットアップやライブラリの使い方の説明があります。数学やプログラミングに不慣れな方でも、手順を追って段階的に学ぶことができるでしょう。
その後は、パーセプトロンやロジスティック回帰、ディープニューラルネットワーク、リカレントニューラルネットワークといった、さまざまな手法の理論に続き、TensorFlowとKerasによる実装が詳しく解説されています。本書の大きな特徴としては、時系列データを扱うためのモデルである、リカレントニューラルネットワーク(RNN)についての解説が充実していることです。RNNの応用として、RNN Encoder-DecoderやAttentionの紹介もあります。
基礎から応用まで幅広い範囲を扱っているので、深層学習をはじめて学ぶ人が全体像をつかむのに適した1冊です。
TensorFlow・Kerasによる時系列データ処理
[マイナビ出版]
Javaを使って深層学習の理論と実装を解説
機械学習ではPythonを使った実装が多い中、インプレスの『Deep Learning Javaプログラミング 深層学習の理論と実装』は、Javaを使って深層学習の理論と実装を解説しています。本書で取り上げているJavaの深層学習ライブラリである「Deeplearning4j」は、大規模データ分散処理フレームワークであるApache Hadoopとの統合を前提に設計されているのが特徴です。また、このDeeplearning4jは、N次元配列を簡単に扱える科学計算ライブラリ「N-Dimensional Arrays for Java」を内部で使用しています。
理論と実装だけでなく、人工知能やディープラーニングの変遷や今後の展望なども紹介されています。特に、業務でJavaを使用している方におすすめできます。
深層学習の理論と実装
[インプレス]
ビジネスの観点からみた人工知能!
最後に、技術的な側面からだけではなく、実社会でどのように応用していくのか、あるいは、実際の開発をどのように進めるべきかなど、ビシネスの観点から解説した書籍を紹介します。プログラマの皆さんも知っておくと、きっと実用的なシステムを開発する時の手助けになることでしょう。
人工知能の開発をビジネスの視点で解説
C&R研究所の『人工知能システムを外注する前に読む本~ディープラーニングビジネスのすべて~』は、ディープラーニングを使用した人工知能開発について、ビジネスの観点から解説しています。漠然としたイメージを持ちやすい人工知能ですが、その歴史や何ができて何ができないのか、ディープラーニングの概要や関連する用語などを整理しています。本文中にExcelを使った線形回帰分析で売り上げ予測を行う例などもありますので、手元で手軽に試してみることができます。
機械学習やディープラーニングの手法を取り入れたシステムの開発の場合、伝統的なシステム開発とは、開発期間や費用の見積もり方法、あるいは、検収における考え方が異なります。
これらの基本的な考え方や知的財産権の扱いなど、実用的な内容がまとまっています。プログラマだけでなくテクノロジーを使ってビシネスを遂行する立場の人にもおすすめです。
~ディープラーニングビジネスのすべて~
[C&R研究所]
AI・IoT・ビッグデータが導く自動運転の未来
マイナビ出版の『自動運転でGO! クルマの新時代がやってくる』は、自動車メーカーやIT企業のあいだで注目が集まっている自動運転に焦点を当て、自動運転の未来を紹介した書籍です。
AI(人工知能)・IoT・ビッグデータなどの技術をベースにして、いかに自動運転を実現していくかが解説されています。また、高齢ドライバーによる自動車事故などの社会問題に、技術の力でどう取り組むべきかを知ることができます。
そのほか、2025年までに実現するであろう、さまざまな自動運転の技術について、たくさんの夢のある話でまとめられています。自動車業界のみならず、企業のデジタル化の流れを大きくつかむのに良い書籍となっています。
クルマの新時代がやってくる
[マイナビ出版]