Passaggio 5: ottimizza gli iperparametri
Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
Abbiamo dovuto scegliere una serie di iperparametri per definire e addestrare il modello. Abbiamo fatto affidamento sull'intuizione, sugli esempi e sui consigli sulle best practice. La nostra prima scelta di valori di iperparametri, tuttavia, potrebbe non fornire i risultati migliori. Questo ci dà solo un buon punto di partenza per la formazione. Ogni problema è diverso e la regolazione di questi iperparametri aiuterà a perfezionare il nostro modello per rappresentare meglio le particolarità del problema in questione. Diamo un'occhiata ad alcuni degli iperparametri che abbiamo utilizzato e al loro significato:
Numero di livelli nel modello: il numero di livelli in una rete neurale è un indicatore della sua complessità. Dobbiamo fare attenzione a scegliere questo valore. Troppi livelli consentiranno al modello di apprendere troppe informazioni sui dati di addestramento, causando un overfit. Un numero troppo ridotto di livelli può limitare la capacità di apprendimento del modello, causando una suddivisione insufficiente. Per i set di dati di classificazione del testo, abbiamo sperimentato MLP a uno, due e tre livelli. I modelli a due livelli hanno avuto un buon rendimento e, in alcuni casi, sono migliori dei modelli a tre livelli. Analogamente, abbiamo provato sepCNN con quattro e sei livelli e i modelli a quattro livelli hanno funzionato bene.
Numero di unità per livello: le unità di un livello devono contenere le informazioni relative alla trasformazione eseguita in un livello. Per il primo livello, questo dipende dal numero di funzionalità. Nei livelli successivi, il numero di unità dipende dalla scelta di espandere o comprimere la rappresentazione dal livello precedente. Cerca di ridurre al minimo la perdita di informazioni tra i livelli. Abbiamo provato i valori delle unità nell'intervallo [8, 16, 32, 64]
e 32/64 unità hanno funzionato bene.
Tasso di abbandono: i livelli di abbandono vengono utilizzati nel modello per la regolazione. Definiscono la parte di input che cala come precauzione per l'overfitting. Intervallo consigliato: 0,2 - 0,5.
Tasso di apprendimento: la frequenza con cui la ponderazione della rete neurale cambia tra le iterazioni. Un tasso di apprendimento elevato può causare grandi sbalzi di peso, e potremmo non trovare mai i valori ottimali. Un basso tasso di apprendimento è positivo, ma il modello richiederà più iterazioni per convergere. È una buona idea iniziare con un tono basso, ad esempio in punto 1e-4. Se l'addestramento è molto lento, aumenta questo valore. Se il tuo modello non è in fase di apprendimento, prova a ridurre il tasso di apprendimento.
Abbiamo sintonizzato un paio di iperparametri aggiuntivi specifici per il nostro modello sepCNN:
Dimensioni del kernel: le dimensioni della finestra di convoluzione. Valori consigliati: 3 o 5.
Dimensioni di incorporamento: il numero di dimensioni che vogliamo utilizzare per rappresentare gli incorporamenti di parole, ovvero le dimensioni di ciascuna parola vettoriale. Valori consigliati: 50-300. Nei nostri esperimenti abbiamo utilizzato incorporamenti GloVe con 200 dimensioni con un livello di incorporamento preaddestrato.
Sperimenta con questi iperparametri e scopri qual è la soluzione migliore. Dopo aver scelto gli iperparametri con le migliori prestazioni per il tuo caso d'uso, il modello è pronto per il deployment.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[null,null,["Ultimo aggiornamento 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,["# Step 5: Tune Hyperparameters\n\nWe 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."]]