Étape 5: Ajustez les hyperparamètres
Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.
Nous avons dû choisir un certain nombre d'hyperparamètres pour définir et entraîner le modèle. Nous nous sommes appuyés sur l'intuition, des exemples et des recommandations de bonnes pratiques. Toutefois, notre premier choix de valeurs d'hyperparamètres peut ne pas donner les meilleurs résultats. Cela ne nous fournit qu'un bon point de départ pour l'entraînement. Chaque problème est différent, et le réglage de ces hyperparamètres permettra d'affiner notre modèle pour mieux représenter les particularités du problème en question. Examinons certains des hyperparamètres utilisés et voyons comment les régler:
Nombre de couches dans le modèle : le nombre de couches dans un réseau de neurones est un indicateur de sa complexité. Nous devons être prudents dans le choix de cette valeur. Si le nombre de couches est trop élevé, le modèle apprend trop d'informations sur les données d'entraînement, ce qui entraîne un surapprentissage. Un nombre insuffisant de couches peut limiter les capacités d'apprentissage du modèle, ce qui entraîne un sous-apprentissage. Pour les ensembles de données de classification de texte, nous avons testé des MLP à une, deux et trois couches. Les modèles à deux couches sont plus performants, voire meilleurs que ceux à trois couches. De même, nous avons essayé sepCNN avec quatre ou six couches, et les modèles à quatre couches ont enregistré de bonnes performances.
Nombre d'unités par couche : les unités d'une couche doivent contenir les informations pour la transformation qu'une couche effectue. Pour la première couche, cela dépend du nombre de caractéristiques. Dans les couches suivantes, le nombre d'unités dépend du choix de développer ou de réduire la représentation de la couche précédente. Essayez de minimiser la perte d'informations entre les calques. Nous avons testé des valeurs dans la plage [8, 16, 32, 64]
, et 32/64 unités ont bien fonctionné.
Taux d'abandon: les couches d'abandon sont utilisées dans le modèle pour la régularisation. Ils définissent la fraction de l'entrée à abandonner pour éviter le surapprentissage. Plage recommandée: 0,2–0,5.
Taux d'apprentissage : fréquence à laquelle les pondérations du réseau de neurones changent entre les itérations. Un taux d'apprentissage élevé peut entraîner de grandes variations dans les pondérations, et il est possible que nous ne puissions jamais trouver leurs valeurs optimales. Un taux d'apprentissage faible est bon, mais le modèle nécessitera plus d'itérations pour converger. Il est conseillé de commencer bas à partir de 1e-4. Si l'entraînement est très lent, augmentez cette valeur. Si votre modèle n'est pas en cours d'apprentissage, essayez de réduire le taux d'apprentissage.
Nous avons réglé d'autres hyperparamètres spécifiques à notre modèle sepCNN:
Taille du noyau: taille de la fenêtre de convolution. Valeurs recommandées: 3 ou 5.
Dimensions de représentations vectorielles continues : nombre de dimensions que nous voulons utiliser pour représenter les représentations vectorielles continues de mots (c'est-à-dire la taille de chaque vecteur de mot). Valeurs recommandées: entre 50 et 300. Lors de nos tests, nous avons utilisé des représentations vectorielles continues GloVe avec 200 dimensions avec une couche de représentations vectorielles continues pré-entraînées.
Essayez ces hyperparamètres pour déterminer ce qui fonctionne le mieux. Une fois que vous avez choisi les hyperparamètres les plus performants pour votre cas d'utilisation, votre modèle est prêt à être déployé.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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."]]