Paso 5: Ajusta los hiperparámetros
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Tuvimos que elegir varios hiperparámetros para definir y entrenar el modelo. Nos basamos en la intuición, ejemplos y recomendaciones. Sin embargo, es posible que nuestra primera opción de valores de hiperparámetros no genere los mejores resultados.
Solo nos brinda un buen punto de partida para la capacitación. Cada problema es diferente y ajustar estos hiperparámetros ayudará a definir mejor nuestro modelo para representar mejor las particularidades del problema en cuestión. Veamos algunos de los hiperparámetros que usamos y lo que significa ajustarlos:
Número de capas en el modelo: La cantidad de capas en una red neuronal es un indicador de su complejidad. Debemos ser cuidadosos a la hora de elegir este valor. Demasiadas capas permitirán que el modelo aprenda demasiada información sobre los datos de entrenamiento, lo que causa un sobreajuste. Tener pocas capas puede limitar la capacidad de aprendizaje del modelo, lo que causa un subajuste. Para los conjuntos de datos de clasificación de texto, experimentamos con uno, dos y tres capas de MLP. Los modelos con dos capas tuvieron un buen rendimiento y, en algunos casos, mejores que los modelos de tres capas. De manera similar, probamos sepCNN con cuatro y seis capas, y los modelos de cuatro capas tuvieron un buen rendimiento.
Número de unidades por capa: las unidades de una capa deben contener la información de la transformación que realiza una capa. Para la primera capa, esto se debe a la cantidad de atributos. En las capas posteriores, la cantidad de unidades depende de la elección de expandir o contraer la representación de la capa anterior. Intenta minimizar la pérdida de información entre capas. Probamos valores de unidad en el rango [8, 16, 32, 64]
, y 32/64 unidades funcionaron bien.
Tasa de retirados: Las capas de retirados se usan en el modelo para la regularización.
Definen la fracción de entrada que debe caer como precaución para el sobreajuste.
Rango recomendado: 0.2–0.5
Tasa de aprendizaje: Es la velocidad a la que cambian los pesos de la red neuronal entre iteraciones. Una tasa de aprendizaje grande puede provocar grandes oscilaciones en los pesos, y es posible que nunca encontremos sus valores óptimos. Una tasa de aprendizaje baja es buena, pero el modelo necesitará más iteraciones para converger. Es una buena idea comenzar con un nivel bajo, digamos en 1e-4. Si el entrenamiento es muy lento, aumenta este valor. Si tu modelo no está aprendiendo, intenta disminuir la tasa de aprendizaje.
Hemos ajustado algunos hiperparámetros adicionales específicos de nuestro modelo sepCNN:
Kernel size (Tamaño del kernel): El tamaño de la ventana de convolución. Valores recomendados: 3 o 5
Dimensiones de incorporación: la cantidad de dimensiones que queremos usar para representar las incorporaciones de palabras, es decir, el tamaño de cada vector de palabra. Valores recomendados: 50-300
En nuestros experimentos, usamos incorporaciones de GloVe con 200 dimensiones con una capa de incorporación previamente entrenada.
Experimente con estos hiperparámetros y vea qué funciona mejor. Una vez que hayas elegido los hiperparámetros con mejor rendimiento para tu caso práctico, tu modelo estará listo para implementarse.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[null,null,["Última actualización: 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."]]