ハイパーパラメータチューニング
メニューを表示するにはスワイプしてください
ニューラルネットワークにおけるハイパーパラメータ
パーセプトロンを含むニューラルネットワークには、性能に影響を与えるハイパーパラメータが複数存在。モデルパラメータ(例:重みやバイアス)とは異なり、ハイパーパラメータは学習開始前に設定。パーセプトロンにおける主なハイパーパラメータは以下の通り:
-
隠れ層の数と各層のニューロン数:複雑なパターンを学習するモデルの能力を決定。ニューロン数が少なすぎるとアンダーフィッティング、多すぎるとオーバーフィッティングの原因となる;
-
学習率:学習中にモデルが重みをどれだけ調整するかを制御。学習率が高すぎると学習が不安定になり、低すぎると収束が遅くなる:
- エポック数:モデルが訓練データを見る回数を定義。エポック数が多いほど学習が進むが、多すぎるとオーバーフィッティングのリスクが高まる。
まとめとして、過学習はモデルが訓練データを過度に学習し、ノイズまで捉えてしまう現象。これにより訓練セットでの精度は高くなるが、未知のデータへの汎化性能が低下する。
一方、未学習はモデルがデータの本質的なパターンを捉えられないほど単純な場合に発生する。これにより、訓練・テスト両方での性能が低下し、モデルの学習能力が不十分であることを示す。
ハイパーパラメータの調整
ハイパーパラメータの調整はニューラルネットワークの最適化に不可欠。調整が不十分なモデルは未学習や過学習を引き起こす可能性がある。
エポック数、隠れ層の数やサイズ、学習率などを調整し、訓練セットとテストセットの精度がどのように変化するかを観察できる。
1234567891011121314151617181920212223from 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. 学習率が高すぎる場合、最も起こりやすい現象はどれですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください