Ajuste de Hiperparâmetros
Deslize para mostrar o menu
Hiperparâmetros em Redes Neurais
Redes neurais, incluindo perceptrons, possuem diversos hiperparâmetros que influenciam seu desempenho. Diferente dos parâmetros do modelo (por exemplo, pesos e vieses), os hiperparâmetros são definidos antes do início do treinamento. Alguns hiperparâmetros importantes em perceptrons incluem:
-
Número de camadas ocultas e neurônios por camada: determina a capacidade do modelo de aprender padrões complexos. Poucos neurônios podem causar underfitting, enquanto muitos podem levar ao overfitting;
-
Taxa de aprendizado: controla o quanto o modelo ajusta os pesos durante o treinamento. Uma taxa de aprendizado alta pode tornar o treinamento instável, enquanto uma baixa pode resultar em convergência lenta:
- Número de épocas de treinamento: define quantas vezes o modelo vê os dados de treinamento. Mais épocas permitem melhor aprendizado, mas podem levar ao overfitting se forem excessivas.
Para recapitular, overfitting ocorre quando um modelo aprende os dados de treinamento excessivamente, capturando ruídos em vez de padrões gerais. Isso resulta em alta precisão no conjunto de treinamento, mas baixa generalização para dados não vistos.
Underfitting, por outro lado, acontece quando um modelo é simples demais para capturar os padrões subjacentes nos dados. Isso leva a baixo desempenho tanto no treinamento quanto no teste, indicando que o modelo não possui capacidade suficiente para aprender de forma eficaz.
Ajuste de Hiperparâmetros
O ajuste de hiperparâmetros é fundamental para otimizar redes neurais. Um modelo mal ajustado pode resultar em underfitting ou overfitting.
É possível ajustar o número de épocas, o número de camadas ocultas, seu tamanho e a taxa de aprendizado para observar como a precisão nos conjuntos de treino e teste muda:
1234567891011121314151617181920212223from sklearn.neural_network import MLPClassifier from sklearn.metrics import accuracy_score import numpy as np import warnings # Ignore warnings warnings.filterwarnings("ignore") import os os.system('wget https://codefinity-content-media.s3.eu-west-1.amazonaws.com/f9fc718f-c98b-470d-ba78-d84ef16ba45f/section_2/data.py 2>/dev/null') from data import X_train, y_train, X_test, y_test np.random.seed(10) # Tweak hyperparameters here model = MLPClassifier(max_iter=100, hidden_layer_sizes=(6, 6), learning_rate_init=0.01, random_state=10) model.fit(X_train, y_train) y_pred_train = model.predict(X_train) y_pred_test = model.predict(X_test) # Comparing train set accuracy and test set accuracy train_accuracy = accuracy_score(y_train, y_pred_train) test_accuracy = accuracy_score(y_test, y_pred_test) print(f'Train accuracy: {train_accuracy:.3f}') print(f'Test accuracy: {test_accuracy:.3f}')
Encontrar a combinação certa de hiperparâmetros envolve experimentação sistemática e ajustes. Isso geralmente é feito utilizando técnicas como busca em grade (testando todas as combinações possíveis de hiperparâmetros) e busca aleatória (testando um subconjunto aleatório de valores de hiperparâmetros).
Essencialmente, o treinamento de uma rede neural segue um ciclo iterativo:
- Definir o modelo com hiperparâmetros iniciais;
- Treinar o modelo utilizando o conjunto de dados de treinamento;
- Avaliar o desempenho em um conjunto de teste;
- Ajustar os hiperparâmetros (por exemplo, número de camadas, taxa de aprendizado);
- Repetir o processo até alcançar o desempenho desejado.
Esse refinamento iterativo garante que o modelo generalize bem para dados não vistos.
1. Qual das alternativas a seguir é um hiperparâmetro e não um parâmetro do modelo?
2. Uma taxa de aprendizado muito alta provavelmente causará:
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo