5 votos

Mal rendimiento con la función de activación ReLU en el conjunto de datos MNIST

Soy bastante nuevo en redes neuronales y actualmente estoy intentando entrenar una red neuronal no convolucional en el conjunto de datos MNIST. Estoy observando algunos comportamientos que no entiendo muy bien.

Este es el código escrito con keras como librería:

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
model = Sequential()

early_stopper = EarlyStopping(patience=3)

model.add(Flatten(input_shape=(28,28)))
model.add(Dense(128, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(10, activation="softmax"))
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

model.fit(x_train, y_train, epochs=20, validation_data=(x_test, y_test), callbacks=[early_stopper])

Esto me da una validación_acc de alrededor del 20%. Lo curioso es que cuando cambio las funciones de activación a "sigmoid", la función de pérdida a "mean_squared_error" y el optimizador a "sgd" mi rendimiento mejora hasta alrededor del 85% después de 50 epochs.

Habiendo leído http://neuralnetworksanddeeplearning.com/ Me pregunto a qué se debe el mal rendimiento de la red que presenté en el código. ReLU, entropía cruzada y un optimizador dinámico como Adam parecen mejorar la idea de una red neuronal muy vainilla con optimización de gradiente estocástico, error cuadrático medio como pérdida y funciones de activación sigmoideas. Sin embargo, obtengo un rendimiento realmente malo y si aumento el número de nodos en las capas ocultas a menudo obtengo una red que no aprende en absoluto.

EDITAR: Me di cuenta de que tiene algo que ver conmigo no normalizar la entrada a valores entre 0 y 1 ... pero por qué ¿es este el problema?

4voto

user777 Puntos 10934

Podemos encontrar una explicación razonable a este comportamiento en el Preguntas frecuentes sobre redes neuronales . TL;DR - el reescalado es realmente importante para las NN porque, en combinación con la elección de la inicialización, puede evitar la saturación.

Pero estandarizar las variables de entrada puede tener efectos mucho más importantes sobre la inicialización de los pesos que simplemente evitar la saturación. Supongamos que tenemos un MLP con una capa oculta aplicado a un problema de clasificación y, por tanto, estamos interesados en los hiperplanos definidos por cada unidad oculta. Cada hiperplano es el lugar de los puntos en los que la entrada neta a la unidad oculta es cero y, por tanto, es el límite de clasificación generado por esa unidad oculta considerada de forma aislada. Los pesos de conexión de las entradas a una unidad oculta determinan la orientación del hiperplano. El sesgo determina la distancia del hiperplano al origen. Si los términos de sesgo son todos números aleatorios pequeños, entonces todos los hiperplanos pasarán cerca del origen. Por lo tanto, si los datos no están centrados en el origen, es posible que el hiperplano no atraviese la nube de datos. Si todas las entradas tienen un coeficiente de variación pequeño, es muy posible que todos los hiperplanos iniciales pasen por alto los datos por completo. Con una inicialización tan pobre, es muy probable que se produzcan mínimos locales. Por tanto, es importante centrar las entradas para obtener buenas inicializaciones aleatorias. En particular, escalar las entradas a $[-1,1]$ funcionará mejor que $[0,1]$ Aunque es probable que cualquier escalado que ponga a cero la media o la mediana u otra medida de tendencia central sea igual de bueno, y los estimadores robustos de ubicación y escala (Iglewicz, 1983) serán incluso mejores para las variables de entrada con valores atípicos extremos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X