ISBN 9784065020524
カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで
概要
Raspberry Pi 上で機械学習をハンズオンで体験し、ディープラーニングまで段階的に理解する
想定読者
Python の基本は書けるが機械学習の実装経験がなく、手持ちの Raspberry Pi を使って動くものを作りながら概念を習得したい人
こんな人には向いていない
- すでに scikit-learn や TensorFlow を使った実装経験があり、アルゴリズムの数学的背景を深く掘り下げたい人には内容が浅い
- Raspberry Pi の準備・配線・環境構築にまったく関わりたくない人には、実機セットアップの説明比重が負担になりやすい
- 最新のフレームワーク(PyTorch / Keras 2.x 以降)での実装を前提にしている人には、2018年刊行のサンプルコードが環境依存で動かない可能性がある
読了後にできるようになること
- サポートベクトルマシン(SVM)による分類の原理と、マージン最大化・ソフトマージンの考え方を実装を通じて説明できる
- 多層ニューラルネットワークとディープラーニングの違いを、同じアヤメ分類・手書き数字問題への適用で比較できる
- OpenCV を使った画像からのグー・チョキ・パー認識パイプラインを一から組み立てられる
- scikit-learn の基本 API(fit / predict)と matplotlib による結果可視化の実装パターンを習得できる
- 機械学習・ニューラルネットワーク・ディープラーニングの関係性を系統立てて説明できる
- 学習データの収集(自分の手の画像を撮影して使う)から推論までの end-to-end の流れを体験できる
本書のキー概念(章解説)
- 第 1 章 機械学習と人工知能、ニューラルネットワークとの関係 — 概念マップとして最初に読んでおくと後の章の位置づけが明確になる
- 第 2 章 機械学習入門 — 教師あり・教師なし・強化学習の違いを「アヤメ分類」という具体例で整理する
- 第 3 章 Raspberry Pi で機械学習を体験するための準備 — OS セットアップはサポートページ参照。Docker/Anaconda 代替を検討するなら先に確認を
- 第 4 章 サポートベクトルマシンによるアヤメの分類 — マージン最大化の直感を最もシンプルに理解できる章
- 第 5 章 多層ニューラルネットワークによるアヤメの分類 — 4章と同じ問題を別手法で解くことで、SVM との差異が浮き彫りになる
- 第 6 章 手書き数字の分類 — MNIST 相当のタスクで次元の呪いとディープラーニングの優位性に触れる
- 第 7 章 コンピュータとじゃんけん勝負をしよう — ゲームという文脈で学習データ取得〜推論の動機を与える章
- 第 8 章 画像処理でグー・チョキ・パーを読み取ろう — OpenCV の実用的な使い方を学ぶ。付録 B と合わせて読む
- 第 9 章 じゃんけんシステムの完成 — 7〜9 章は一連のプロジェクト。読者が自分で撮影した手の画像を学習データとして使う付録 C へ接続する
- 第 10 章 ディープラーニング — 本書の到達点。畳み込みニューラルネットワーク(CNN)への踏み台として機能する
ハイライト
- ラズパイを使ってさまざまな機械学習の演習を行い、体験を重ねながら理解する入門書。専門知識がなくても読み通せます。(「専門知識なしで読み通せる」という設計意図が明示されており、対象読者層を判断する際の指標になる)
- 自分の手の画像を学習用データとする方法(付録C)により、書籍のサンプルを超えて自前データで机上の空論でない体験ができる(読者が自分で学習データを作れる設計は、他の入門書との差別化要素として顕著)
外部からの言及
- Qiita の複数記事でサンプルコードを実際に動かそうとした際、scikit-learn・scipy・Keras・Theano などのライブラリが Raspberry Pi の ARM 環境でそのままインストールできず、Docker や Anaconda を組み合わせた代替環境が必要になるという実装上の注意が繰り返し言及されている(qiita)
- SVM のマージン最大化やソフトマージンの概念説明が丁寧だという評価がある一方、VNC 経由で Raspberry Pi に接続して matplotlib のグラフを確認するという手順が読者の環境構築ハードルになっているという報告もある(qiita)
編集メモ
Qiita 言及記事 5 件 / 確認できた累計 likes 約 6 / 2018 年刊行。言及記事のほとんどがサンプルコード動作検証目的で、トピックの定番候補としての量的シグナルは低い
読む前に押さえておきたいこと
- Python の基本的な文法(関数定義・リスト操作・ファイル読み書き程度)
- Raspberry Pi の基本操作(ターミナル接続・パッケージインストール)またはその代替として Docker の基本操作
- 高校数学レベルの線形代数・統計の概念(行列演算や平均・分散の意味を知っている程度で十分)
学習のコツ
- 第3章の環境構築は2018年当時の手順を前提にしており、現在の Raspberry Pi OS では依存ライブラリのバージョンが合わない場合がある。Docker + Anaconda を用いた代替環境を先に調べてから進めると詰まりにくい
- 第4〜5章はアヤメ分類という同一問題に SVM と多層ニューラルネットワークを順に適用する構成になっており、手法の違いを対比で理解できる。どちらの章も飛ばさず比較して読むと理解が深まる
- 第7〜9章はじゃんけんシステムの段階的な構築であり、付録 C(自分の手の画像を学習データとする方法)を手元で実践すると、データ収集から学習・推論までの一連の流れが体験として定着する
- 数式の厳密な導出を追うより「なぜこのパラメータを調整するのか」を直感として掴むことが本書の設計意図。数学的背景を深めたい場合は補完書籍を別途参照する前提で読む
出版社による内容紹介
ラズパイを使ってさまざまな機械学習の演習を行い、体験を重ねながら理解する入門書。専門知識がなくても読み通せます。 第1章 機械学習と人工知能、ニューラルネットワークとの関係 第2章 機械学習入門 第3章 Raspberry Piで機械学習を体験するための準備(※) 第4章 サポートベクトルマシンによるアヤメの分類 第5章 多層ニューラルネットワークによるアヤメの分類 第6章 手書き数字の分類 第7章 コンピュータとじゃんけん勝負をしよう 第8章 画像処理でグー・チョキ・パーを読み取ろう 第9章 じゃんけんシステムの完成 第10章 ディープラーニング ※Raspberry Pi用OSのインストールと環境設定の解説は、本書のサポートページに掲載されます。 【付録A】matplotlibを用いたプログラムの解説 【付録B】OpenCVを用いたプログラムの解説 【付録C】自分の手の画像を学習用データとする方法 (注:【付録】はサポートページにてPDF形式で配布します。電子版では、末尾に収録されます)
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。