具体描述
ディープラーニングの本格的な入門書。外部のライブラリに頼らずに、Python 3によってゼロからディープラーニングを作ることで、ディープラーニングの原理を楽しく学びます。ディープラーニングやニューラルネットワークの基礎だけでなく、誤差逆伝播法や畳み込みニューラルネットワークなども実装レベルで理解できます。ハイパーパラメータの決め方や重みの初期値といった実践的なテクニック、Batch NormalizationやDropout、Adamといった最近のトレンド、自動運転や画像生成、強化学習などの応用例、さらには、なぜディープラーニングは優れているのか? なぜ層を深くすると認識精度がよくなるのか? といった“Why”に関する問題も取り上げます。
作者简介
作者简介:
斋藤康毅
东京工业大学毕业,并完成东京大学研究生院课程。现从事计算机视觉与机器学习相关的研究和开发工作。是Introducing Python、Python in Practice、The Elements of Computing Systems、Building Machine Learning Systems with Python的日文版译者。
译者简介:
陆宇杰
众安科技NLP算法工程师。主要研究方向为自然语言处理及其应用,对图像识别、机器学习、深度学习等领域有密切关注。Python爱好者。
目录信息
まえがき
1章 Python入門
1.1 Pythonとは
1.2 Pythonのインストール
1.2.1 Pythonのバージョン
1.2.2 使用する外部ライブラリ
1.2.3 Anacondaディストリビューション
1.3 Pythonインタプリタ
1.3.1 算術計算
1.3.2 データ型
1.3.3 変数
1.3.4 リスト
1.3.5 ディクショナリ
1.3.6 ブーリアン
1.3.7 if文
1.3.8 for文
1.3.9 関数
1.4 Pythonスクリプトファイル
1.4.1 ファイルに保存
1.4.2 クラス
1.5 NumPy
1.5.1 NumPyのインポート
1.5.2 NumPy配列の生成
1.5.3 NumPyの算術計算
1.5.4 NumPyのN次元配列
1.5.5 ブロードキャスト
1.5.6 要素へのアクセス
1.6 Matplotlib
1.6.1 単純なグラフの描画
1.6.2 pyplotの機能
1.6.3 画像の表示
1.7 まとめ
2章 パーセプトロン
2.1 パーセプトロンとは
2.2 単純な論理回路
2.2.1 ANDゲート
2.2.2 NANDゲートとORゲート
2.3 パーセプトロンの実装
2.3.1 簡単な実装
2.3.2 重みとバイアスの導入
2.3.3 重みとバイアスによる実装
2.4 パーセプトロンの限界
2.4.1 XORゲート
2.4.2 線形と非線形
2.5 多層パーセプトロン
2.5.1 既存ゲートの組み合わせ
2.5.2 XORゲートの実装
2.6 NANDからコンピュータへ
2.7 まとめ
3章 ニューラルネットワーク
3.1 パーセプトロンからニューラルネットワークへ
3.1.1 ニューラルネットワークの例
3.1.2 パーセプトロンの復習
3.1.3 活性化関数の登場
3.2 活性化関数
3.2.1 シグモイド関数
3.2.2 ステップ関数の実装
3.2.3 ステップ関数のグラフ
3.2.4 シグモイド関数の実装
3.2.5 シグモイド関数とステップ関数の比較
3.2.6 非線形関数
3.2.7 ReLU関数
3.3 多次元配列の計算
3.3.1 多次元配列
3.3.2 行列の内積
3.3.3 ニューラルネットワークの内積
3.4 3層ニューラルネットワークの実装
3.4.1 記号の確認
3.4.2 各層における信号伝達の実装
3.4.3 実装のまとめ
3.5 出力層の設計
3.5.1 恒等関数とソフトマックス関数
3.5.2 ソフトマックス関数の実装上の注意
3.5.3 ソフトマックス関数の特徴
3.5.4 出力層のニューロンの数
3.6 手書き数字認識
3.6.1 MNISTデータセット
3.6.2 ニューラルネットワークの推論処理
3.6.3 バッチ処理
3.7 まとめ
4章 ニューラルネットワークの学習
4.1 データから学習する
4.1.1 データ駆動
4.1.2 訓練データとテストデータ
4.2 損失関数
4.2.1 2乗和誤差
4.2.2 交差エントロピー誤差
4.2.3 ミニバッチ学習
4.2.4 [バッチ対応版]交差エントロピー誤差の実装
4.2.5 なぜ損失関数を設定するのか?
4.3 数値微分
4.3.1 微分
4.3.2 数値微分の例
4.3.3 偏微分
4.4 勾配
4.4.1 勾配法
4.4.2 ニューラルネットワークに対する勾配
4.5 学習アルゴリズムの実装
4.5.1 2層ニューラルネットワークのクラス
4.5.2 ミニバッチ学習の実装
4.5.3 テストデータで評価
4.6 まとめ
5章 誤差逆伝播法
5.1 計算グラフ
5.1.1 計算グラフで解く
5.1.2 局所的な計算
5.1.3 なぜ計算グラフで解くのか?
5.2 連鎖率
5.2.1 計算グラフの逆伝播
5.2.2 連鎖率とは
5.2.3 連鎖率と計算グラフ
5.3 逆伝播
5.3.1 加算ノードの逆伝播
5.3.2 乗算ノードの逆伝播
5.3.3 リンゴの例
5.4 単純なレイヤの実装
5.4.1 乗算レイヤの実装
5.4.2 加算レイヤの実装
5.5 活性化関数レイヤの実装
5.5.1 ReLUレイヤ
5.5.2 Sigmoidレイヤ
5.6 A.ne/Softmaxレイヤの実装
5.6.1 A.neレイヤ
5.6.2 バッチ版A.neレイヤ
5.6.3 Softmax-with-Lossレイヤ
5.7 誤差逆伝播法の実装
5.7.1 ニューラルネットワークの学習の全体図
5.7.2 誤差逆伝播法に対応したニューラルネットワークの実装
5.7.3 誤差逆伝播法の勾配確認
5.7.4 誤差逆伝播法を使った学習
5.8 まとめ
6章 学習に関するテクニック
6.1 パラメータの更新
6.1.1 冒険家の話
6.1.2 SGD
6.1.3 SGDの欠点
6.1.4 Momentum
6.1.5 AdaGrad
6.1.6 Adam
6.1.7 どの更新手法を用いるか?
6.1.8 MNISTデータセットによる更新手法の比較
6.2 重みの初期値
6.2.1 重みの初期値を0にする?
6.2.2 隠れ層のアクティベーション分布
6.2.3 ReLUの場合の重みの初期値
6.2.4 MNISTデータセットによる重み初期値の比較
6.3 Batch Normalization
6.3.1 Batch Normalizationのアルゴリズム
6.3.2 Batch Normalizationの評価
6.4 正則化
6.4.1 過学習
6.4.2 Weight decay
6.4.3 Dropout
6.5 ハイパーパラメータの検証
6.5.1 検証データ
6.5.2 ハイパーパラメータの最適化
6.5.3 ハイパーパラメータ最適化の実装
6.6 まとめ
7章 畳み込みニューラルネットワーク
7.1 全体の構造
7.2 畳み込み層
7.2.1 全結合層の問題点
7.2.2 畳み込み演算
7.2.3 パディング
7.2.4 ストライド
7.2.5 3次元データの畳み込み演算
7.2.6 ブロックで考える
7.2.7 バッチ処理
7.3 プーリング層
7.3.1 プーリング層の特徴
7.4 Convolution/Poolingレイヤの実装
7.4.1 4次元配列
7.4.2 im2colによる展開
7.4.3 Convolutionレイヤの実装
7.4.4 Poolingレイヤの実装
7.5 CNNの実装
7.6 CNNの可視化
7.6.1 1層目の重みの可視化
7.6.2 階層構造による情報抽出
7.7 代表的なCNN
7.7.1 LeNet
7.7.2 AlexNet
7.8 まとめ
8章 ディープラーニング
8.1 ネットワークをより深く
8.1.1 よりディープなネットワークへ
8.1.2 さらに認識精度を高めるには
8.1.3 層を深くすることのモチベーション
8.2 ディープラーニングの小歴史
8.2.1 ImageNet
8.2.2 VGG
8.2.3 GoogLeNet
8.2.4 ResNet
8.3 ディープラーニングの高速化
8.3.1 取り組むべき問題
8.3.2 GPUによる高速化
8.3.3 分散学習
8.3.4 演算精度のビット削減
8.4 ディープラーニングの実用例
8.4.1 物体検出
8.4.2 セグメンテーション
8.4.3 画像キャプション生成
8.5 ディープラーニングの未来
8.5.1 画像スタイル変換
8.5.2 画像生成
8.5.3 自動運転
8.5.4 Deep Q-Network(強化学習)
8.6 まとめ
付録A Softmax-with-Lossレイヤの計算グラフ
A.1 順伝播
A.2 逆伝播
A.3 まとめ
参考文献
Python / NumPy
計算グラフ(誤差逆伝播法)
Deep Learningのオンライン授業(資料)
パラメータの更新方法
重みパラメータの初期値
Batch Normalization / Dropout
ハイパーパラメータの最適化
CNNの可視化
代表的なネットワーク
データセット
計算の高速化
MNISTデータセットの精度ランキングおよび最高精度の手法
ディープラーニングのアプリケーション
索引
· · · · · · (收起)
读后感
扫码关注公众号 「图灵的猫」,点击“学习资料”菜单,可以获得海量python、机器学习、深度学习书籍、课程资源,以及书中对应习题答案和代码。后台回复SSR更有机场节点相送~ 入门避坑指南 自学三年,基本无人带路,转专业的我自然是难上加难,踩过无数坑,走过很多弯路。这里我...
扫码关注公众号 「图灵的猫」,点击“学习资料”菜单,可以获得海量python、机器学习、深度学习书籍、课程资源,以及书中对应习题答案和代码。后台回复SSR更有机场节点相送~ 入门避坑指南 自学三年,基本无人带路,转专业的我自然是难上加难,踩过无数坑,走过很多弯路。这里我...
扫码关注公众号 「图灵的猫」,点击“学习资料”菜单,可以获得海量python、机器学习、深度学习书籍、课程资源,以及书中对应习题答案和代码。后台回复SSR更有机场节点相送~ 入门避坑指南 自学三年,基本无人带路,转专业的我自然是难上加难,踩过无数坑,走过很多弯路。这里我...
扫码关注公众号 「图灵的猫」,点击“学习资料”菜单,可以获得海量python、机器学习、深度学习书籍、课程资源,以及书中对应习题答案和代码。后台回复SSR更有机场节点相送~ 入门避坑指南 自学三年,基本无人带路,转专业的我自然是难上加难,踩过无数坑,走过很多弯路。这里我...
扫码关注公众号 「图灵的猫」,点击“学习资料”菜单,可以获得海量python、机器学习、深度学习书籍、课程资源,以及书中对应习题答案和代码。后台回复SSR更有机场节点相送~ 入门避坑指南 自学三年,基本无人带路,转专业的我自然是难上加难,踩过无数坑,走过很多弯路。这里我...
用户评价
这本书最难能可贵的一点,在于它对于深度学习核心思想的哲学性探讨,而不仅仅是技术层面的实现。在介绍完基础模型后,作者并未急于跳入更花哨的网络结构,而是花了不少篇幅去讨论“泛化”这个概念的真正含义。它清晰地阐述了欠拟合和过拟合的直观区别,以及正则化(如L2、Dropout)是如何从数学和直觉两个层面来约束模型的复杂性,从而达到更好的实际效果。这种深层次的思考,使得读者在面对实际数据集的挑战时,不再是盲目地尝试各种超参数,而是能够基于对模型偏差和方差权衡的深刻理解来进行决策。很多快速入门的教程往往会忽略这些“软技能”,直接将正则化当作一个需要设置的参数,但这本书却将它提升到了模型设计核心策略的高度。这种对学习本质的探讨,让这本书的价值超越了单纯的“技术手册”。
这本书的实践导向性强得令人惊叹。市面上很多书籍要么是纯理论的堆砌,要么是代码的罗列,但这本书的精妙之处在于,它将理论与动手实现完美地耦合在一起。它鼓励读者去“手搓”每一个组件,而不是直接调用现成的库。这种“从头构建”的过程,虽然初期看起来会稍微慢一些,但带来的收获是质的飞跃。举个例子,当我们学到反向传播算法时,很多书可能直接给出一个梯度下降的公式,让你去套用。而这本书则会细致地引导你,如何一步一步地推导出链式法则在这个特定网络结构中的应用,并且清晰地展示出,为什么梯度需要像水流一样从输出层向输入层“回溯”。这种深度的参与感,让我对梯度消失、梯度爆炸这些常见问题有了更直观的理解。当我亲手写出那些计算损失函数和调整权重的代码时,那些原本抽象的数学概念,瞬间就变成了鲜活的、可以调试的程序逻辑。这本书真正培养的不是只会使用工具的人,而是懂得工具原理的工程师。
作为一名有着一定编程基础,但对AI领域知之甚少的学习者,我必须承认,这本书为我打开了一扇通往严谨科学研究的大门。与市面上那些专注于特定框架(如TensorFlow或PyTorch)的应用指南不同,这本书选择了一条更本质的道路——不依赖任何高级封装,让你亲自去理解数据是如何在不同层级间流动和转化的。在讲解优化器时,它细致地比较了SGD、Momentum、AdaGrad等方法的收敛路径差异,这种对比分析极大地拓宽了我的视野,让我明白了为什么优化算法的选择会直接影响到模型的训练效率和最终性能。它没有将深度学习视为一种“魔法”,而是清晰地将其还原为一连串可被理解和控制的数学优化过程。这本书的深度和广度兼备,它不仅教会了你如何“做”深度学习,更重要的是,它教会了你如何“思考”深度学习,是真正有志于深入理解该领域的人士的必备案头书。
我发现这本书的结构设计简直是教科书级别的清晰。它不是简单地按照主题的复杂程度排列,而是遵循着一个非常符合人类认知规律的学习路径。初期铺垫了必要的线性代数基础后,它立刻转向了最简单的感知机模型,这个阶段的算法简洁到几乎可以一口气读完并理解其全部流程。随后,它循序渐进地引入了多层感知机(MLP),每一次引入新的概念,比如Softmax、交叉熵损失,都与前一个知识点紧密相连,形成了清晰的知识脉络。最让我印象深刻的是,作者对于如何组织代码的见解。它展示的不仅仅是如何让代码跑起来,更是如何用面向对象的方式组织起不同的层(Layers)、优化器(Optimizers)和数据集(Datasets),这种清晰的模块化思想,对于后续转向更复杂的模型,比如卷积网络或循环网络时,起到了至关重要的架构指导作用。这种结构上的严谨性,大大降低了读者在知识点交织时迷失方向的风险。
这本书简直是为我这种从零开始、对深度学习一窍不通的“小白”量身定做的!我一直想踏入这个领域,但市面上那些充斥着复杂公式和高深理论的教材,光是看着就让人望而却步。然而,这本书的叙事方式极其平易近人,它仿佛一位经验老到的导师,耐心地牵着你的手,从最基础的矩阵运算和向量概念开始讲解,每一步都走得异常扎实。它没有一开始就抛出那些吓人的神经网络结构图,而是先让你理解“为什么我们需要这些数学工具”,然后再逐步构建起模型。我特别欣赏作者对细节的把控,比如在解释激活函数时,它不仅仅是给出了数学表达式,还会通过生动的比喻告诉你,为什么我们需要非线性,以及不同的函数在实际应用中扮演了什么样的角色。读完前几章,我最大的感受就是,那些原本看起来高不可攀的“黑箱”知识,现在变得透明而可操作。它让我真正体会到了,原来构建一个基础的学习算法,并不是什么只有天才才能触及的领域,而是可以通过严谨的逻辑和清晰的步骤实现的工程。对于希望打下坚实理论基础,又不希望被晦涩数学理论淹没的初学者来说,这本书是无可替代的起点。
不知道国内翻译版的效果怎么样,在日本市场上,这本应该是很不错的入门书,顺便还可以学日语相关词汇的使用,以至于对深度学习的演进有了一个入门级的了解
学coursera的Andrew ng的深度学习的时候,顺便看了下这本书,挺适合入门的,主要是介绍基本的深度学习原理以及怎么用python实装。不涉及很难的数学知识。
不知道国内翻译版的效果怎么样,在日本市场上,这本应该是很不错的入门书,顺便还可以学日语相关词汇的使用,以至于对深度学习的演进有了一个入门级的了解
学coursera的Andrew ng的深度学习的时候,顺便看了下这本书,挺适合入门的,主要是介绍基本的深度学习原理以及怎么用python实装。不涉及很难的数学知识。
学coursera的Andrew ng的深度学习的时候,顺便看了下这本书,挺适合入门的,主要是介绍基本的深度学习原理以及怎么用python实装。不涉及很难的数学知识。