TensorFlow 2+Keras(tf.keras)入門

TensorFlow 2+Keras(tf.keras)入門

デジタルアドバンテージ 一色 政彦

機械学習の勉強はここから始めてみよう。ディープラーニングの基盤技術であるニューラルネットワーク(NN)を、知識ゼロの状態から概略を押さえつつ実装。さらにCNNやRNNも同様に学ぶ。これらの実装例を通して、TensorFlow 2とKerasにも習熟する連載。

第1回 初めてのニューラルネットワーク実装、まずは準備をしよう ― 仕組み理解×初実装(前編)

ニューラルネットワークは難しくない
ディープラーニングの大まかな流れ
1データ準備

・Playgroundによる図解
・Pythonコードでの実装例

2問題種別

・Playgroundによる図解
・Pythonコードでの実装例

3前処理

・Playgroundによる図解
・訓練用/精度検証用のデータ分割について
・ノイズについて
・Pythonコードでの実装例

第2回 ニューラルネットワーク最速入門 ― 仕組み理解×初実装(中編)

4“手法”の選択とモデルの定義: ニューロン

・Playgroundによる図解

入力
何らかの計算結果の出力

・Pythonコードでの実装例

TensorFlow 2.0のインストール
tensorflowパッケージのインポート
Kerasにおけるモデルの書き方
モデルの定義
モデルへの入力と出力(フォワードプロパゲーション)
4“手法”の選択とモデルの定義: ニューラルネットワーク

・Playgroundによる図解

ニューラルネットワークの基本形
ニューロンの数を増やす
レイヤー(層)の数を増やす

・Pythonコードでの実装例

モデルの定義
4“手法”の選択とモデルの定義: 活性化関数

・Playgroundによる図解

活性化関数
4“手法”の選択とモデルの定義: 活性化関数

・Playgroundによる図解

活性化関数

・Pythonコードでの実装例

4“手法”の選択とモデルの定義: 正則化

・Playgroundによる図解

正則化
正則化率

・Pythonコードでの実装例

第3回 ディープラーニング最速入門 ― 仕組み理解×初実装(後編)

5“学習方法” の設計とモデルの生成: 損失関数

・Playgroundによる図解
 - 回帰問題/分類問題でよく使われる損失関数
 - 誤差とは
 - なぜ「二乗」するか
・Pythonコードでの実装例

5“学習方法” の設計とモデルの生成: 最適化

・Playgroundによる図解
 - 最適化とは
 - 勾配法とは
・【コラム】偏微分と線形代数と統計学
・Pythonコードでの実装例

5“学習方法” の設計とモデルの生成: 学習率

・Playgroundによる図解
・Pythonコードでの実装例

6学習: トレーニング

・Playgroundによる図解
 - バックプロパゲーション(誤差逆伝播法)
 - エポック単位でのステップ学習
・Pythonコードでの実装例

6学習: バッチサイズ

・Playgroundによる図解
・Pythonコードでの実装例

7評価: 損失のグラフ

・Playgroundによる図解
・Pythonコードでの実装例
 - 早期終了とCSVログ出力

8テスト: 未知データで推論と評価

・Playgroundによる図解
・Pythonコードでの実装例

まとめ

第4回 知ってる!? TensorFlow 2.0最新の書き方入門(初中級者向け)

TensorFlowにおける、3種類/6通りのモデルの書き方
・3種類のAPI
・6通りのモデルの書き方
・TensorFlow 2.0最新の書き方入門連載(全3回)について
・TensorFlowのエコシステム/機能構成図
コードの書き方を実行するための準備
・前提条件
・データについて
・ディープニューラルネットワークのモデル設計
(1)Sequentialクラスのコンストラクター利用[tf.keras - Sequential API]
・重み/バイアスの初期化指定【応用】
・学習と推論: 書き方入門(初中級者向け)で共通
・作成済みモデルのリセット
(2)Sequentialオブジェクトのaddメソッドで追加[tf.keras - Sequential API]
(3)Modelクラスのコンストラクター利用[tf-keras - Functional API]
次回について

第5回 お勧めの、TensorFlow 2.0最新の書き方入門(エキスパート向け)

