Pythonで動かして学ぶ!あたらしい機械学習の教科書
翔泳社
著者:伊藤真
はじめに
本書のサンプルのテスト環境とサンプルファイルについて
第1章 機械学習の準備
1.1 機械学習について
1.1.1 機械学習学習のコツ
1.1.2 機械学習の問題の分類
1.1.3 本書の流れ
1.2 Pythonのインストール
1.3 Jupyter Notebook
1.3.1 Jupyter Notebookの利用
1.3.2 マークダウン形式の入力
1.3.3 ファイル名の変更
1.4 KerasとTensorFlowのインストール
第2章 Pythonの基本
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 print文
2.4.1 print文の利用
2.4.2 文字列と組み合わせた数値の表示1
2.4.3 文字列と組み合わせた数値の表示2
2.5 list(リスト、配列変数)
2.5.1 listの利用
2.5.2 2次元の配列
2.5.3 listの長さ
2.5.4 連続した整数のデータの作成
2.6 tuple(タプル)
2.6.1 tupleの利用
2.6.2 要素の参照
2.6.3 長さが1のtuple
2.7 if文
2.7.1 if文の利用
2.7.2 比較演算子
2.8 for文
2.8.1 for文の利用
2.8.2 enumerateの利用
2.9 ベクトル
2.9.1 numpyの利用
2.9.2 ベクトルの定義
2.9.3 要素の参照
2.9.4 要素の書き換え
2.9.5 連続した整数のベクトルの作成
2.9.6 ndarray型の注意点
2.10 行列
2.10.1 行列の定義
2.10.2 行列のサイズ
2.10.3 要素の参照
2.10.4 要素の書き換え
2.10.5 要素が0や1のndarrayの作成
2.10.6 要素がランダムな行列の生成
2.10.7 行列のサイズの変更
2.11 行列(ndarray)の四則演算
2.11.1 行列における四則演算
2.11.2 スカラー×行列
2.11.3 算術関数
2.11.4 行列積の計算
2.12 スライシング
2.12.1 スライシングの利用
2.13 条件を満たすデータの書き換え
2.13.1 bool配列の利用
2.14 Help
2.14.1 Hekoの利用
2.15 関数
2.15.1 関数の利用
2.15.2 引数と戻り値
2.16 ファイル保存
2.16.1 1つのndarray型の保存
2.16.2 複数のndarray型の保存
第3章 グラフの描画
3.1 2次元のグラフを描く
3.1.1 ランダムなグラフを描く
3.1.2 プログラムリストのルール
3.1.3 3次元関数f(x)=(x-2)x(x+2)を描く
3.1.4 描画する範囲を決める
3.1.5 グラフを描画する
3.1.6 グラフを装飾する
3.1.7 グラフを複数並べる
3.2 3次元のグラフを描く
3.2.1 2つの変数の関数
3.2.2 数値を色で表現する:pcolor
3.2.3 関数の表面を面で表す:surface
3.2.4 等高線で表示する:contour
第4章 機械学習に必要な数学の基本
4.1 ベクトル
4.1.1 ベクトルとは
4.1.2 Pythonでベクトルを定義する
4.1.3 縦ベクトルを表す
4.1.4 転置を表す
4.1.5 足し算と引き算
4.1.6 スカラーとの掛け算
4.1.7 内積
4.1.8 ベクトルの大きさ
4.2 和の記号
4.2.1 和の記号入った数式を変形する
4.2.2 和を内積として計算する
4.3 積の記号
4.4 微分
4.4.1 多項式の微分
4.4.2 微分の記号の入った数式の変形
4.4.3 入れ子の関数の微分
4.4.4 入れ子の関数の微分:連鎖律
4.5 偏微分
4.5.1 偏微分とは
4.5.2 偏微分と図形
4.5.3 勾配を図で表す
4.5.4 多変数の入れ子の関数の微分
4.5.5 和と微分の交換
4.6 行列
4.6.1 行列とは
4.6.2 行列の足し算と引き算
4.6.3 スカラー倍
4.6.4 行列の積
4.6.5 単位行列
4.6.6 逆行列
4.6.7 転置
4.6.8 行列と連立方程式
4.6.9 行列と写像
4.7 指数関数と対数関数
4.7.1 指数
4.7.2 対数
4.7.3 指数関数の微分
4.7.4 対数関数の微分
4.7.5 シグモイド関数
4.7.6 ソフトマックス関数
4.7.7 ソフトマックス関数とシグモイド関数
4.7.8 ガウス関数
4.7.9 2次元のガウス関数
第5章 教師あり学習:回帰
5.1 1次元入力の直線モデル
5.1.1 直線モデル
5.1.2 二乗誤差関数
5.1.3 パラメータを求める(勾配法)
5.1.4 直線モデルパラメータの解析解
5.2 2次元入力の面モデル
5.2.1 データの表し方
5.2.2 面モデル
5.2.3 パラメータの解析解
5.3 D次元線形回帰モデル
5.3.1 D次元線形回帰モデル
5.3.2 パラメータの解析解
5.3.3 原点を通らない面への拡張
5.4 線形基底関数モデル
5.5 オーバーフィッティングの問題
5.6 新しいモデルの生成
5.7 モデルの選択
5.8 まとめ
第6章 教師あり学習:分類
6.1 1次元入力2クラス分類
6.1.1 問題設定
6.1.2 確率で表すクラス分解
6.1.3 再尤推定
6.1.4 ロジスティック回帰モデル
6.1.5 交差エントロピー誤差
6.1.6 学習側の導出
6.1.7 勾配法による解
6.2 2次元入力2クラス分類
6.2.1 問題設定
6.2.2 ロジスティック回帰モデル
6.3 2次元入力3クラス分類
6.3.1 3クラス分類ロジスティック回帰モデル
6.3.2 交差エントロピー誤差
6.3.3 勾配法による解
第7章 ニューラルネットワーク・ディープラーニング
7.1 ニューロンモデル
7.1.1 神経細胞
7.1.2 ニューロンモデル
7.2 ニューラルネットワークモデル
7.2.1 2階層フィードフォワードニューラルネット
7.2.2 2階層フィードフォワードニューラルネットの実装
7.2.3 数値微分法
7.2.4 数値微分法による勾配法
7.2.5 誤差逆伝搬法(バックプロパゲーション)
7.2.6 ∂E/∂vkjを求める
7.2.7 ∂E/∂wjiを求める
7.2.8 誤差逆転伝搬法の実装
7.2.9 学習後のニューロンの特性
7.3 Kerasでニューラルネットワークモデル
7.3.1 2層フィードフォワードニューラルネット
7.3.2 Kerasの使い方の流れ
第8章 ニューラルネットワーク・ディープラーニングの応用(手書き数字の認識)
8.1 MNISTデータベース
8.2 2層フィードフォワードネットワークモデル
8.3 ReLU活性化関数
8.4 空間フィルター
8.5 畳み込みニューラルネットワーク
8.6 プーリング
8.7 ドロップアウト
8.8 集大成のMNIST認識ネットワークモデル
第9章 教師なし学習
9.1 2次元入力データ
9.2 K-means法
9.2.1 K-means法の概要
9.2.2 Step 0:変数の準備と初期化
9.2.3 Step 1:Rの更新
9.2.4 Step 2:μの更新
9.2.5 歪み尺度
9.3 混合ガウスモデル
9.3.1 確率的クラスタリング
9.3.2 混合ガウスモデル
9.3.3 EMアルゴリズムの概要
9.3.4 Step 0;変数の準備と初期化
9.3.5 Step 1(E Step):γの更新
9.3.6 Step 2(M Step):π、μ、Σの更新
9.3.7 尤度
おわりに、謝辞
INDEX