Krok 5. Dostosuj hiperparametry
Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Musieliśmy wybrać kilka hiperparametrów, aby zdefiniować i wytrenować model. Kierujemy się intuicją, przykładami i sprawdzonymi metodami. Pierwszy wybór wartości hiperparametrów może jednak nie dać dobrych wyników. Jest to dobry punkt wyjścia do trenowania. Każdy problem jest inny, a dostrajanie tych hiperparametrów pomoże doprecyzować model, aby lepiej oddać jego szczegóły. Przyjrzyjmy się niektórym użytym hiperparametrom i ich znaczeniem:
Liczba warstw w modelu: liczba warstw w sieci neuronowej wskazuje, że jest on złożony. Wybierając tę wartość, musimy zachować ostrożność. Zbyt wiele warstw spowoduje, że model nauczy się zbyt wielu informacji o danych treningowych, co doprowadzi do nadmiernego dopasowania. Zbyt mało warstw może ograniczać możliwości uczenia modelu, co może prowadzić do zbyt niskiej skuteczności. W przypadku zbiorów danych klasyfikacji tekstu eksperymentowaliśmy z 1, 2 i 3-warstwowymi wersjami MLP. Modele z dwoma warstwami osiągają dobre wyniki, a w niektórych przypadkach lepiej niż trzywarstwowe. Analogicznie próbowaliśmy sepCNN z 4 i 6 warstwami, a modele czterowarstwowe osiągnęły dobre wyniki.
Liczba jednostek na warstwę: jednostki w warstwie muszą zawierać informacje dotyczące przekształcenia, które ma ono wykonać. W przypadku pierwszej warstwy zależy to od liczby funkcji. W kolejnych warstwach liczba jednostek zależy od tego, czy chodzi o rozwinięcie czy zawarcie umowy z poprzedniej warstwy. Postaraj się zminimalizować utratę informacji między warstwami. Wypróbowaliśmy wartości jednostek z zakresu [8, 16, 32, 64]
i sprawdziły się jednostki 32/64.
Współczynnik porzuceń: w modelu używane są warstwy kroczące. Określają one odsetek danych, które należy usunąć, aby uniknąć przeciążenia. Zalecany zakres: 0,2–0,5.
Częstotliwość uczenia się: to szybkość, z jaką zmienia się waga sieci neuronowej między iteracjami. Duża szybkość nauki może powodować duże wahania wagi i może nie uda nam się znaleźć optymalnych wartości. Niski współczynnik uczenia się jest dobry, ale model będzie potrzebować więcej iteracji. Dobrym pomysłem jest rozpoczęcie od poziomu 1-4. Jeśli trenowanie trwa bardzo długo, zwiększ tę wartość. Jeśli model się nie uczy, spróbuj zmniejszyć szybkość uczenia się.
Jest też kilka dodatkowych hiperparametrów, które odpowiednio dostosujemy.
Rozmiar jądra: rozmiar okna kręcenia. Zalecane wartości: 3 lub 5.
Wymiary umieszczone: liczba wymiarów, które mają zostać użyte do umieszczenia słów, tj. rozmiar każdego wektora słów. Zalecane wartości: 50–300. W ramach naszych eksperymentów korzystaliśmy z umieszczonych obiektów GloVe w 200 wymiarach z wytrenowaną warstwą umieszczania.
Poeksperymentuj z tymi hiperparametrami i sprawdź, co działa najlepiej. Po wybraniu najskuteczniejszych hiperparametrów do Twojego przypadku użycia model jest gotowy do wdrożenia.
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[null,null,["Ostatnia aktualizacja: 2025-07-27 UTC."],[[["\u003cp\u003eInitial hyperparameter choices provide a starting point for model training, but further tuning is crucial to optimize performance for specific text classification problems.\u003c/p\u003e\n"],["\u003cp\u003eThe number of layers in a neural network impacts its complexity, with two-layer MLPs and four-layer sepCNNs showing promising results in text classification.\u003c/p\u003e\n"],["\u003cp\u003eKey hyperparameters to adjust include the number of units per layer (32 or 64 performed well), dropout rate (0.2-0.5 recommended), and learning rate (start low and adjust based on training progress).\u003c/p\u003e\n"],["\u003cp\u003eFor sepCNN models, optimizing kernel size (3 or 5) and embedding dimensions (50-300) further enhances performance.\u003c/p\u003e\n"],["\u003cp\u003eExperimenting with different hyperparameter combinations is essential to achieve the best model performance for your specific use case before deployment.\u003c/p\u003e\n"]]],[],null,["We had to choose a number of hyperparameters for defining and training the\nmodel. We relied on intuition, examples and best practice recommendations. Our\nfirst choice of hyperparameter values, however, may not yield the best results.\nIt only gives us a good starting point for training. Every problem is different\nand tuning these hyperparameters will help refine our model to better represent\nthe particularities of the problem at hand. Let's take a look at some of the\nhyperparameters we used and what it means to tune them:\n\n- **Number of layers in the model** : The number of layers in a neural network is\n an indicator of its complexity. We must be careful in choosing this value. Too\n many layers will allow the model to learn too much information about the\n training data, causing overfitting. Too few layers can limit the model's\n learning ability, causing underfitting. For text classification datasets, we\n experimented with one, two, and three-layer MLPs. Models with two layers\n performed well, and in some cases better than three-layer models. Similarly, we\n tried [sepCNN](https://developers.google.com/machine-learning/glossary?utm_source=DevSite&utm_campaign=Text-Class-Guide&utm_medium=referral&utm_content=glossary&utm_term=sepCNN#depthwise-separable-convolutional-neural-network-sepcnn)s\n with four and six layers, and the four-layer models performed well.\n\n- **Number of units per layer** : The units in a layer must hold the information\n for the transformation that a layer performs. For the first layer, this is\n driven by the number of features. In subsequent layers, the number of units\n depends on the choice of expanding or contracting the representation from the\n previous layer. Try to minimize the information loss between layers. We tried\n unit values in the range `[8, 16, 32, 64]`, and 32/64 units worked well.\n\n- **Dropout rate** : Dropout layers are used in the model for\n [regularization](https://developers.google.com/machine-learning/glossary/?utm_source=DevSite&utm_campaign=Text-Class-Guide&utm_medium=referral&utm_content=glossary&utm_term=dropout-regularization#dropout_regularization).\n They define the fraction of input to drop as a precaution for overfitting.\n Recommended range: 0.2--0.5.\n\n- **Learning rate**: This is the rate at which the neural network weights change\n between iterations. A large learning rate may cause large swings in the weights,\n and we may never find their optimal values. A low learning rate is good, but the\n model will take more iterations to converge. It is a good idea to start low, say\n at 1e-4. If the training is very slow, increase this value. If your model is not\n learning, try decreasing learning rate.\n\nThere are couple of additional hyperparameters we tuned that are specific to our\nsepCNN model:\n\n1. **Kernel size**: The size of the convolution window. Recommended values: 3 or\n 5.\n\n2. **Embedding dimensions**: The number of dimensions we want to use to represent\n word embeddings---i.e., the size of each word vector. Recommended values: 50--300.\n In our experiments, we used GloVe embeddings with 200 dimensions with a pre-\n trained embedding layer.\n\nPlay around with these hyperparameters and see what works best. Once you have\nchosen the best-performing hyperparameters for your use case, your model is\nready to be deployed."]]