・どの書き方を採用すべきか

コードの書き方を実行するための準備
・前提条件
(4)Modelクラスのサブクラス化[tf.keras - Subclassing/Imperative API]
・モデルの内容と構成図の出力について
 - 方法1
 - 方法2
 - 方法3
・学習と推論: 書き方入門(エキスパート向け)
 - 初中級者向け書き方の復習
 - 推論
 - 学習について
 - オプティマイザ(最適化用オブジェクト)
 - 損失関数
 - 評価関数
 - tf.dataデータセット
 - 学習(1回分)
 - 勾配テープと自動微分
 - 重みの更新
 - 損失と正解率
 - 精度検証の処理について
 - @tf.functionとAutoGraph
 - 学習(ループ処理)
 - 評価(メトリクス)
 - 評価(推移グラフ)
次回について

第6回 カスタマイズするための、TensorFlow 2.0最新の書き方入門

・今回の内容と方針について

コードの書き方を実行するための準備
・前提条件
(5)TensorFlow低水準APIでカスタム実装[TensorFlow Low-level API]
・基本パターン
・活性化関数のカスタム実装
・レイヤーのカスタム実装
・オプティマイザ(最適化アルゴリズム)のカスタム実装
・学習のカスタム実装について
・損失関数のカスタム実装
・評価関数(正解率や損失)のカスタム実装
・ここまでのカスタム実装の使用例
(6)作成済みEstimatorsの利用[tf.estimator](※非推奨)
次回以降について

第7回 回帰問題をディープラーニング(基本のDNN)で解こう

今回の内容と方針について
・回帰問題とは?
・今回、取り扱う回帰問題について
・今回、採用するTensorFlow 2の書き方について
・本稿で説明する大まかな流れ
(0)本ノートブックを実行するための事前準備
・前提条件
(1)データの準備
・バッチデータの作成について
(2)モデルの定義
・ディープニューラルネットワークのモデル設計
(3)学習/最適化(オプティマイザ)
(4)評価/精度検証
(5)テスト/未知データによる評価
・学習済みモデルによる推論結果のヒートマップ
次回について

第8回 分類問題をディープラーニング(基本のDNN)で解こう

今回の内容と方針について
・分類問題とは?
・二値分類
・多クラス分類
・二値分類と多クラス分類の出力層の比較
・今回、取り扱う分類問題について
・今回、採用するTensorFlow 2の書き方について
・本稿で説明する大まかな流れ
(0)本ノートブックを実行するための事前準備
・前提条件
―――【多クラス分類編】―――
(1)データの準備
・MNIST系の画像データセットのフォーマットについて
・入力データの正規化(Normalization)
(2)モデルの定義
・ディープニューラルネットワークのモデル設計
(3)学習/最適化(オプティマイザ)
(4)評価/精度検証
(5)テスト/未知データによる評価
実運用のイメージ
―――【二値分類編】―――
(6)データの準備
・入力データの正規化(Normalization)
(7)モデルの定義
・ディープニューラルネットワークのモデル設計
(8)学習/最適化(オプティマイザ)
(9)評価/精度検証
(10)推論/未知データによるテスト
実運用のイメージ
次回について

第9回 機械学習の評価関数(回帰/時系列予測用)を使いこなそう

・時系列予測について

二乗単位(MSE/MSLE)と、元の単位(MAE/RMSE/RMSLE)と、パーセント(MAPE/RMSPE)の使い分け
平均絶対誤差(MAE:Mean Absolute Error)
平均二乗誤差(MSE:Mean Squared Error)
・平均二乗誤差の平方根(RMSE:Root Mean Squared Error)
平均二乗対数誤差(MSLE:Mean Squared Logarithmic Error)
・平均二乗対数誤差の平方根(RMSLE:Root Mean Squared Logarithmic Error)
平均絶対パーセント誤差(MAPE:Mean Absolute Percentage Error)
・平均二乗パーセント誤差の平方根(RMSPE:Root Mean Squared Percentage Error)

第10回 機械学習の評価関数(二値分類用)の基礎を押さえよう

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。