Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ハイパーパラメータチューニング | 結論
Pythonによるニューラルネットワーク入門

ハイパーパラメータチューニング

メニューを表示するにはスワイプしてください

ニューラルネットワークにおけるハイパーパラメータ

パーセプトロンを含むニューラルネットワークには、性能に影響を与えるハイパーパラメータが複数存在。モデルパラメータ(例:重みやバイアス)とは異なり、ハイパーパラメータは学習開始前に設定。パーセプトロンにおける主なハイパーパラメータは以下の通り:

  • 隠れ層の数と各層のニューロン数:複雑なパターンを学習するモデルの能力を決定。ニューロン数が少なすぎるとアンダーフィッティング、多すぎるとオーバーフィッティングの原因となる;

  • 学習率:学習中にモデルが重みをどれだけ調整するかを制御。学習率が高すぎると学習が不安定になり、低すぎると収束が遅くなる:

異なる学習率
  • エポック数:モデルが訓練データを見る回数を定義。エポック数が多いほど学習が進むが、多すぎるとオーバーフィッティングのリスクが高まる。
Note
注意

まとめとして、過学習はモデルが訓練データを過度に学習し、ノイズまで捉えてしまう現象。これにより訓練セットでの精度は高くなるが、未知のデータへの汎化性能が低下する。

一方、未学習はモデルがデータの本質的なパターンを捉えられないほど単純な場合に発生する。これにより、訓練・テスト両方での性能が低下し、モデルの学習能力が不十分であることを示す。

ハイパーパラメータの調整

ハイパーパラメータの調整はニューラルネットワークの最適化に不可欠。調整が不十分なモデルは未学習や過学習を引き起こす可能性がある。

エポック数、隠れ層の数やサイズ、学習率などを調整し、訓練セットとテストセットの精度がどのように変化するかを観察できる。

1234567891011121314151617181920212223
from sklearn.neural_network import MLPClassifier from sklearn.metrics import accuracy_score import numpy as np import warnings # Ignore warnings warnings.filterwarnings("ignore") import os os.system('wget https://codefinity-content-media.s3.eu-west-1.amazonaws.com/f9fc718f-c98b-470d-ba78-d84ef16ba45f/section_2/data.py 2>/dev/null') from data import X_train, y_train, X_test, y_test np.random.seed(10) # Tweak hyperparameters here model = MLPClassifier(max_iter=100, hidden_layer_sizes=(6, 6), learning_rate_init=0.01, random_state=10) model.fit(X_train, y_train) y_pred_train = model.predict(X_train) y_pred_test = model.predict(X_test) # Comparing train set accuracy and test set accuracy train_accuracy = accuracy_score(y_train, y_pred_train) test_accuracy = accuracy_score(y_test, y_pred_test) print(f'Train accuracy: {train_accuracy:.3f}') print(f'Test accuracy: {test_accuracy:.3f}')

ハイパーパラメータの最適な組み合わせを見つけるには、体系的な実験と調整が必要です。これは、グリッドサーチ(すべてのハイパーパラメータの組み合わせを試す方法)やランダムサーチ(ハイパーパラメータ値のランダムなサブセットをテストする方法)などの手法を用いて行われます。

本質的に、ニューラルネットワークの学習は反復的なサイクルに従います:

  1. 初期ハイパーパラメータでモデルを定義する;
  2. トレーニングデータセットを用いてモデルを学習する;
  3. テストセットで性能を評価する;
  4. ハイパーパラメータを調整する(例:層の数、学習率など);
  5. 望ましい性能が得られるまでこのプロセスを繰り返す

この反復的な改善により、モデルは未知のデータに対しても良好に汎化できるようになります。

1. 次のうち、モデルパラメータではなくハイパーパラメータであるものはどれですか?

2. 学習率が高すぎる場合、最も起こりやすい現象はどれですか?

question mark

次のうち、モデルパラメータではなくハイパーパラメータであるものはどれですか?

正しい答えを選んでください

question mark

学習率が高すぎる場合、最も起こりやすい現象はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  2
some-alt