Налаштування гіперпараметрів
Свайпніть щоб показати меню
Гіперпараметри в нейронних мережах
Нейронні мережі, включаючи перцептрони, мають кілька гіперпараметрів, які впливають на їхню продуктивність. На відміну від параметрів моделі (наприклад, ваг і зсувів), гіперпараметри встановлюються до початку навчання. Основні гіперпараметри в перцептронах включають:
-
Кількість прихованих шарів і нейронів у кожному шарі: визначає здатність моделі вивчати складні закономірності. Занадто мала кількість нейронів може призвести до недонавчання, а надто велика — до перенавчання;
-
Швидкість навчання: визначає, наскільки сильно модель коригує ваги під час навчання. Висока швидкість навчання може зробити навчання нестабільним, а низька — призвести до повільної збіжності:
- Кількість епох навчання: визначає, скільки разів модель переглядає навчальні дані. Більша кількість епох дозволяє краще навчитися, але надмірна кількість може призвести до перенавчання.
Підсумовуючи, overfitting виникає, коли модель занадто добре навчається на тренувальних даних, захоплюючи шум замість загальних закономірностей. Це призводить до високої точності на тренувальній вибірці, але поганої здатності до узагальнення на невідомих даних.
Underfitting, навпаки, трапляється, коли модель занадто проста, щоб уловити приховані закономірності в даних. Це призводить до низької продуктивності як на тренувальних, так і на тестових даних, що свідчить про недостатню здатність моделі ефективно навчатися.
Налаштування гіперпараметрів
Налаштування гіперпараметрів є ключовим для оптимізації нейронних мереж. Погано налаштована модель може призвести до underfitting або overfitting.
Можна змінювати кількість епох, кількість прихованих шарів, їх розмір і швидкість навчання, щоб спостерігати, як змінюється точність на тренувальній та тестовій вибірках:
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. Занадто велика швидкість навчання, найімовірніше, призведе до:
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат