Ottimizzazione degli Iperparametri
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 può portare a overfitting se eccessivo.
In sintesi, l'overfitting si verifica quando un modello apprende troppo bene i dati di addestramento, catturando il rumore invece degli schemi generali. Questo comporta un'elevata accuratezza sul set di addestramento ma scarsa generalizzazione su dati non visti.
L'underfitting, invece, si verifica quando un modello è troppo semplice per cogliere gli schemi sottostanti nei dati. Questo porta sia a scarse prestazioni in addestramento che in test, indicando che il modello non ha sufficiente capacità di apprendimento.
Ottimizzazione degli Iperparametri
L'ottimizzazione degli iperparametri è fondamentale per migliorare le prestazioni delle reti neurali. Un modello con iperparametri non ottimizzati 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 addestramento e di 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 processo viene spesso eseguito tramite tecniche come la grid search (prova di tutte le possibili combinazioni di iperparametri) e la random search (test di un sottoinsieme casuale di valori degli 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 sul 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 piuttosto che un parametro del modello?
2. Un tasso di apprendimento 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
Awesome!
Completion rate improved to 4
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 può portare a overfitting se eccessivo.
In sintesi, l'overfitting si verifica quando un modello apprende troppo bene i dati di addestramento, catturando il rumore invece degli schemi generali. Questo comporta un'elevata accuratezza sul set di addestramento ma scarsa generalizzazione su dati non visti.
L'underfitting, invece, si verifica quando un modello è troppo semplice per cogliere gli schemi sottostanti nei dati. Questo porta sia a scarse prestazioni in addestramento che in test, indicando che il modello non ha sufficiente capacità di apprendimento.
Ottimizzazione degli Iperparametri
L'ottimizzazione degli iperparametri è fondamentale per migliorare le prestazioni delle reti neurali. Un modello con iperparametri non ottimizzati 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 addestramento e di 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 processo viene spesso eseguito tramite tecniche come la grid search (prova di tutte le possibili combinazioni di iperparametri) e la random search (test di un sottoinsieme casuale di valori degli 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 sul 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 piuttosto che un parametro del modello?
2. Un tasso di apprendimento troppo alto molto probabilmente causerà:
Grazie per i tuoi commenti!