Book description
人気シリーズの第5弾。今回のテーマは「生成モデル」です。本書では「正規分布」から「拡散モデル」に至るまでの技術を繋がりのあるストーリーとして展開します。読者は小さな学びを積み重ねながら、ステップバイステップで実装し、最終的には「Stable Diffusion」のような画像生成AIを完成させます。技術の面白さは細部にあります——ゼロから作る、数式に挑む。
Table of contents
- 大扉
- クレジット
- まえがき
- ステップ1 正規分布
- 1.1 確率の基礎
- 1.1.1 確率変数と確率分布
- 1.1.2 確率分布の種類
- 1.1.3 期待値と分散
- 1.2 正規分布
- 1.2.1 正規分布の確率密度関数
- 1.2.2 正規分布のコード
- 1.2.3 パラメータの役割
- 1.3 中心極限定理
- 1.3.1 中心極限定理とは
- 1.3.2 中心極限定理の実験
- 1.4 サンプル和の確率分布
- 1.4.1 サンプル和の期待値と分散
- 1.4.2 コードで確かめる
- 1.4.3 一様分布の平均と分散✪
- 1.5 身の回りにある正規分布
- ステップ2 最尤推定
- 2.1 生成モデルの概要
- 2.1.1 生成モデルとは
- 2.1.2 母集団とサンプル
- 2.2 実データを使った生成モデルの実装
- 2.2.1 身長データセットの読み込み
- 2.2.2 正規分布による生成モデル
- 2.3 最尤推定の理論
- 2.3.1 尤度の最大化
- 2.3.2 微分を使って最大値を探す
- 2.3.3 正規分布の最尤推定✪
- 2.4 生成モデルの用途
- 2.4.1 新しいデータの生成
- 2.4.2 確率の計算
- ステップ3 多次元正規分布
- 3.1 NumPyと多次元配列
- 3.1.1 多次元配列
- 3.1.2 NumPyの多次元配列
- 3.1.3 要素ごとの演算
- 3.1.4 ベクトルの内積と行列積
- 3.2 多次元正規分布
- 3.2.1 多次元正規分布の式
- 3.2.2 多次元正規分布の実装
- 3.3 2次元正規分布の可視化
- 3.3.1 3Dグラフの描画方法
- 3.3.2 等高線の描画
- 3.3.3 2次元正規分布のグラフ
- 3.4 多次元正規分布の最尤推定
- 3.4.1 最尤推定を行う
- 3.4.2 最尤推定の実装
- 3.4.3 実データを使う
- ステップ4 混合ガウスモデル
- 4.1 身の回りにある多峰性分布
- 4.1.1 多峰性分布のデータセット
- 4.2 混合ガウスモデルのデータ生成
- 4.2.1 GMMによるデータ生成
- 4.2.2 データ生成を行うコード
- 4.3 混合ガウスモデルの式
- 4.3.1 確率の復習
- 4.3.2 GMMの式
- 4.3.3 GMMの実装
- 4.4 パラメータ推定の難所
- 4.4.1 GMMのパラメータ推定
- ステップ5 EMアルゴリズム
- 5.1 KLダイバージェンス
- 5.1.1 数式の表記について
- 5.1.2 KLダイバージェンスの定義式
- 5.1.3 KLダイバージェンスと最尤推定の関係
- 5.2 EMアルゴリズムの導出①
- 5.2.1 潜在変数を持つモデル
- 5.2.2 任意の確率分布q(z)
- 5.3 EMアルゴリズムの導出②
- 5.3.1 ELBO(エビデンスの下界)
- 5.3.2 EMアルゴリズムへ
- 5.3.3 複数データへの拡張
- 5.3.4 log p(x; θnew) ≥ log p(x; θold)の証明✪
- 5.4 GMMとEMアルゴリズム✪
- 5.4.1 EMアルゴリズムのEステップ✪
- 5.4.2 EMアルゴリズムのMステップ✪
- 5.5 EMアルゴリズムの実装
- 5.5.1 データセットとGMMのコード
- 5.5.2 EステップとMステップの実装
- 5.5.3 データ生成
- ステップ6 ニューラルネットワーク
- 6.1 PyTorchと勾配法
- 6.1.1 PyTorchのインストール
- 6.1.2 テンソルの計算
- 6.1.3 勾配法
- 6.2 線形回帰
- 6.2.1 トイ・データセット
- 6.2.2 線形回帰の理論
- 6.2.3 線形回帰の実装
- 6.3 パラメータとオプティマイザ
- 6.3.1 ParameterとModuleクラス
- 6.3.2 オプティマイザ
- 6.4 ニューラルネットワークの実装
- 6.4.1 非線形なデータセット
- 6.4.2 線形変換と活性化関数
- 6.4.3 ニューラルネットワークの実装
- 6.5 torchvisionとデータセット
- 6.5.1 torchvisionのインストール
- 6.5.2 MNISTデータセット
- 6.5.3 前処理
- 6.5.4 データローダ
- ステップ7 変分オートエンコーダ(VAE)
- 7.1 VAEとデコーダ
- 7.1.1 1つの正規分布
- 7.1.2 混合ガウスモデル(GMM)
- 7.1.3 VAE
- 7.1.4 EMアルゴリズムの問題点
- 7.2 VAEとエンコーダ
- 7.2.1 EMアルゴリズムからVAEへ
- 7.2.2 データセット全体への適用
- 7.3 ELBOの最適化
- 7.3.1 ELBOの評価
- 7.3.2 変数変換トリック
- 7.4 VAEの実装
- 7.4.1 実装の方針
- 7.4.2 VAEのコード
- 7.4.3 学習を行うコード
- 7.4.4 新しい画像の生成
- ステップ8 拡散モデルの理論
- 8.1 VAEから拡散モデルへ
- 8.1.1 VAEの復習
- 8.1.2 潜在変数の階層化
- 8.1.3 拡散モデルへ
- 8.2 拡散過程と逆拡散過程
- 8.2.1 拡散過程
- 8.2.2 逆拡散過程
- 8.3 ELBOの計算①
- 8.3.1 拡散モデルのELBO
- 8.3.2 ELBOの式展開
- 8.4 ELBOの計算②
- 8.4.1 q(xt | x0)の式
- 8.4.2 ELBOの近似解
- 8.4.3 q(xt | x0)の導出✪
- 8.5 ELBOの計算③
- 8.5.1 q(xt-1 | xt,x0)の式
- 8.5.2 ELBOの近似解
- 8.5.3 q(xt-1 | xt,x0)の導出✪
- 8.6 拡散モデルの学習
- 8.6.1 ニューラルネットワークは何を予測するか?
- 8.6.2 元データを復元するニューラルネットワーク
- 8.6.3 ノイズを予測するニューラルネットワーク
- 8.6.4 新しいデータのサンプリング
- ステップ9 拡散モデルの実装
- 9.1 U-Net
- 9.1.1 U-Netとは
- 9.1.2 U-Netの実装
- 9.2 正弦波位置エンコーディング
- 9.2.1 正弦波位置エンコーディングとは
- 9.2.2 正弦波位置エンコーディングの実装
- 9.2.3 U-Netに組み込む
- 9.3 拡散過程
- 9.3.1 q(xt | xt-1)からのサンプリング
- 9.3.2 画像に対する拡散過程
- 9.3.3 q(xt | x0)からのサンプリング
- 9.3.4 Diffuserクラスの実装
- 9.4 データ生成
- 9.4.1 ワンステップのデノイズ処理
- 9.4.2 データ生成の実装
- 9.5 拡散モデルの学習(実装編)
- 9.5.1 拡散モデルの学習コード
- 9.5.2 学習結果
- ステップ10 拡散モデルの応用
- 10.1 条件付き拡散モデル
- 10.1.1 拡散モデルに条件を追加する
- 10.1.2 条件付き拡散モデルの実装
- 10.2 スコア関数
- 10.2.1 スコア関数とは
- 10.2.2 式(10.1)の証明✪
- 10.3 分類器ガイダンス
- 10.3.1 分類器とは
- 10.3.2 分類器ガイダンスの導出
- 10.4 分類器なしガイダンス
- 10.4.1 分類器なしガイダンスの理論
- 10.4.2 分類器なしガイダンスの実装
- 10.5 Stable Diffusion
- 10.5.1 Stable Diffusionの仕組み
- 10.5.2 Diffusersライブラリ
- 付録A 多次元正規分布の最尤推定の導出✪
- A.1 μの最尤推定
- A.2 2次形式の微分(式(A.4)の証明)
- A.3 Σの最尤推定
- A.4 トレースと微分(式(A.12)の証明)
- 付録B イェンセンの不等式
- B.1 凸関数とイェンセンの不等式
- B.2 凹関数とlog関数
- B.3 ELBOの導出
- 付録C 階層型VAEの理論と実装✪
- C.1 2階層VAEの構成要素
- C.2 ELBOの式展開
- C.3 モンテカルロ法によるELBOの近似
- C.4 2階層VAEの実装
- C.5 実装コード
- 付録D 数式記号一覧
- D.1 本書で使用する記号
- D.2 本書で使用する数式
- おわりに
- 参考文献
- 著者紹介
- 奥付
Product information
- Title: ゼロから作るDeep Learning ❺ ―生成モデル編
- Author(s):
- Release date: April 2024
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784814400591
You might also like
book
ゼロから作るDeep Learning ❷ ―自然言語処理編
コンピュータの専門書としては異例の大ヒットを記録した『ゼロから作るDeep Learning』の続編。第2弾の本書では、自然言語処理や時系列データ処理に焦点を当て、ディープラーニングを使ってさまざまな問題に挑みます。word2vecやRNN(リカレントニューラルネットワーク)、LSTMやGRU、seq2seqやAttention……ディープラーニングを支えるこれら最先端の技術を実装レベルでマスターできます。前作同様、やさしい言葉で分かりやすくをモットーに、高度に見える技術の裏側をじっくり説明し、実際に作ることで理解を深めます。最後までコンセプトは変わらない。ゼロから作る!
book
入門 モダンLinux ―オンプレミスからクラウドまで、幅広い知識を会得する
Linuxはサーバ、組み込み機器、スーパーコンピュータなどにおいて存在感を示してきました。近年では、オンプレミスのシステムだけではなく、クラウドサービスでも広く使われています。本書は、前半でLinuxを使いこなす上で必要な基本知識を、後半で最新情報をまとめています。Linuxの知識を体系的に整理したい、最新動向が知りたい、運用を改善したい、効率的に開発を行いたい、といった要望をかなえる内容となっています。時代の変化に柔軟に対応できるLinux技術者を目指すなら必読の一冊です。
book
ゼロから作るDeep Learning ❹ ―強化学習編
人気シリーズの第4弾。今回のテーマは強化学習です。実際のコードを提示し動かしながら学ぶという本シリーズのスタイルを踏襲し、外部ライブラリに頼らず、強化学習を支える基本的な技術やアイデアをゼロから実装しながら学びます。本書では読者が強化学習独特の理論を確実にマスターできるように、強化学習という難解なテーマの構成要素の一つひとつを「理論」と「実践」の双方から丁寧に解説します。数式だけで説明する理論書とは異なり、読者はコードを通してハッとする気づきを数多く得られるでしょう。
book
マスタリング・イーサリアム ―スマートコントラクトとDAppの構築
イーサリアムとは、分散型アプリケーションやスマートコントラクトのアプリケーション構築を可能にするオープンソースプロジェクトです。送金、決済などの金銭取引を行う機能に加えて、ゲーム、不動産取引、身分証明など、さまざまなサービスがイーサリアムから生まれています。本書は、ビットコインの定番書『Mastering Bitcoin』の著者と、イーサリアム共同設立者でありスマートコントラクト開発言語Solidityの開発者により執筆された、イーサリアムの技術解説書。イーサリアムについて詳しく知りたいすべての人必携の一冊です。