レビュー
概要
『ゼロから作るDeep Learning』は、ディープラーニングをフレームワークの使い方としてではなく、計算の積み重ねとして理解させてくれる技術書です。NumPyだけを使い、パーセプトロン、活性化関数、損失関数、勾配、誤差逆伝播法、CNNまでを自分の手で実装していく構成になっています。最大の価値は、ライブラリが内部で何をしているのかを曖昧にしないことです。ボタン1つで学習できる環境は便利ですが、その便利さの裏側にある仕組みを知らないままだと、学習が止まったときにどこを疑えばいいのか分からなくなります。本書はそこを埋めてくれます。
構成もよくできています。2章ではAND、NAND、ORゲートをパーセプトロンで表し、単純な論理回路から出発します。3章ではシグモイド関数、ReLU、ソフトマックス関数、MNISTを使った推論へ進み、4章で損失関数、交差エントロピー誤差、数値微分、勾配法を学びます。5章では計算グラフと誤差逆伝播法を、加算ノードや乗算ノード、Softmax-with-Lossレイヤといった部品に分けて実装し、6章ではSGD、Momentum、AdaGrad、Adam、重み初期値、Batch Normalization、Weight decay、Dropout、ハイパーパラメータ最適化へ広げていきます。7章の畳み込みニューラルネットワーク、8章のImageNet以降の流れやGPU・分散学習の話まで読むと、技術の全体像がかなりつながります。
読みどころ
読みどころの1つ目は、誤差逆伝播法の説明がとても腹落ちしやすいことです。逆伝播は多くの入門書で最初の壁になりますが、本書は最初から難しい数式だけで押し切りません。計算グラフを使い、りんごの値段や税金のような小さな例で順伝播と逆伝播を分けて考えさせたうえで、ReLUやSigmoid、Affine、Softmax-with-Lossの実装へ進みます。そのため、「微分が必要だから使う」という抽象的な理解ではなく、「どこからどこへ誤差が戻っていくのか」をコードと処理の流れで掴めます。
2つ目は、学習がうまくいかない理由を“手触り”として理解できる点です。6章では更新手法の違いだけでなく、重み初期値によってアクティベーション分布が偏ること、Batch Normalizationが学習を安定させること、DropoutやWeight decayが過学習を抑えることが、MNISTの実験と一緒に示されます。ここは実装だけでなく、モデル改善の勘所を養う章です。深層学習は式を覚えただけでは使いこなせませんが、この章を読むと「損失が下がらないときにどこを見るべきか」が少しずつ見えてきます。
3つ目は、CNNの実装まで逃げずに扱うところです。畳み込み、パディング、ストライド、プーリングの説明に加えて、im2col を使って計算を行列演算に変換する発想まで踏み込みます。LeNetやAlexNetの紹介、1層目の重みの可視化、階層が深くなることでどのように特徴抽出が変わるかといった話もあり、「画像認識でCNNが強いらしい」という理解から一段深いところまで到達できます。最後の章でVGG、GoogLeNet、ResNet、物体検出、セグメンテーション、画像キャプション生成、自動運転、Deep Q-Networkに触れてくれるので、基礎を学んだ先にどんな応用があるかも見通しやすいです。
類書との比較
AIやディープラーニングの概説書は、技術史や応用範囲をつかむには便利です。ただ、読後に「結局どこから手を動かせばよいのか」が残りやすいです。一方、PyTorchやTensorFlowのチュートリアルは実装を早く始められる反面、内部の計算が隠れてしまいます。本書はその中間ではなく、むしろ基礎が腹落ちするまで遠回りする本です。今すぐ業務でモデルを回したい人には最短ルートではありませんが、後から強く効いてくるタイプの学び方です。
また、数学を厳密に掘る教科書とも少し違います。線形代数や微分の厳密な証明に重点を置くのではなく、実装と図解と最小限の数式で「なぜそうなるか」を理解させてくれます。大学の講義で理論に触れたあと、理解が止まっている人と相性がいいです。フレームワークから入ってブラックボックス感が抜けない人にも勧めやすいです。2016年の本なのでTransformerや大規模言語モデルは扱いませんが、勾配、正則化、層を深くする意味といった土台の部分は今でもまったく古びていません。
こんな人におすすめ
Pythonの基本文法は一応触ったことがあり、ディープラーニングをちゃんと理解したい人に最適です。特に、フレームワークでサンプルコードは動かせるけれど、損失関数、逆伝播、最適化手法の関係が曖昧な人には強く向いています。研究室で画像認識を始める学生、機械学習エンジニアを目指す独学者、数式だけでは理解しきれない実装派の人に相性がいいです。
逆に、まったくのプログラミング未経験者には少し重いです。1章でPythonとNumPyの基本は押さえてくれますが、その先は自力でコードを追う粘り強さが必要になります。また、最新のLLMアプリ開発だけを急いでやりたい人には回り道に感じるかもしれません。ただ、本質的な理解を土台にしたいなら、この回り道はかなり価値があります。
感想
この本の良さは、ディープラーニングを「使う技術」から「理解できる技術」に変えてくれることです。パーセプトロンの論理回路から始まり、MNISTの推論、交差エントロピー誤差、数値微分、逆伝播、CNNへと進んでいく流れを追ううちに、別々に見えていた概念が1本の線になります。特に、誤差逆伝播法やBatch Normalizationのような、入門段階では呪文になりがちな概念が、自分で実装すると急に具体物になります。
もちろん、読むだけでは身につきません。コードを打ち込み、途中で形が合わずエラーを出し、勾配確認をして、「ああ、こういうことか」と納得する時間が必要です。ただ、その過程を通ったあとでは、フレームワークのAPIを見る目が変わります。ブラックボックスが完全に透明になるわけではありませんが、少なくとも中で何が起きているかを推測できるようになります。派手さより理解の深さを優先したい人にとって、いまも非常に強い一冊です。