Ajuste de Hiperparámetros
Hiperparámetros en redes neuronales
Las redes neuronales, incluidos los perceptrones, tienen varios hiperparámetros que influyen en su rendimiento. A diferencia de los parámetros del modelo (por ejemplo, pesos y sesgos), los hiperparámetros se establecen antes de que comience el entrenamiento. Algunos hiperparámetros clave en los perceptrones incluyen:
-
Número de capas ocultas y neuronas por capa: determina la capacidad del modelo para aprender patrones complejos. Muy pocas neuronas pueden provocar subajuste, mientras que demasiadas pueden causar sobreajuste;
-
Tasa de aprendizaje: controla cuánto ajusta el modelo los pesos durante el entrenamiento. Una tasa de aprendizaje alta puede hacer que el entrenamiento sea inestable, mientras que una baja puede llevar a una convergencia lenta:
- Número de épocas de entrenamiento: define cuántas veces el modelo ve los datos de entrenamiento. Más épocas permiten un mejor aprendizaje, pero pueden llevar al sobreajuste si son excesivas.
En resumen, el sobreajuste ocurre cuando un modelo aprende demasiado bien los datos de entrenamiento, capturando el ruido en lugar de los patrones generales. Esto resulta en una alta precisión en el conjunto de entrenamiento pero pobre generalización a datos no vistos.
El subajuste, por otro lado, sucede cuando un modelo es demasiado simple para capturar los patrones subyacentes en los datos. Esto conduce a un bajo rendimiento tanto en entrenamiento como en prueba, lo que indica que el modelo carece de la capacidad suficiente para aprender de manera efectiva.
Ajuste de hiperparámetros
El ajuste de hiperparámetros es fundamental para optimizar las redes neuronales. Un modelo mal ajustado puede resultar en subajuste o sobreajuste.
Se pueden modificar el número de épocas, el número de capas ocultas, su tamaño y la tasa de aprendizaje para observar cómo cambia la precisión en los conjuntos de entrenamiento y prueba:
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 la combinación adecuada de hiperparámetros implica experimentación y ajustes sistemáticos. Esto suele realizarse mediante técnicas como búsqueda en cuadrícula (probar todas las combinaciones posibles de hiperparámetros) y búsqueda aleatoria (probar un subconjunto aleatorio de valores de hiperparámetros).
En esencia, el entrenamiento de una red neuronal sigue un ciclo iterativo:
- Definir el modelo con hiperparámetros iniciales;
- Entrenar el modelo utilizando el conjunto de entrenamiento;
- Evaluar el rendimiento en un conjunto de prueba;
- Ajustar los hiperparámetros (por ejemplo, número de capas, tasa de aprendizaje);
- Repetir el proceso hasta alcanzar el rendimiento deseado.
Este refinamiento iterativo garantiza que el modelo generalice correctamente a datos no vistos.
1. ¿Cuál de los siguientes es un hiperparámetro y no un parámetro del modelo?
2. Una tasa de aprendizaje demasiado alta probablemente causará:
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What are some best practices for hyperparameter tuning in neural networks?
Can you explain the difference between grid search and random search?
How do I know if my model is overfitting or underfitting?
Awesome!
Completion rate improved to 4
Ajuste de Hiperparámetros
Desliza para mostrar el menú
Hiperparámetros en redes neuronales
Las redes neuronales, incluidos los perceptrones, tienen varios hiperparámetros que influyen en su rendimiento. A diferencia de los parámetros del modelo (por ejemplo, pesos y sesgos), los hiperparámetros se establecen antes de que comience el entrenamiento. Algunos hiperparámetros clave en los perceptrones incluyen:
-
Número de capas ocultas y neuronas por capa: determina la capacidad del modelo para aprender patrones complejos. Muy pocas neuronas pueden provocar subajuste, mientras que demasiadas pueden causar sobreajuste;
-
Tasa de aprendizaje: controla cuánto ajusta el modelo los pesos durante el entrenamiento. Una tasa de aprendizaje alta puede hacer que el entrenamiento sea inestable, mientras que una baja puede llevar a una convergencia lenta:
- Número de épocas de entrenamiento: define cuántas veces el modelo ve los datos de entrenamiento. Más épocas permiten un mejor aprendizaje, pero pueden llevar al sobreajuste si son excesivas.
En resumen, el sobreajuste ocurre cuando un modelo aprende demasiado bien los datos de entrenamiento, capturando el ruido en lugar de los patrones generales. Esto resulta en una alta precisión en el conjunto de entrenamiento pero pobre generalización a datos no vistos.
El subajuste, por otro lado, sucede cuando un modelo es demasiado simple para capturar los patrones subyacentes en los datos. Esto conduce a un bajo rendimiento tanto en entrenamiento como en prueba, lo que indica que el modelo carece de la capacidad suficiente para aprender de manera efectiva.
Ajuste de hiperparámetros
El ajuste de hiperparámetros es fundamental para optimizar las redes neuronales. Un modelo mal ajustado puede resultar en subajuste o sobreajuste.
Se pueden modificar el número de épocas, el número de capas ocultas, su tamaño y la tasa de aprendizaje para observar cómo cambia la precisión en los conjuntos de entrenamiento y prueba:
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 la combinación adecuada de hiperparámetros implica experimentación y ajustes sistemáticos. Esto suele realizarse mediante técnicas como búsqueda en cuadrícula (probar todas las combinaciones posibles de hiperparámetros) y búsqueda aleatoria (probar un subconjunto aleatorio de valores de hiperparámetros).
En esencia, el entrenamiento de una red neuronal sigue un ciclo iterativo:
- Definir el modelo con hiperparámetros iniciales;
- Entrenar el modelo utilizando el conjunto de entrenamiento;
- Evaluar el rendimiento en un conjunto de prueba;
- Ajustar los hiperparámetros (por ejemplo, número de capas, tasa de aprendizaje);
- Repetir el proceso hasta alcanzar el rendimiento deseado.
Este refinamiento iterativo garantiza que el modelo generalice correctamente a datos no vistos.
1. ¿Cuál de los siguientes es un hiperparámetro y no un parámetro del modelo?
2. Una tasa de aprendizaje demasiado alta probablemente causará:
¡Gracias por tus comentarios!