関連サイト
本書の関連ページが用意されています。
内容紹介
●JAX/Flax/Optaxの特徴
JAXとFlax、およびOptaxは、米Google社のAI研究チームと米DeepMind社のエンジニアが中心となって開発しているオープンソースソフトウェアです。Googleが開発したディープラーニングのライブラリーといえばTensorFlow/Kerasが有名ですが、最近は、JAXとその周辺ライブラリーにも注目が集まっています。
JAXは、機械学習で必要となる数値計算処理をPythonのコードから高速に実行するためのライブラリーです。表面的にはNumPyとほぼ同じ使い方ができて、GPUでの実行に対応しています。
TensorFlow/KerasとJAX/Flax/Optaxを比べると、後者では裏側の仕組みが適度なレベルで見えているという点が異なります。
TensorFlow/Kerasの場合、機械学習の「定型作業」を実施する上では簡単なコードで良いものの、応用的な作業を行おうとするとTensorFlow/Kearsに固有の機能を用いた特殊なコードを書く必要があります。一方、JAX/Flax/Optaxの場合は、定型作業にもある程度のコーディングが必要な一方で、応用的な作業も通常のPythonプログラミングの感覚で行えます。応用的な作業が中心となる、研究・開発目的での利用に適したライブラリーと言えます。
● 本書の概要
本書では、ディープラーニングの代表例とも言える畳み込みニューラルネットワーク(CNN)を例として、これをJAX/Flax/Optaxで実装しながら、モデルの各パーツの役割を数式レベルで丁寧に解説していきます。
この際、モデル内部の処理の様子を確認するために、モデルの中身を分析するコードもあわせて利用します。JAX/Flax/Optaxを利用すれば、モデルの構築だけでなく、このような分析作業も簡単に実施できることが実感できるでしょう。
導入となる第1章では、JAX/Flax/Optaxの基本的な機能とその使い方を学ぶために、機械学習の基礎とも言える「最小二乗法」による回帰問題を利用します。まずは、JAXの機能だけを利用して、勾配降下法のアルゴリズムを独自に実装して、回帰モデルの学習を行います。その後、これと同等の処理をFlax/Optaxを組み合わせて、再度、実装してみます。これにより、Flax/Optaxの使い方に加えて、JAXの微分機能など、その背後で行われる実際の処理内容をより明確に理解することができるでしょう。
第2章以降では、より本格的な畳み込みニューラルネットワークを構築し、さらに、転移学習やDCGANによる画像生成モデルなども実装します。付録として、本書で使用するJAX/Flax/Optaxの主な関数の一覧も用意。JAX/Flax/Optaxの使い方をリファレンス的に知っておきたい方にもおすすめです。
書誌情報
- 著者: 中井悦司
- 発行日: 2023-02-28 (紙書籍版発行日: 2023-02-28)
- 最終更新日: 2023-02-28
- バージョン: 1.0.0
- ページ数: 352ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
中井悦司
1971年4月大阪生まれ。ノーベル物理学賞を本気で夢見て、理論物理学の研究に没頭する学生時代、大学受験教育に情熱を傾ける予備校講師の頃、そして、華麗なる(?)転身を果たして、外資系ベンダーでLinuxエンジニアを生業にするに至るまで、妙な縁が続いて、常にUnix/Linuxサーバーと人生を共にする。その後、Linuxディストリビューターのエバンジェリストを経て、現在は、米系IT企業のSolutions Architectとして活動。
目次
はじめに
- 謝辞
- 本書のサンプルコードについて
- 参考文献
Chapter 1 JAX/Flax/Optax入門
- 第1章のはじめに
- 1-1 最小二乗法で学ぶ機械学習の基礎
- 1.1.1 機械学習の考え方
- 1.1.2 勾配降下法によるパラメーターの最適化
- 1-2 JAX/Flax/Optaxの基本的な使い方
- 1.2.1 実行環境の準備
- 1.2.2 JAXによる勾配ベクトルの計算例
- 1.2.3 JAXによる勾配降下法の実装例
- 1.2.4 JAX/Flax/Optaxによる最小二乗法の実装例
- 1-3 ニューラルネットワークの役割
- 1.3.1 分類問題とニューラルネットワーク
- 1.3.2 ディープラーニングの特徴
- 第1章のまとめ
Chapter 2 分類アルゴリズムの基礎
- 第2章のはじめに
- 2-1 ロジスティック回帰によるニ項分類器
- 2.1.1 確率を用いた誤差の評価
- 2.1.2 JAX/Flax/Optaxによるロジスティック回帰の実装
- 2.1.3 テストセットを用いた検証
- 2-2 ソフトマックス関数と多項分類器
- 2.2.1 線形多項分類器の仕組み
- 2.2.2 ソフトマックス関数による確率への変換
- 2-3 線形多項分類器による手書き文字の分類
- 2.3.1 MNISTデータセットの利用方法
- 2.3.2 画像データの分類アルゴリズム
- 2.3.3 JAX/Flax/Optaxによる線形多項分類器の実装
- 2.3.4 ミニバッチと確率的勾配降下法
- 第2章のまとめ
Chapter 3 ニューラルネットワークを用いた分類処理
- 第3章のはじめに
- 3-1 単層ニューラルネットワークの構造
- 3.1.1 単層ニューラルネットワークによる二項分類器
- 3.1.2 隠れ層が果たす役割
- 3.1.3 ノード数の違いによる効果
- 3-2 単層ニューラルネットワークによる手書き文字の分類
- 3.2.1 単層ニューラルネットワークを用いた多項分類器
- 3.2.2 ハイパーパラメーター・チューニングによるノード数の決定
- 3-3 多層ニューラルネットワークへの拡張
- 3.3.1 多層ニューラルネットワークの効果
- 3.3.2 特徴変数に基づいた分類ロジック
- 3.3.3 補足:パラメーターが極小値に収束する例
- 第3章のまとめ
Chapter 4 畳み込みフィルターによる画像の特徴抽出
- 第4章のはじめに
- 4-1 畳み込みフィルターの機能
- 4.1.1 畳み込みフィルターの例
- 4.1.2 JAX/Flax/Optaxによる畳み込みフィルターの適用
- 4.1.3 プーリング層による画像の縮小
- 4-2 畳み込みフィルターを用いた画像の分類
- 4.2.1 特徴変数による画像の分類
- 4.2.2 畳み込みフィルターの動的な学習
- 4-3 畳み込みフィルターを用いた手書き文字の分類
- 4.3.1 単層CNNによる手書き文字の分類
- 4.3.2 動的に学習されたフィルターの確認
- 第4章のまとめ
Chapter 5 畳み込みフィルターの多層化による性能向上
- 第5章のはじめに
- 5-1 畳み込みニューラルネットワークの完成
- 5.1.1 多層型の畳み込みフィルターによる特徴抽出
- 5.1.2 JAX/Flax/Optaxによる多層CNNの実装
- 5.1.3 手書き文字の認識アプリケーション
- 5-2 学習済みフィルターの解釈
- 5.2.1 フィルターの出力を最大化する画像の構成
- 5.2.2 予測への影響が大きい領域の検出
- 5-3 少し高度な話題
- 5.3.1 転移学習によるCIFAR-10(カラー写真画像)の分類
- 5.3.2 オートエンコーダによるアノマリー検知
- 5.3.3 DCGANによる画像生成モデル
- 第5章のまとめ
Appendix
- A 「Neural Network A Playground」による直感的理解
- B バックプロパゲーションによる勾配ベクトルの計算
- C 数学公式
- D 本書のノートブックで使用するJAX/Flax/Optaxの主な関数