ISBN 9784839962258
ニューラルネットワーク自作入門 : 数学とPythonの優しい旅
概要
中学数学からニューラルネットワークをPythonで自作する
想定読者
数学・プログラミングの前提知識がほぼない状態から、ディープラーニングの内部動作を手を動かして理解したい入門者
こんな人には向いていない
- PyTorch・TensorFlow等のフレームワークで実装経験があり、より高度な応用技術や最新アーキテクチャを学びたい人には内容の大半が既知となる
- 数学の厳密な証明や理論体系を重視する読者には、本書の直感的・絵解き優先のスタイルは物足りない
- 業務モデルを即戦力で動かすことが目標の場合、フレームワーク非使用の手作り実装中心という性格が直結しない
この本で身につくこと
- 誤差逆伝播法の仕組みを、微積分の事前知識なしに直感レベルで説明できる
- MNISTの手書き数字認識ニューラルネットワークをPythonでゼロから実装できる
- シンプルな実装から認識率98%へ改良するプロセスを通じ、モデル設計の勘所を体験的に習得できる
- 畳み込みニューラルネットワーク(CNN)の基本構造と動作原理を把握できる
- Raspberry Pi上でPython製ニューラルネットワークを動かす基礎的な手順を身につけられる
ハイライト(外部からの言及)
今日ニューラルネットワークは深層学習と人工知能の重要な鍵であり、大きな実績をあげています。しかし、実際にニューラルネットワークがどのように機能するかを本当に理解している方は極少数でしょう。 — 出典
本書が埋めようとする「理解の空白」を端的に示した箇所。なぜ自作アプローチが有効かの根拠がここに凝縮されている
シンプルなアイデアやコードを使用し、認識率98%のニューラルネットワークへと改良を進めます。自分で書いた手書き文字でニューラルネットワークをテストし、さらに「制作者の特権」を活かしミステリアスなニューラルネットワークの心の中を覗き見してみよう。 — 出典
Part 3の到達点を示す記述。具体的な精度目標と探索的な学習体験が読者の動機づけに直結する
章立て
イントロダクション
対象者・目標・アプローチを確認する。全体像を掴んでから Part 1 に入ると理解が加速する
第1章 Part 1: どうやって動くのか(数学編)
多数のイラストと具体例でニューラルネットワークの数学的基礎を解説。数式の細部より「なぜその計算が必要か」を意識しながら読む
第2章 Part 2: Pythonでやってみよう(実装編)
本書の核心。写経しながら各レイヤの入出力次元を手書きでメモすると誤差逆伝播の流れが追いやすい
第3章 Part 3: さらに楽しもう(拡張・改良編)
CNNへの拡張と98%への改良プロセス。Part 2のコードが動いた段階で着手すると達成感と理解の深まりが得られる
付録A: とってもやさしい微積分入門
Part 1で勾配の概念が曖昧に感じた時の補完資料。通読ではなく辞書的に参照するのが効率的
付録B: Raspberry Piでやってみよう
完成したモデルを実機で動かす体験用。本編とは独立しているため任意実施でよい
関連記事 / 参考情報
- ゴリゴリの文系がAIをほぼ独学した半年 — 非エンジニアが6ヶ月でAIを独学した経緯と参照書籍・リソースの詳細まとめ
- 第1回 AI実装検定【A級】に合格したので色々まとめてみた — AI実装検定A級合格のための学習戦略と参照書籍をまとめた試験対策記録
- 一口馬主の出資馬選定を機械学習で行う(第1回) — 競馬の出資馬選定に機械学習を応用する実験の第1回。学習の出発点として本書を参照
- 機械学習の理解-はじめの一歩 — 機械学習を始めるにあたっての入門ガイド。本書を初学者向け参考書として紹介
学習のヒント
- Part 1(数学編)は数式を追うことより「なぜその計算が誤差を減らすのか」という目的意識を持ちながら読む。Part 2の実装と対応関係が見えると一気に腑に落ちる
- Part 2を写経する際は、各レイヤの入力・出力の配列サイズを手書きでメモしながら進める。誤差逆伝播でどの方向に情報が流れるかを可視化するとデバッグのコストが下がる
- Part 3はPart 2のコードが一通り動いてから取り組む。認識率を段階的に改善する体験が「なぜこの設計変更が効くのか」を実感として教えてくれる
- 付録Aの微積分入門は最初から通読せず、Part 1で微分・勾配の概念が曖昧に感じた箇所の補完資料として辞書的に活用するのが効率的
前提知識
- 四則演算とグラフの読み取り(中学数学レベル)
- Pythonのインストール経験と変数・リスト・ループの基本操作
次に読む本
ゼロから作るDeep Learning
本書で直感的に理解した誤差逆伝播を数式ベースで厳密に実装する次のステップ。NumPyによる実装スタイルに連続性があり移行しやすい
PyTorch公式チュートリアル(pytorch.org/tutorials)
自作実装で原理を掴んだ後は実用フレームワークへ移行する段階。本書の理解があれば各レイヤの概念が具体的なAPIと結びつきやすい
出版社による内容紹介
ニューラルネットワークで使われる数学の最もやさしい入門書 ー さらにコンピュータ言語Pythonを使って自分自身で作ってみよう! 本書はニューラルネットワークで必要となる数学について、一歩一歩、旅する気分で触れていきながら、コンピュータ言語:Pythonを使いニューラルネットワークを自作します。今日ニューラルネットワークは深層学習と人工知能の重要な鍵であり、大きな実績をあげています。しかし、実際にニューラルネットワークがどのように機能するかを本当に理解している方は極少数でしょう。 本書では極カンタンなところからスタートし、ニューラルネットワークがどのように機能するかを理解していくーゆっくりと楽しい旅のお手伝いします。 読者の方には中学・高校で学んだ以上の数学の知識を必要としません、本書を通して微積分へ入門することも可能です。 本書の目的はできるだけ多くの読者に・できるだけ理解しやすくニューラルネットワーク自作をお手伝いすることです(さらに発展した課題が欲しい読者には、既にたくさんの教科書があると思います)。 Pythonでコードを作成し、独自の畳み込みニューラルネットワークを作成。「手書きによる数字」を認識してみます。 Part 1は数学的考え方に関するものです。我々は、ニューラルネットワークの基礎となる数学的考え方を、多くのイラストや例を使って丁寧に紹介していきます。 Part 2は実践編です。人気があり習得しやすいプログラミング言語:Pythonを紹介しつつ、人間が手書きした「数字」を認識し、容易に実行できるニューラルネットワークを構築していきます。 Part 3では、これらのアイデアをさらに拡張。シンプルなアイデアやコードを使用し、認識率98%のニューラルネットワークへと改良を進めます。自分で書いた手書き文字でニューラルネットワークをテストし、さらに"制作者の特権"を活かしミステリアスなニューラルネットワークの心の中を覗き見してみよう。 最後に制作物をRaspberry Piで動かしてみます。 本書で紹介するすべてのコードは、Raspberry Piで動くことを確認しています。 イントロダクション:本書の対象者 / この本で何ができるが / どのようにして行うのか Part 1:どうやって動くのか Part 2:Pythonでやってみよう Part 3:さらに楽しもう 付録 A:とってもやさしい微積分入門 付録 B:Raspberry Piでやってみよう
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。