深層学習原理の構造
深層学習原理の構造
深層学習ライブラリをゼロから作成する
About the Book
本書は深層学習の基本原理と実装プロセスを分かりやすく紹介し、既存の深層学習ライブラリを利用するのではなく、pythonのnumpyライブラリを使って独自の深層学習ライブラリをゼロから構築しています。 Pythonプログラミング、微積分、確率統計の基礎知識の紹介を基に、回帰モデル、ニューラルネットワーク、畳み込みニューラルネットワーク、リカレントニューラルネットワーク、ジェネレーティブネットワークなど、深層学習の核となる基礎知識を講義に従って順次紹介します。ディープラーニングの開発原理をシンプルに分析しながら、詳細なコード実装プロセスを提供します。武器や携帯電話の使い方を教えるのではなく、自分で武器や携帯電話を作る方法を教えるようなものです. この本は、既存の深層学習ライブラリの使用に関するチュートリアルではなく、深層学習の開発方法の分析です。ライブラリをゼロから学習します。ゼロからの原則とコードの実装を組み合わせるこの方法により、読者は深層学習の基本原理と一般的な深層学習ライブラリの設計思想をよりよく理解できるようになります。
Table of Contents
-
-
[1.1.1 Python インストール] (#111-python インストール)
- [Python インタープリターのインストール] (#python インタープリターのインストール)
- jupyter Notebook プログラミング環境
- [Anaconda インストール ツール] (#anaconda インストール ツール)
[1.1.2 オブジェクト、print()関数、型変換、コメント、変数、input()関数] (#112 -- オブジェクト print 関数型変換コメント変数入力関数)
[1. オブジェクト] (#1--オブジェクト)
[4. コメント] (#4-コメント)
[5.変数] (#5--変数)
[添字演算子[]](#添字演算子)
[文字列整形] (#文字列整形)
[1.1.4 制御ステートメント] (#114-制御ステートメント)
[1.1.5 Python でよく使用されるコンテナ タイプ] (#115 -- Python でよく使用されるコンテナ タイプ)
- [1.リスト (リスト)] (#1--リスト リスト)
- インデックス
- スライス
- [for to traverse all elements] (#for-to traverse all elements)
- [2.tuple(タプル)] (#2タプルタプル)
- [3.set (コレクション)] (#3-setset)
- 4.dict(辞書)
[1.1.6 関数] (#116--関数)
-
[数学数学パッケージ] (#数学数学パッケージ) - [グローバル変数とローカル変数] (#グローバル変数とローカル変数) - 匿名/Lambda 関数 (匿名/ラムダ関数) - ネストされた関数、クロージャ - [yield and generator] (#yield and generator)
[1.1.7 クラスとオブジェクト] (#117--クラスとオブジェクト)
[1.1.8 Matplotlib 入門] (#118-matplotlib 入門)
[9. 追加、リピート & レイ、マージ & スプリット、エッジ フィル、軸の追加 & 軸の交換] (#9 - リピートの追加 & レイ マージ & エッジ フィルの追加 軸の追加 & 軸の交換) - repeat repeat() - lay tile() - merge concatenate() - オーバーレイ スタック() - column_stack(), hstack(), vstack() - スプリット() - [エッジパディング] (#エッジパディング) - 軸を追加 - 交換軸
-
- [1. 要素別計算] (#1-要素別計算)
- [アダマール積] (#アダマール積)
- [2.累積計算] (#2-累積計算)
- [3. 内積] (#3--内積)
- 4放送放送
[1.3 微積分] (#13-微積分)
-
[1.3.8 ポイント] (#138-ポイント)
[1.4 確率の基本] (#14-確率の基本)
[1.4.1 確率] (#141-確率)
[1.4.3 確率変数] (#143-確率変数)
[1.4.7 期待、分散、共分散、共分散行列] (#147-期待分散共分散共分散行列)
- [1.平均と期待] (#1-平均と期待)
- [2.分散、標準偏差] (#2-分散標準偏差)
- 3.共分散、共分散行列
-
2.1 関数極値の必要条件 ・【2.2 勾配降下法(gradient descent)】(#22-勾配降下法gradient-descent)
-
- 2.3.1 運動量運動量法
- [2.3.2 アダグラード法] (#232-アダグラード法)
- 2.3.3 アダデルタ法 ・【2.3.4 RMSprop法】(#234-rmsprop法)
- 2.3.5 アダム法
[2.4 勾配検証] (#24--勾配検証)
- [2.4.1 数値勾配と解析勾配の比較] (#241 - 数値勾配と解析勾配の比較)
[2.4.2 一般的な数値勾配] (#242--一般的な数値勾配)
- 2.5 分離勾配降下アルゴリズムとパラメータ最適化戦略
- [2.5.1 パラメータ最適化] (#251-パラメータ最適化)
- [2.5.2 パラメータオプティマイザを受け入れる勾配降下法] (#252-パラメータオプティマイザを受け入れる勾配降下法)
Chapter 3 Linear Regression, Logistic Regression and Softmax Regression
[3.1 線形回帰] (#31--線形回帰)
- [3.1.1 食堂車の採算問題] (#311-食堂車の採算問題)
-
- [1.機械学習] (#1-機械学習)
- [2. 機械学習と人工知能の関係] (#2-機械学習と人工知能の関係)
- 3. 機械学習の分類
[3.1.6 デバッグ学習率] (#316-デバッグ学習率)
[3.1.7 勾配検証] (#317-gradient-validation)
[3.1.8 予測] (#318-予測)
-
- 1. 多機能線形回帰
- [2. はめ込み面] (#2-はめ込み面)
- 3. 温度と圧力の問題
[3.1.10 データの正規化] (#3110-データの正規化)
[3.2 モデルの評価] (#32-モデルの評価)
- 3.2.1 Underfitting と Overfitting
- [3.2.2 検証セット、テスト セット] (#322-検証セット テスト セット)
- [3.2.3 学習曲線] (#323--学習曲線)
- 3.2.4 予測ダム水量
-
3.3 正則化 - [定期期間を増加させる損失関数は次のようになります] (#定期期間を増加させる損失関数は次のようになります)
[3.5 ロジスティック回帰] (#35-ロジスティック回帰)
[3.5.1 ロジスティック回帰] (#351-ロジスティック回帰)
[3.5.2 ロジスティック回帰のnumpy実装] (#352-ロジスティック回帰のnumpy実装)
- 1. データの生成
- 2. 勾配降下法のコード実装
- [3.損失関数値の計算] (#3-損失関数値の計算)
- 4.決定曲線
- [5. 予測の精度] (#5-予測の精度)
- 6. Scikit-Learn ライブラリのロジスティック回帰
[3.5.3 実際の戦闘: アイリス分類の派手な実装] (#353--実際のアイリス分類の派手な実装)
[3.6 ソフトマックス回帰] (#36-ソフトマックス回帰)
[3.6.2 ソフトマックス関数] (#362-ソフトマックス関数)
[3.6.3 ソフトマックス回帰] (#363-ソフトマックス回帰)
[3.6.4 Multi-classification cross-entropy loss] (#364-Multi-classification cross-entropy loss)
[3.6.5 加重和によるクロスエントロピー損失の計算] (#365 - 加重和によるクロスエントロピー損失の計算)
-
- [1.加重和に対する交差エントロピー損失の勾配] (#1-加重和に対する交差エントロピー損失の勾配)
- 2. 重みパラメータに対する交差エントロピー損失の勾配
[3.6.7 Softmax 回帰のための勾配降下法の実装] (#367-Softmax 回帰のための勾配降下法の実装)
-
[3.7 バッチ勾配降下法と確率的勾配降下法] (#37-バッチ勾配降下法と確率的勾配降下法)
[3.7.1 MNIST 手書き数字セット] (#371--mnist-手書き数字セット)
[3.7.2 部分的なトレーニング サンプルでロジスティック回帰をトレーニングする] (#372 - 部分的なトレーニング サンプルでロジスティック回帰をトレーニングする)
-
- [Fasion MNIST トレーニング セットのソフトマックス回帰] (#fasion-mnist トレーニング セットのソフトマックス回帰)
[3.7.4 確率的勾配降下法] (#374-確率的勾配降下法)
[第 4 章 ニューラル ネットワーク] (#第 4 章 - ニューラル ネットワーク)
-
[4.1.1 パーセプトロンとニューロン] (#411- パーセプトロンとニューロン)
- [1. パーセプトロン] (#1--パーセプトロン)
- 2.ニューロン
[4.1.2 活性化関数] (#412-活性化関数)
- 1. ステップ関数 sign(x)
- 2.tanh関数
- [4. ReLU 関数] (#4-relu 関数)
[4.1.4 複数サンプルの順方向計算] (#414-複数サンプルの順方向計算)
[4.1.5 出力] (#415-出力)
[4.1.6 損失関数] (#416-損失関数)
- [1. 平均二乗誤差損失] (#1-平均二乗誤差損失)
- 2. 二分分類クロスエントロピーロス
- [3. 多分類クロスエントロピーロス] (#3-多分類クロスエントロピーロス)
[4.1.7 数値勾配ベースのニューラル ネットワークのトレーニング] (#417-数値勾配ベースのニューラル ネットワークのトレーニング)
[4.1.8 深層学習] (#418--深層学習)
4.2 逆導出 ・【4.2.1 順計算と逆導出】(#421 順計算と逆導出)
[4.2.2 計算グラフ] (#422-計算グラフ)
[4.2.3 出力に対する損失関数の勾配] (#423-出力に対する損失関数の勾配)
- 1. 出力に対するバイナリ クロス エントロピー損失関数の勾配
- [2. 出力に対する平均二乗誤差損失関数の勾配] (#2-出力に対する平均二乗誤差損失関数の勾配)
- [3.出力に対する多分類の交差エントロピー損失関数の勾配] (#3-出力に対する多分類の交差エントロピー損失関数の勾配)
[4.2.4 2 層ニューラル ネットワークのバックプロパゲーションの導出] (#424--2 層ニューラル ネットワークのバックプロパゲーションの導出)
[4.2.5 2 層ニューラル ネットワークの Python 実装] (#425--2 層ニューラル ネットワークの Python 実装)
[4.2.6 ニューラル ネットワークの任意の層のバックプロパゲーションの導出] (#426-ニューラル ネットワークの任意のレイヤのバックプロパゲーションの導出)
4.3 シンプルなディープ ラーニング フレームワークの実装
[4.3.3 ネットワーク層の勾配テスト] (#433-ネットワーク層の勾配テスト)
[4.3.4 ニューラル ネットワーク クラス] (#434-ニューラル ネットワーク クラス)
[4.3.5 ニューラル ネットワークの勾配テスト] (#435-ニューラル ネットワークの勾配テスト) ・【4.3.6 深層学習フレームワークに基づくMNISTデータ手書き数字認識】(#436-深層学習フレームワークに基づくMNISTデータ手書き数字認識)
[4.3.7 一般的なニューラル ネットワーク フレームワークの改良: 加重和と活性化関数の分離] (#437 - 一般的なニューラル ネットワーク フレームワークの改良された加重和と活性化関数の分離)
- [勾配検証] (#勾配検証)
[4.3.8 独立パラメータ オプティマイザ] (#438-独立パラメータ オプティマイザ) ・【4.3.9 fashion-mnist分類研修】(#439-fashion-mnist分類研修) ・【4.3.9 モデルパラメータの読み書き】(#43-9-モデルパラメータの読み書き)
-
第 5 章 ニューラル ネットワークのパフォーマンスを改善するための基本的なヒント
[5.1 データ処理] (#51-データ処理)
[5.1.1 データ拡張] (#511-データ拡張)
[5.1.2 正規化] (#512-正規化)
[5.1.3 機能エンジニアリング] (#513-機能エンジニアリング)
-
- [5.2.1 ウエイトの初期化] (#521-ウエイトの初期化)
- [5.2.2 最適化パラメータ] (#522-最適化パラメータ)
[5.3 バッチ正規化] (#53--バッチ正規化)
- 5.3.1 バッチ正規化とは?
- [5.3.2 バッチ正規化逆導出] (#532-バッチ正規化逆導出)
- 5.3.3 バッチ正規化のコード実装
-
- [5.4.1 重みの正則化] (#541-重みの正則化)
- [5.4.2 ドロップアウト] (#542-ドロップアウト)
- [5.4.3 早期停止] (#543-早期停止)
-
[6.1畳み込み] (#61-畳み込み)
[6.1.3 2D 畳み込み] (#613-2D 畳み込み)
[6.1.5 プーリング] (#615-プーリング)
[6.2 畳み込みニューラル ネットワーク] (#62-畳み込みニューラル ネットワーク)
[6.2.2 畳み込み層と畳み込みニューラル ネットワーク] (#622-畳み込み層と畳み込みニューラル ネットワーク)
[6.2.4 畳み込みニューラル ネットワークの実装] (#624-畳み込みニューラル ネットワークの実装)
[6.3 畳み込みの行列乗算] (#63-畳み込みの行列乗算)
- [6.3.1 1D サンプル畳み込みの行列乗算] (#631--1D サンプル畳み込みの行列乗算)
- [6.3.2 2D サンプル畳み込みの行列乗算] (#632--2D サンプル畳み込みの行列乗算)
- 6.3.3 1D畳み込みの逆導出の行列乗算
- 6.3.4 2D畳み込みの逆導出の行列乗算
-
- [勾配テスト] (#勾配テスト)
- 非加速コンボリューションとの時間比較
-
- [6.5.1 LeNet-5] (#651-lenet-5)
- [6.5.2 AlexNet] (#652-alexnet)
- 6.5.3 VGG
- 6.5.4 ディープ ニューラル ネットワークの勾配爆発と消失問題
- 6.5.5 Residual Networks (ResNets)
- [6.5.6 Google インセプション ネットワーク] (#656-google-inception-network)
- 6.5.7 Network in Network (NiN)
Chapter 7 Recurrent Neural Network RNN
-
-
- 1. 確率的シーケンス モデル
- [2. 言語モデル] (#2-言語モデル)
[7.1.3 自己回帰モデル] (#713-自己回帰モデル)
[7.1.4 自己回帰データの生成] (#714--自己回帰データの生成)
[7.1.5 タイムウィンドウ法] (#715--タイムウィンドウ法)
[7.1.8 長期予測と短期予測] (#718---長期予測と短期予測)
[7.1.10 k-gram 言語モデル] (#7110--k-gram-language-model)
[7.2 リカレント ニューラル ネットワーク] (#72-リカレント ニューラル ネットワーク)
- [7.2.1 記憶機能を持たない非巡回ニューラル ネットワーク] (#721-記憶機能を持たない非巡回ニューラル ネットワーク)
- [7.2.2 メモリを備えたリカレント ニューラル ネットワーク] (#722--メモリを備えたリカレント ニューラル ネットワーク)
[7.4 単層リカレント ニューラル ネットワークの実装] (#74-単層リカレント ニューラル ネットワークの実装)
- [7.4.1 モデル パラメータの初期化] (#741-モデル パラメータの初期化) ・【7.4.2 フォワード計算】(#742-フォワード計算)
- [7.4.3 損失関数] (#743-loss-functions)
- [7.4.4 逆導出] (#744-逆導出)
- [7.4.5 勾配検証] (#745--gradient-validation)
- [7.4.6 勾配降下トレーニング] (#746-勾配降下トレーニング)
-
-
-
- 配列データトレーニング
- 予測
- [在庫データの学習と予測] (#在庫データの学習と予測)
[7.5 RNN 言語モデルとテキスト生成] (#75-rnn 言語モデルとテキスト生成)
[7.5.1 キャラクターテーブル] (#751-キャラクターテーブル)
[7.5.3 RNN モデルのトレーニングと予測] (#753-rnn モデルのトレーニングと予測)
7.8 Gated Recurrent Unit (GRU)
- [7.8.1 GRU の仕組み] (#781-GRU の仕組み)
- [7.8.2 GRU コードの実装] (#782-gru コードの実装)
7.9 クラス表現とリカレント ニューラル ネットワークの実装
- [7.9.1 クラスを使用した再帰型ニューラル ネットワークの実装] (#791--クラスを使用した再帰型ニューラル ネットワーク)
- [7.9.2 RNN ユニットのクラス実装] (#792 - RNN ユニットのクラス実装)
- [7.10 多層双方向リカレント ニューラル ネットワーク] (#710-多層双方向リカレント ニューラル ネットワーク)
-
[7.10.1 多層再帰型ニューラル ネットワーク] (#7101-多層再帰型ニューラル ネットワーク)
[7.10.2 多層再帰型ニューラル ネットワークのトレーニングと予測] (#7102-多層再帰型ニューラル ネットワークのトレーニングと予測)
[7.10.3 双方向 RNN] (#7103-双方向 RNN)
[7.11 Sequence-to-sequence (seq2seq) モデル] (#711-Sequence-to-sequence seq2seq モデル)
[機械翻訳] (#機械翻訳)
[7.11.1 Seq2Seq モデルの実装] (#7111-seq2seq モデルの実装)
[7.11.2 文字レベル機械翻訳用 Seq2Seq] (文字レベル機械翻訳用 #7112-seq2seq)
[7.11.3 Word2VecベースのSeq2Seq機械翻訳] (#7113 - word2vecベースのseq2seq機械翻訳)
7.11.4 単語埋め込み層に基づく Seq2Seq モデル
- [1.単語埋め込み層] (#1単語埋め込み層)
- 2. 単語埋め込み層を使用した Seq2Seq モデル
[7.11.5 注意メカニズム] (#7115---注意メカニズム)
[第 8 章 モデルの生成] (#第 8 章 モデルの生成)
[8.1 モデルの生成] (#81-モデルの生成)
[8.2 オートエンコーダー] (#82-オートエンコーダー)
- [8.2.1 オートエンコーダー] (#821-オートエンコーダー)
- [8.2.2 スパースエンコーダー] (#822-sparse-encoder)
- [8.2.3 オートエンコーダーの実装] (#823-オートエンコーダーの実装)
[8.3 変分オートエンコーダ] (#83-変分オートエンコーダ)
[8.3.2 損失関数] (#832-損失関数)
[8.3.3 パラメータのリサンプリング] (#833-パラメータのリサンプリング)
[8.3.4 後方導出] (#834-後方導出)
[8.3.5 変分オートエンコーダの実装] (#835--変分オートエンコーダの実装)
[8.4 敵対的生成ネットワーク] (#84-敵対的生成ネットワーク)
[8.4.1 GAN原則] (#841-gan原則)
- [1. Discriminator and Generator] (#1- Discriminator and Generator)
- 2.損失関数
- [3. トレーニング プロセス] (#3-トレーニング プロセス)
[8.4.2 GAN トレーニング プロセスのコード実装] (#842--ガン-コード トレーニング プロセスの実装)
[8.5 GAN モデリング例] (#85--gan モデリング例)
-
- [1.実数データ: 実数の集合] (#1-実数実数の集合)
- [2. ディスクリミネーターとジェネレーター関数の定義] (#2-ディスクリミネーターとジェネレーター関数の定義)
- 3. Real Data Iterator, Noise Data Iterator ・4.中間結果描画機能
- 5.トレインガン
[8.5.2 二次元座標点の GAN モデリング] (#852-二次元座標点のガンモデリング)
- [1. 実データ: 楕円曲線上でサンプリングされた座標点] (#1-実データ楕円曲線上でサンプリングされた座標点)
- [2. Real Data Iterator, Noise Iterator] (#2 - Real Data Iterator Noise Iterator)
- 3. GAN モデルのジェネレータとディスクリミネータを定義する
- 4.GANモデルのトレーニング
-
- 1.トレーニング データの読み取り
- [2. データ反復子の定義] (#2-データ反復子の定義)
- 3. ジェネレーターとディスクリミネーターとそのオプティマイザーを定義する
-
-
[8.5.4 GAN トレーニングのヒント] (#854-gan トレーニングのヒント)
[8.6 GAN 損失関数とその確率の説明] (#86-gan 損失関数とその確率の説明)
- 8.6.1 GANの損失関数の大域最適解
- [8.6.2 カルバック・ライブラー発散とジェンセン・シャノン発散] (#862-カルバックライブラー発散とジェンセンシャノン発散)
- [8.6.3 GAN の最尤解釈] (#863-GAN の最尤解釈)
[8.7 改善された損失関数: Wasserstein GAN (WGAN)] (#87--改善された損失関数 wasserstein-ganwgan)
- [8.7.1 Wasserstein GAN の原理] (#871-Wasserstein ガンの原理)
- [8.7.2 WGAN のコード実装] (#872-wgan コード実装)
8.8 Deep Convolutional Adversarial Network DCGAN
- [8.8.1 1D ベクトルの転置畳み込み] (#881-1D ベクトルの転置畳み込み)
- [8.8.2 2D 転置畳み込み] (#882--2D 転置畳み込み)
- 8.8.3 畳み込みアンチネットワーク DCGAN の実装
- 参照
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $13 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them