Ottimizzazione degli Iperparametri
Scorri per mostrare il menu
Iperparametri nelle reti neurali
Le reti neurali, inclusi i percettroni, presentano diversi iperparametri che influenzano le loro prestazioni. A differenza dei parametri del modello (ad esempio, pesi e bias), gli iperparametri vengono impostati prima dell'inizio dell'addestramento. Alcuni iperparametri chiave nei percettroni includono:
-
Numero di strati nascosti e neuroni per strato: determina la capacità del modello di apprendere schemi complessi. Troppi pochi neuroni possono portare a underfitting, mentre un numero eccessivo può causare overfitting;
-
Tasso di apprendimento: controlla quanto il modello modifica i pesi durante l'addestramento. Un tasso di apprendimento elevato può rendere l'addestramento instabile, mentre uno troppo basso può portare a una convergenza lenta:
- Numero di epoche di addestramento: definisce quante volte il modello vede i dati di addestramento. Un numero maggiore di epoche consente un apprendimento migliore ma, se eccessivo, può portare a overfitting.
Per ricapitolare, overfitting si verifica quando un modello apprende troppo bene i dati di addestramento, catturando il rumore invece dei pattern generali. Questo comporta un'elevata accuratezza sul set di addestramento ma scarsa generalizzazione su dati non visti.
Underfitting, invece, si verifica quando un modello è troppo semplice per catturare i pattern sottostanti nei dati. Questo porta sia a scarse prestazioni su training e test, indicando che il modello non ha sufficiente capacità di apprendimento.
Ottimizzazione degli Iperparametri
L'ottimizzazione degli iperparametri è fondamentale per ottimizzare le reti neurali. Un modello con iperparametri non adeguati può portare a underfitting o overfitting.
È possibile modificare il numero di epoche, il numero di layer nascosti, la loro dimensione e il learning rate per osservare come cambia l'accuratezza sui set di training e test:
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}')
Trovare la giusta combinazione di iperparametri richiede sperimentazione sistematica e aggiustamenti. Questo viene spesso effettuato tramite tecniche come la grid search (provando tutte le possibili combinazioni di iperparametri) e la random search (testando un sottoinsieme casuale di valori di iperparametri).
In sostanza, l'addestramento di una rete neurale segue un ciclo iterativo:
- Definizione del modello con iperparametri iniziali;
- Addestramento del modello utilizzando il dataset di training;
- Valutazione delle prestazioni su un set di test;
- Regolazione degli iperparametri (ad esempio, numero di layer, learning rate);
- Ripetizione del processo fino al raggiungimento delle prestazioni desiderate.
Questo perfezionamento iterativo garantisce che il modello generalizzi bene su dati non visti.
1. Quale delle seguenti opzioni è un iperparametro e non un parametro del modello?
2. Un learning rate troppo alto molto probabilmente causerà:
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione