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

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

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

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

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

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

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

  • エポック数:モデルが訓練データを見る回数を定義。エポック数が多いほど学習が進むが、多すぎるとオーバーフィッティングにつながる可能性がある。
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}')
copy

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

本質的に、ニューラルネットワークのトレーニングは反復的なサイクルで進行する:

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

この反復的な改善により、モデルは未知のデータにも十分に汎化できるようになる。

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

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

question mark

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

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

question mark

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

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

すべて明確でしたか?

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

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

セクション 3.  2

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 3.  2
some-alt