Justering av Hyperparametere
Hyperparametere i nevrale nettverk
Nevrale nettverk, inkludert perseptroner, har flere hyperparametere som påvirker ytelsen. I motsetning til modellparametere (f.eks. vekter og bias), settes hyperparametere før treningen starter. Noen sentrale hyperparametere i perseptroner inkluderer:
-
Antall skjulte lag og nevroner per lag: avgjør modellens kapasitet til å lære komplekse mønstre. For få nevroner kan føre til undertilpasning, mens for mange kan føre til overtilpasning;
-
Læringsrate: styrer hvor mye modellen justerer vektene under trening. En høy læringsrate kan gjøre treningen ustabil, mens en lav kan føre til treg konvergens:
- Antall trenings-epoker: definerer hvor mange ganger modellen ser treningsdataene. Flere epoker gir bedre læring, men kan føre til overtilpasning hvis det blir for mange.
For å oppsummere: overtilpasning oppstår når en modell lærer treningsdataene for godt, og fanger opp støy i stedet for generelle mønstre. Dette gir høy nøyaktighet på treningssettet, men dårlig generalisering til nye data.
Undertilpasning skjer derimot når en modell er for enkel til å fange opp de underliggende mønstrene i dataene. Dette fører til både dårlig ytelse på trening og test, noe som indikerer at modellen mangler tilstrekkelig kapasitet til å lære effektivt.
Justering av hyperparametere
Justering av hyperparametere er avgjørende for å optimalisere nevrale nettverk. En modell med dårlig justerte parametere kan føre til under- eller overtilpasning.
Du kan endre antall epoker, antall skjulte lag, størrelsen på disse og læringsraten for å observere hvordan nøyaktigheten på trenings- og testsettet endres:
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}')
Å finne riktig kombinasjon av hyperparametere innebærer systematisk eksperimentering og justeringer. Dette gjøres ofte ved hjelp av teknikker som grid search (prøving av alle mulige kombinasjoner av hyperparametere) og random search (testing av et tilfeldig utvalg av hyperparameterverdier).
I hovedsak følger trening av et nevralt nettverk en iterativ syklus:
- Definer modellen med innledende hyperparametere;
- Tren modellen ved bruk av treningsdatasettet;
- Evaluer ytelsen på et testsett;
- Juster hyperparametere (f.eks. antall lag, læringsrate);
- Gjenta prosessen til ønsket ytelse er oppnådd.
Denne iterative forbedringen sikrer at modellen generaliserer godt til ukjente data.
1. Hvilken av følgende er en hyperparameter og ikke en modellparameter?
2. En læringsrate som er for høy vil mest sannsynlig føre til:
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
What are some best practices for hyperparameter tuning in neural networks?
Can you explain the difference between grid search and random search?
How do I know if my model is overfitting or underfitting?
Awesome!
Completion rate improved to 4
Justering av Hyperparametere
Sveip for å vise menyen
Hyperparametere i nevrale nettverk
Nevrale nettverk, inkludert perseptroner, har flere hyperparametere som påvirker ytelsen. I motsetning til modellparametere (f.eks. vekter og bias), settes hyperparametere før treningen starter. Noen sentrale hyperparametere i perseptroner inkluderer:
-
Antall skjulte lag og nevroner per lag: avgjør modellens kapasitet til å lære komplekse mønstre. For få nevroner kan føre til undertilpasning, mens for mange kan føre til overtilpasning;
-
Læringsrate: styrer hvor mye modellen justerer vektene under trening. En høy læringsrate kan gjøre treningen ustabil, mens en lav kan føre til treg konvergens:
- Antall trenings-epoker: definerer hvor mange ganger modellen ser treningsdataene. Flere epoker gir bedre læring, men kan føre til overtilpasning hvis det blir for mange.
For å oppsummere: overtilpasning oppstår når en modell lærer treningsdataene for godt, og fanger opp støy i stedet for generelle mønstre. Dette gir høy nøyaktighet på treningssettet, men dårlig generalisering til nye data.
Undertilpasning skjer derimot når en modell er for enkel til å fange opp de underliggende mønstrene i dataene. Dette fører til både dårlig ytelse på trening og test, noe som indikerer at modellen mangler tilstrekkelig kapasitet til å lære effektivt.
Justering av hyperparametere
Justering av hyperparametere er avgjørende for å optimalisere nevrale nettverk. En modell med dårlig justerte parametere kan føre til under- eller overtilpasning.
Du kan endre antall epoker, antall skjulte lag, størrelsen på disse og læringsraten for å observere hvordan nøyaktigheten på trenings- og testsettet endres:
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}')
Å finne riktig kombinasjon av hyperparametere innebærer systematisk eksperimentering og justeringer. Dette gjøres ofte ved hjelp av teknikker som grid search (prøving av alle mulige kombinasjoner av hyperparametere) og random search (testing av et tilfeldig utvalg av hyperparameterverdier).
I hovedsak følger trening av et nevralt nettverk en iterativ syklus:
- Definer modellen med innledende hyperparametere;
- Tren modellen ved bruk av treningsdatasettet;
- Evaluer ytelsen på et testsett;
- Juster hyperparametere (f.eks. antall lag, læringsrate);
- Gjenta prosessen til ønsket ytelse er oppnådd.
Denne iterative forbedringen sikrer at modellen generaliserer godt til ukjente data.
1. Hvilken av følgende er en hyperparameter og ikke en modellparameter?
2. En læringsrate som er for høy vil mest sannsynlig føre til:
Takk for tilbakemeldingene dine!