深層学習に基づくニューラルネットワークのハイパーパラメータをベイズ最適化で高速に最適化する[v2.11.1] (DCEKit)

深層学習に基づくニューラルネットワークで回帰モデルを構築するときの話です。他の回帰分析手法と同様にして、scikit-learn でモデルを構築できると、何かと便利だったりしますので、今回は scikit-learn の MLPRegressor

sklearn.neural_network.MLPRegressor
Examples using sklearn.neural_network.MLPRegressor: Time-related feature engineering Partial Dependence and Individual C...

 

のハイパーパラメータを、ベイズ最適化とクロスバリデーションもしくは midknn

[Python・MATLABコードあり] クロスバリデーションしないで非線形回帰モデルのハイパーパラメータを最適化する方法~サンプルの中点の活用~
どうして クロスバリデーション しないの? データ解析をしていると、いろいろな理由でクロスバリデーションを使いたくない、もしくはクロスバリデーションを使えないことがあります。 一つはサンプルが少なすぎるときです。クロスバリデーションでは、最...

 

と組み合わせて決める方法を DCEKit に追加しましたので紹介します。

DCEKit (Data Chemical Engineering toolKit) を PyPI にリリース!
これまで化学データ・化学工学データのデータ解析に役立つツールや金子研で開発された手法に関する Python コードを Github にて公開してきました。このたびは、これらのツール・手法 (の一部) に加えて、新たな機能を追加して、DCEK...

 

DCEKit における以下のデモンストレーションも実行していただければ、最適化される様子をご覧いただけると思います。

  • demo_dnn_with_cross_validation_bayesian_optimization.py

 

ハイパーパラメータの最適化の方法としては、こちら↓に記載している方法と同じ方針です。

回帰分析手法やクラス分類手法のハイパーパラメータをベイズ最適化で高速に最適化する
DCEKit に搭載されている Gaussian Mixture Regression (GMR) や Variational Bayesian Gaussian Mixture Regression (VBGMR) について、 クロスバリ...

 

今回着目した深層学習のハイパーパラメータの種類は以下の通りです。それぞれ scikit-learn の MLPRegressor と同様の記載になっています。

 

  • hidden_layer_size (隠れ層ごとのニューロン数。ニューラルネットワークの構成)
  • activation (活性化関数)
  • alpha (L2 正則化項の重み)
  • learning_rate_init (学習率)

 

まずベイズ最適化の前に、ハイパーパラメータの候補のすべての組み合わせを生成します。グリッドサーチとクロスバリデーションを使った方法では、

DCEKit に新機能追加 [v2.5.2]!Variational Bayesian Gaussian Mixture Regression(VBGMR)とクロスバリデーションによるGMR最適化
DCEKit に今回追加したのは Variational Bayesian Gaussian Mixture Regression (VBGMR) と、GMR や VBGMR におけるクロスバリデーションによるハイパーパラメータ最適化です。...

 

ハイパーパラメータの候補のすべての組み合わせでクロスバリデーションもしくは midknn による検証を行い、r2 が最大になる候補を選択しますが、特にハイパーパラメータの種類や候補の数が多くなると、ハイパーパラメータの候補のすべての組み合わせでクロスバリデーションをするのに時間がかかってしまいます。

そこで、ハイパーパラメータの候補のすべての組み合わせではクロスバリデーションをせずに、少数の組み合わせのみでクロスバリデーション後の r2 や正解率を高くするために、ベイズ最適化を使用します。

[無料公開] 「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」 の “まえがき”、目次の詳細、第1・2章
2021 年 6 月 3 日に、金子弘昌著の「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」が出版されました。 講談社: Amazon: Amazon(Kindle): === 出版して約2年経過した 2023 年 4 月...

 

ベイズ最適化において構築するガウス過程回帰モデルの説明変数 x がハイパーパラメータであり、目的変数 y がクロスバリデーションや midknn による検証後の r2 になります。hidden_layer_size や activation といったカテゴリーの情報をもつハイパーパラメータは、ダミー変数で表し x とします。

まず、ハイパーパラメータの候補のすべての組み合わせの中から、D最適基準に基づく実験計画法により、

[無料公開] 「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」 の “まえがき”、目次の詳細、第1・2章
2021 年 6 月 3 日に、金子弘昌著の「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」が出版されました。 講談社: Amazon: Amazon(Kindle): === 出版して約2年経過した 2023 年 4 月...

 

最初にクロスバリデーションすべき少数の組み合わせを選択します。DCEKit では 30 個選択しています。その後、30 組のハイパーパラメータの候補の組み合わせに対し、クロスバリデーションや midknn による検証を実行し (30 回実行)、r2 を計算します。この 30 サンプルを用いて、(カテゴリー変数についてはダミー変数にした) ハイパーパラメータ (x) と r2 (y) の間でガウス過程回帰モデル y = f(x) を構築します。

その後、まだクロスバリデーションや midknn による検証を行っていないハイパーパラメータの候補の組み合わせに対し、ガウス過程回帰モデルを用いて r2 の予測と獲得関数の計算を行います。そして、獲得関数の値が最大となるハイパーパラメータの候補の組み合わせを選択します。

次は、選択されたハイパーパラメータの候補の組み合わせで、クロスバリデーションや midknn による検証を実行し (1 回実行)、r2 を計算します。この結果は、ガウス過程回帰モデルを構築するサンプルに追加します。

この後は、

 

  1. ガウス過程回帰モデルの再構築
  2. r2 の予測と獲得関数の計算
  3. 獲得関数が最大となるハイパーパラメータの候補の組み合わせの選択
  4. クロスバリデーションや midknn による検証と r2 の計算

 

を繰り返すことで、クロスバリデーションや midknn による検証後の r2 が最大となるハイパーパラメータの組み合わせを目指します。DCEKit のデフォルトの設定では、15 回繰り返します。これにより、ハイパーパラメータの候補のすべての組み合わせが何百個あろうとも、45 回 (最初の30回 + ベイズ最適化における繰り返しの 15 回)のクロスバリデーションで、ハイパーパラメータが最適化されます。効率的かつ高速にハイパーパラメータを決定可能です。

ご参考になれば幸いです。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました