Saltar al contenido

¿Por qué utilizar softmax en lugar de la normalización estándar?

Intenta comprender el código correctamente previamente a adaptarlo a tu trabajo si ttienes algo que aportar puedes compartirlo con nosotros.

Solución:

Hay uno bonito attribute de Softmax en comparación con la normalización estándar.

Reacciona a una estimulación baja (piense en una imagen borrosa) de su red neuronal con una distribución bastante uniforme y a una estimulación alta (es decir, números grandes, piense en una imagen nítida) con probabilidades cercanas a 0 y 1.

Mientras que a la normalización estándar no le importa siempre que la proporción sea la misma.

Eche un vistazo a lo que sucede cuando soft max tiene una entrada 10 veces mayor, es decir, su red neuronal tiene una imagen nítida y se activan muchas neuronas

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

Y luego compárelo con la normalización estándar

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?

He tenido esta pregunta durante meses. Parece que simplemente adivinamos inteligentemente el softmax como una función de salida y luego interpretamos la entrada al softmax como log-probabilidades. Como dijiste, ¿por qué no normalizar simplemente todas las salidas dividiéndolas por su suma? Encontré la respuesta en el libro Deep Learning de Goodfellow, Bengio y Courville (2016) en la sección 6.2.2.

Digamos que nuestra última capa oculta nos da z como activación. Entonces el softmax se define como

Explicación muy breve

La exp en la función softmax cancela aproximadamente el registro en la pérdida de entropía cruzada, lo que hace que la pérdida sea aproximadamente lineal en z_i. Esto conduce a un gradiente aproximadamente constante, cuando el modelo es incorrecto, lo que le permite corregirse a sí mismo rápidamente. Por lo tanto, un softmax saturado incorrecto no provoca un gradiente de desaparición.

Breve explicación

El método más popular para entrenar una red neuronal es la estimación de máxima verosimilitud. Estimamos los parámetros theta de una manera que maximiza la probabilidad de los datos de entrenamiento (de tamaño m). Debido a que la probabilidad de todo el conjunto de datos de entrenamiento es un producto de las probabilidades de cada muestra, es más fácil maximizar la probabilidad logarítmica del conjunto de datos y, por lo tanto, la suma de la probabilidad logarítmica de cada muestra indexada por k:

Ahora, solo nos enfocamos en el softmax aquí con z ya dado, por lo que podemos reemplazar

siendo i la clase correcta de la k-ésima muestra. Ahora, vemos que cuando tomamos el logaritmo del softmax, para calcular la probabilidad logarítmica de la muestra, obtenemos:

, que para grandes diferencias en z se aproxima aproximadamente a

Primero, vemos el componente lineal z_i aquí. En segundo lugar, podemos examinar el comportamiento de max (z) para dos casos:

  1. Si el modelo es correcto, entonces max (z) será z_i. Por lo tanto, las asíntotas logarítmicas de verosimilitud son cero (es decir, una probabilidad de 1) con una diferencia creciente entre z_i y las otras entradas en z.
  2. Si el modelo es incorrecto, entonces max (z) será algún otro z_j> z_i. Entonces, la adición de z_i no cancela completamente -z_j y la probabilidad logarítmica es aproximadamente (z_i – z_j). Esto le dice claramente al modelo qué hacer para aumentar la probabilidad logarítmica: aumentar z_i y disminuir z_j.

Vemos que la probabilidad logarítmica general estará dominada por muestras, donde el modelo es incorrecto. Además, incluso si el modelo es realmente incorrecto, lo que conduce a un softmax saturado, la función de pérdida no se satura. Es aproximadamente lineal en z_j, lo que significa que tenemos un gradiente aproximadamente constante. Esto permite que el modelo se corrija a sí mismo rápidamente. Tenga en cuenta que este no es el caso del error cuadrático medio, por ejemplo.

Explicación larga

Si el softmax todavía le parece una elección arbitraria, puede echar un vistazo a la justificación para usar el sigmoide en la regresión logística:

¿Por qué la función sigmoidea en lugar de cualquier otra cosa?

El softmax es la generalización del sigmoide para problemas de clases múltiples justificados de forma análoga.

He encontrado que la explicación aquí es muy buena: CS231n: Redes neuronales convolucionales para el reconocimiento visual.

En la superficie, el algoritmo softmax parece ser una normalización simple no lineal (estamos distribuyendo los datos con exponencial). Sin embargo, hay más que eso.

Específicamente, hay un par de vistas diferentes (el mismo enlace que el anterior):

  1. Teoría de la información: desde la perspectiva de la teoría de la información, se puede considerar que la función softmax intenta minimizar la entropía cruzada entre las predicciones y la verdad.

  2. Vista probabilística: desde esta perspectiva, de hecho, estamos mirando las probabilidades logarítmicas, por lo tanto, cuando realizamos la exponenciación, terminamos con las probabilidades brutas. En este caso, la ecuación softmax encuentra el MLE (Estimación de máxima verosimilitud)

En resumen, aunque la ecuación softmax parece que podría ser arbitraria, NO lo es. En realidad, es una forma bastante basada en principios de normalizar las clasificaciones para minimizar la entropía cruzada / probabilidad negativa entre las predicciones y la verdad.

valoraciones y comentarios

Si crees que ha sido provechoso este post, nos gustaría que lo compartas con otros juniors de este modo nos ayudas a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *