- 1

La importancia de las redes neuronales en la actualidad
04:08 - 2

¿Que herramientas usaremos para redes neuronales?
02:49 - 3

¿Qué es deep learning?
07:31 - 4

Tu primera red neuronal con Keras
12:05 - 5

Entrenando el modelo de tu primera red neuronal
03:18 - 6

La neurona: una pequeña y poderosa herramienta
07:07 - 7

Arquitectura de una red neuronal
06:20 - 8

Funciones de activación
13:46 - 9

Funcion de pérdida (loss function)
09:00 - 10

Descenso del gradiente
08:57 - 11

Backpropagation
07:37 - 12

Playground - Tensorflow
05:48 quiz: Fundamentos en la arquitectura de redes neuronales
Reduciendo el overfitting
Clase 22 de 29 • Curso de Fundamentos de Redes Neuronales con Python y Keras
Contenido del curso
- 13

Dimensiones, tensores y reshape
14:06 - 14

Creando nuestra red neuronal usando numpy y matemáticas
15:51 - 15

Entrenamiento forward de la red neuronal
09:17 - 16

Aplicando backpropagation y descenso del gradiente
13:06 - 17

Entrenamiento y análisis de resultados de tu red neuronal
12:57 quiz: Redes neuronales con Python
- 18

Data: train, validation, test
02:49 - 19

Resolviendo un problema de clasificacion binaria
11:27 - 20

Entrenamiento del modelo de clasificación binaria
11:06 - 21

Regularización - Dropout
07:19 - 22

Reduciendo el overfitting
11:07 - 23

Resolviendo un problema de clasificación múltiple
10:41 - 24

Entrenamiento del modelo de clasificación múltiple
09:34 - 25

Resolviendo un problema de regresión
12:47 - 26

Entrenamiento del modelo de regresión
12:48 - 27

Análisis de resultados del modelo de regresión
10:11
¿Cómo implementar redes neuronales sencillas para mejorar el desempeño?
Empezar con redes neuronales puede ser abrumador, pero una manera efectiva de controlar el overfitting es reducir la complejidad del modelo. En el caso que vamos a revisar, se utiliza un modelo con menos capas y neuronas para ver cómo se comporta. El primer paso es configurar y ejecutar el modelo ajustando iteraciones y neuronas.
Reducción del número de neuronas en el modelo
Inicialmente, configuramos un modelo más simple disminuyendo las neuronas en las capas. Por ejemplo, si tu modelo original tiene 16 neuronas por capa, podrías reducirlas a 4. Este cambio puede hacer que tu modelo tarde más en hacer overfitting porque la arquitectura es menos compleja.
# Creación de un modelo más sencillo
from keras.models import Sequential
from keras.layers import Dense
model_smaller = Sequential()
model_smaller.add(Dense(4, activation='relu', input_shape=(input_dim,)))
model_smaller.add(Dense(4, activation='relu'))
model_smaller.add(Dense(1, activation='sigmoid'))
model_smaller.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history_smaller = model_smaller.fit(X_train, y_train, epochs=20, validation_data=(X_val, y_val))
Observarás que este modelo más modesto generaliza mejor y reduce el overfitting.
¿Cómo aplicar regularización L2 en redes neuronales?
La regularización es una técnica potente para evitar el overfitting regulando el peso de los parámetros del modelo. Al aplicar Regularización L2, introduces un término adicional en la función de pérdida que penaliza grandes ponderaciones.
Implementación de regularización L2
Para aplicar esta técnica, utilizamos la biblioteca keras y añadimos la regularización tanto en la capa de entrada como en capas Dense. Aquí se muestra cómo hacerlo:
from keras import regularizers
# Implementación de regularización L2 en el modelo
model_with_regularization = Sequential()
model_with_regularization.add(Dense(16,
activation='relu',
input_shape=(input_dim,),
kernel_regularizer=regularizers.l2(0.001)))
model_with_regularization.add(Dense(16,
activation='relu',
kernel_regularizer=regularizers.l2(0.001)))
model_with_regularization.add(Dense(1, activation='sigmoid'))
model_with_regularization.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history_reg = model_with_regularization.fit(X_train, y_train, epochs=20, validation_data=(X_val, y_val))
Con la regularización L2 (l2), el modelo se vuelve menos propenso a confiar demasiado en características individuales, mejorando así la capacidad de generalización en conjuntos de validación.
¿Cómo utilizar Dropout para mejorar redes neuronales?
La técnica Dropout es fundamental para hacer las redes neuronales más robustas y menos propensas al overfitting. Dropout consiste en desactivar aleatoriamente un porcentaje de neuronas durante el entrenamiento.
Aplicación de Dropout en el modelo
Con Dropout, un modelo se beneficia al aprender patrones más generales en lugar de depender del ajuste específico de las neuronas individuales. A continuación, se muestra cómo implementar Dropout:
from keras.layers import Dropout
# Implementar Dropout en el modelo
model_with_dropout = Sequential()
model_with_dropout.add(Dense(16, activation='relu', input_shape=(input_dim,)))
model_with_dropout.add(Dropout(0.5))
model_with_dropout.add(Dense(16, activation='relu'))
model_with_dropout.add(Dropout(0.5))
model_with_dropout.add(Dense(1, activation='sigmoid'))
model_with_dropout.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history_dropout = model_with_dropout.fit(X_train, y_train, epochs=20, validation_data=(X_val, y_val))
Al introducir Dropout, se fuerza a la red a aprender características más robustas, reduciendo la correlación entre neuronas, y mitiga la posibilidad de overfitting.
¡Invitación a la experimentación!
Ahora que conoces las técnicas, atrévete a experimentar. Cambia la arquitectura y aplica combinación de regularización L1, L2, o ambas junto a capas de Dropout. Observa cómo mejora la precisión accuracy de tu modelo y compártelo en el sistema de comentarios del curso. ¡El aprendizaje y la práctica son claves para dominar las redes neuronales!