Etapa 5: ajustar hiperparâmetros
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Tivemos que escolher vários hiperparâmetros para definir e treinar o
modelo. Confiamos na intuição, nos exemplos e nas práticas recomendadas. No entanto, nossa primeira escolha de valores de hiperparâmetros pode não gerar os melhores resultados.
Isso serve apenas como um bom ponto de partida para o treinamento. Cada problema é diferente, e ajustar esses hiperparâmetros ajudará a refinar nosso modelo para representar melhor as particularidades do problema em questão. Vamos dar uma olhada em alguns dos
parâmetros que usamos e o que significa ajustá-los:
Número de camadas no modelo: o número de camadas em uma rede neural é um indicador da complexidade dela. Tenha cuidado ao escolher esse valor. Muitas camadas permitem ao modelo aprender muitas informações sobre os dados de treinamento, causando overfitting. Um número insuficiente de camadas pode limitar a capacidade de aprendizado do modelo, causando baixo ajuste. Para conjuntos de dados de classificação de texto,
testamos MLPs de uma, duas e três camadas. Modelos com duas camadas têm um bom desempenho e, em alguns casos, melhores do que modelos com três camadas. Da mesma forma, tentamos sepCNNs
com quatro e seis camadas, e os modelos de quatro camadas tiveram um bom desempenho.
Número de unidades por camada: as unidades em uma camada precisam conter as informações
para a transformação que uma camada realiza. Na primeira camada, isso é
baseado no número de atributos. Nas camadas subsequentes, o número de unidades
depende da escolha de expandir ou reduzir a representação da
camada anterior. Tente minimizar a perda de informações entre as camadas. Testamos valores de unidade no intervalo [8, 16, 32, 64]
, e as unidades 32/64 funcionaram bem.
Taxa de desistência: as camadas de dropout são usadas no modelo para
regularização.
Eles definem a fração de entradas a serem descartadas como precaução de overfitting.
Intervalo recomendado: 0,2 a 0,5.
Taxa de aprendizado: é a taxa em que os pesos da rede neural mudam
entre iterações. Uma taxa de aprendizado alta pode causar grandes oscilações nos pesos,
e talvez nunca encontremos os valores ideais para eles. Uma taxa de aprendizado baixa é boa, mas o
modelo precisa de mais iterações para convergir. É uma boa ideia estar baixo, por exemplo,
em 1e-4. Se o treinamento for muito lento, aumente esse valor. Se o modelo não estiver
aprendizado, tente diminuir a taxa de aprendizado.
Há outros hiperparâmetros ajustados que são específicos do nosso modelo sepCNN:
Tamanho do kernel: o tamanho da janela de convolução. Valores recomendados: 3 ou
5.
Dimensões de embedding: o número de dimensões que queremos usar para representar embeddings de palavra, ou seja, o tamanho de cada vetor de palavra. Valores recomendados: 50 a 300.
Nos nossos experimentos, usamos embeddings do GloVe com 200 dimensões com uma camada de embedding pré-treinada.
Teste esses hiperparâmetros e veja o que funciona melhor. Depois de escolher os hiperparâmetros de melhor desempenho para seu caso de uso, o modelo estará pronto para ser implantado.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 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."]]