Path: blob/master/site/ja/tutorials/keras/keras_tuner.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Keras Tuner の基礎
概要
Keras Tuner は、TensorFlow プログラム向けに最適なハイパーパラメータを選択するためのライブラリです。ユーザーの機械学習(ML)アプリケーションに適切なハイパーパラメータを選択するためのプロセスは、ハイパーパラメータチューニングまたはハイパーチューニングと呼ばれます。
ハイパーパラメータは、ML のトレーニングプロセスとトポロジーを管理する変数です。これらの変数はトレーニングプロセス中、一貫して定数を維持し、ML プログラムのパフォーマンスに直接影響を与えます。ハイパーパラメータには、以下の 2 種類があります。
モデルハイパーパラメータ: 非表示レイヤーの数と幅などのモデルの選択に影響します。
アルゴリズムハイパーパラメータ: 確率的勾配降下法 (SGD) の学習率や k 最近傍 (KNN) 分類器の最近傍の数など、学習アルゴリズムの速度と質に影響します。
このチュートリアルでは、Keras Tuner を使用して、画像分類アプリケーションのハイパーチューニングを実施します。
セットアップ
Keras Tuner をインストールしてインポートします。
データセットをダウンロードして準備する
このチュートリアルでは、Keras Tuner を使用して、Fashion MNIST データセットの服飾の画像を分類する学習モデル向けに最適なハイパーパラメータを見つけます。
データを読み込みます。
モデルを定義する
ハイパーチューニングを行うモデルを構築する際、モデルアーキテクチャのほかにハイパーパラメータ検索空間も定義します。ハイパーチューニング用にセットアップするモデルをハイパーモデルと呼びます。
ハイパーモデルの定義は、以下の 2 つの方法で行います。
モデルビルダー関数を使用する
Keras Tuner API の
HyperModel
クラスをサブクラス化する
また、コンピュータビジョンアプリケーション用の HyperXception と HyperResNet という 2 つの事前定義済みの HyperModel
クラスも使用します。
このチュートリアルでは、モデルビルダー関数を使用して、画像分類モデルを定義します。モデルビルダー関数は、コンパイル済みのモデルを返し、インラインで定義するハイパーパラメータを使用してモデルをハイパーチューニングします。
チューナーをインスタンス化してハイパーチューニングを実行する
チューナーをインスタンス化して、ハイパーチューニングを実行します。Keras Tuner には、RandomSearch
、Hyperband
、BayesianOptimization
、および Sklearn
チューナーがあります。このチュートリアルでは、Hyperband チューナーを使用します。
Hyperband チューナーをインスタンス化するには、ハイパーモデル、最適化する objective
、およびトレーニングするエポックの最大数 (max_epochs
) を指定する必要があります。
Hyperband チューニングアルゴリズムは、適応型リソース割り当てと早期停止を使用して、高パフォーマンスモデルに素早く収束させます。これは、トーナメント式のツリーを使用して行われます。アルゴリズムは、数回のエポックで大量のモデルをトレーニングし、性能の高い上位半数のモデル次のラウンドに持ち越します。Hyperband は、1 + logfactor
(max_epochs
) を計算し、直近の整数に繰り上げて、トーナメントでトレーニングするモデル数を決定します。
検証損失の特定の値に達した後、トレーニングを早期に停止するためのコールバックを作成します。
ハイパーパラメータ検索を実行します。検索メソッドの引数は、上記のコールバックのほか、tf.keras.model.fit
に使用される引数と同じです。
モデルをトレーニングする
検索から取得したハイパーパラメータを使用してモデルをトレーニングするための最適なエポック数を見つけます。
ハイパーモデルを再インスタンス化し、前述の最適なエポック数でトレーニングします。
このチュートリアルを終了するには、テストデータでハイパーモデルを評価します。
my_dir/intro_to_kt
ディレクトリには、ハイパーパラメータ検索中に実行された各トライアル(モデル構成)の詳細なログとチェックポイントが含まれます。ハイパーパラメータ検索を再実行する場合、Keras Tuner は、これらのログの既存の状態を使用して、検索を再開します。この動作を無効にするには、チューナーをインスタンス化する際に、overwrite = True
引数を追加で渡してください。
まとめ
このチュートリアルでは、Keras Tuner の使用して、モデルのハイパーパラメータを調整する方法を学習しました。Keras Tuner の調査委については、以下のその他のリソースをご覧ください。
また、モデルのハイパーパラメータを対話式で調整できる、TensorBoard の HParams Dashboard もご覧ください。