Regularización por restricción en red convolucional

Contenido del Bootcamp Dirigido por: | Última modificación: 30 de julio de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

La regularización por restricción en red convolucional (Max norm constraints) es uno de los conocimiento importantes para la regularización de redes profundas convolucionales, puesto que debes contar con el conocimiento de todas las opciones que se encuentran para llevar a cabo esta tarea y saber elegir cuál es la mejor solución para tu procesamiento de los datos.

Por este motivo, en este post, te explicamos qué es y cómo funciona la regularización por restricción en red convolucional en el campo del Deep Learning.

Regularización por restricción en red convolucional

La regularización por restricción en red convolucional o Max norm constraints es uno de los tipos de regularización que se basa, como su nombre expone, en restricciones. Por ejemplo, podríamos establecer un máximo que los pesos no pueden superar.

En la práctica, la regularización por restricción en red convolucional se implementa usando el gradient descent o descenso del gradiente para calcular el nuevo valor de los pesos como lo haríamos normalmente, solo que después se calcula la norma 2 de cada vector de pesos para cada neurona y se pone como condición que no pueda superar a c, es decir: ||W||2<c. Normalmente, c es igual a 3 o 4.

Lo que conseguimos con esta normalización es que la red no «explote», es decir, que los pesos no crezcan desmesuradamente (recuerda que esto es lo que sucede también si usamos un learning rate muy alto).

Veamos esta regularización:

# Prueba con regularización maxnorm

# importamos la capa max_norm
from tensorflow.keras.constraints import max_norm

# Inizializamos el modelo
model = Sequential()

# Definimos una capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)))

# Definimos una segunda capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))

# Definimos una tercera capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))

# Añadimos nuestro clasificador
model.add(Flatten())
model.add(Dense(1024, activation='relu', kernel_constraint=max_norm(3.)))
model.add(Dense(10, activation='softmax'))

# Compilamos el modelo
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.0001, decay=1e-6),
              metrics=['accuracy'])

# Entrenamos el modelo
model.fit(X_train_norm, to_categorical(Y_train),
          batch_size=128,
          shuffle=True,
          epochs=10,
          validation_data=(X_test_norm, to_categorical(Y_test))) # aquí deberíamos usar un conjunto distinto al de test!!!

# Evaluamos el modelo
scores = model.evaluate(X_test_norm, to_categorical(Y_test))

print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])

En este post, te hemos expuesto qué es y cómo funciona la regularización por restricción en red convolucional dentro del campo del Deep Learning. Sin embargo, ¡todavía queda mucho más por aprender!

Para continuar con tu formación, te recomendamos nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning, puesto que esta formación intensiva te acercará a muchos más sistemas, lenguajes y herramientas que trabajan con los macrodatos, de forma que te convertirás en un data scientist profesional al saber escoger las mejores alternativas para un procesamiento de datos. ¡Apúntate y triunfa en el sector IT!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado