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

160

En la capa de salida de una red neuronal, es típico usar la función softmax para aproximar una distribución de probabilidad:

ingrese la descripción de la imagen aquí

Esto es costoso de calcular debido a los exponentes. ¿Por qué no simplemente realizar una transformación Z para que todas las salidas sean positivas y luego normalizar simplemente dividiendo todas las salidas por la suma de todas las salidas?

Tom
fuente
8
La función no es costosa de calcular debido a los exponentes, sino porque necesita calcular cada qj. La exponenciación es barata en comparación con la cantidad total de cómputo necesaria.
Seppo Enarvi
¿De qué tipo de transformación Z estás hablando? El significado del procesamiento de la señal del término no cabe aquí, y reemplazar los valores con su puntaje z produce una salida negativa si la entrada está por debajo de la media.
David Cian
Ver también: Estadísticas.SE
Martin Thoma

Respuestas:

166

Hay un buen atributo de Softmax en comparación con la normalización estándar.

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

Si bien la normalización estándar no 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 obtuvo una imagen nítida y se activaron 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 !?
Piotr Czapla
fuente
16
Esta respuesta ilustra mejor el impacto del uso de exponenciación en lugar de centrarse en los fundamentos teóricos. (Lo cual es genial). Debe incluirse al comienzo de la respuesta principal. Después de ver cómo, y en qué grado, la exponenciación extiende los valores, la respuesta principal ayuda a explicar por qué querría eso.
Ian Danforth
@IanDanforth estoy de acuerdo contigo. debería estar al principio.
Hitesh
11
No estoy seguro de por qué esta respuesta es la más votada. ¿Por qué [1,2] corresponde a una imagen borrosa mientras que [10,20] corresponde a una imagen más nítida? Esto es simplemente una cuestión de escala y ambos casos son esencialmente lo mismo. En todo caso, esto debería ser compatible con la normalización estándar, que considera correctamente los dos casos equivalentes.
user118967
Cuando ya se garantiza que los valores están en [0, 1], ¿hay alguna ventaja de tomar softmax en lugar de simplemente dividirlo por la suma?
Martin Thoma
59

He tenido esta pregunta por meses. Parece que simplemente adivinamos el softmax como una función de salida y luego interpretamos la entrada al softmax como probabilidades de registro. Como dijiste, ¿por qué no simplemente normalizar todos los resultados dividiéndolos 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 una activación. Entonces el softmax se define como

Muy corta explicación

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

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). Como 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 centramos en el softmax aquí con z ya dado, por lo que podemos reemplazar

siendo yo 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, el logaritmo de probabilidad asintota a 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, max (z) será otro z_j> z_i. Por lo tanto, la adición de z_i no cancela completamente -z_j y la probabilidad de registro es aproximadamente (z_i - z_j). Esto le dice claramente al modelo qué hacer para aumentar la probabilidad de registro: aumentar z_i y disminuir z_j.

Vemos que la probabilidad de registro 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 rápidamente. Tenga en cuenta que este no es el caso del error cuadrático medio, por ejemplo.

Larga explicación

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 multiclase justificados de manera análoga.

Kilian Batzner
fuente
Hola, ¿podría explicar esta afirmación y cómo pudo aproximarse? ", que para grandes diferencias en z se aproxima aproximadamente a"
Chico de Londres
45

La explicación aquí me pareció muy buena: CS231n: Redes neuronales convolucionales para el reconocimiento visual.

En la superficie, el algoritmo softmax parece ser una normalización no lineal simple (estamos difundiendo 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, la función softmax puede verse como un intento de minimizar la entropía cruzada entre las predicciones y la verdad.

  2. Vista probabilística: desde esta perspectiva, de hecho, estamos observando las probabilidades de registro, 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 probabilidad máxima)

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

Brett
fuente
2
Para agregar a comentarios anteriores, la derivada de la función softmax es solo softmax (1-softmax)
Rouzbeh
11
Obtengo las razones para usar Cross-Entropy Loss, pero ¿cómo se relaciona eso con el softmax? Dijiste que "la función softmax puede verse como un intento de minimizar la entropía cruzada entre las predicciones y la verdad". Supongamos que usaría la normalización estándar / lineal, pero aún usaría la Pérdida de entropía cruzada. Entonces también trataría de minimizar la entropía cruzada. Entonces, ¿cómo se vincula el softmax con la entropía cruzada, excepto por los beneficios numéricos?
Kilian Batzner
18
En cuanto a la visión probabilística: ¿cuál es la motivación para mirar las probabilidades de registro? El razonamiento parece ser un poco como "Usamos e ^ x en el softmax, porque interpretamos x como log-probabilties". Con el mismo razonamiento que podríamos decir, usamos e ^ e ^ e ^ x en el softmax, porque interpretamos x como log-log-log-probabilities (Exagerando aquí, por supuesto). Obtengo los beneficios numéricos de softmax, pero ¿cuál es la motivación teórica para usarlo?
Kilian Batzner el
55
@KilianBatzner Si la salida de una neurona es una probabilidad logarítmica, entonces la suma de las salidas de muchas neuronas es una multiplicación de sus probabilidades. Eso es más útil que una suma de probabilidades.
alltom
1
@KilianBatzner Si sus características provienen de diferentes grupos gaussianos (en grupo por clase), entonces puede derivar un clasificador perfecto (regresión logística). Existen algunas condiciones adicionales, pero esencialmente puede justificar / derivar softmax y logits asumiendo que desea separar los grupos gaussianos.
maxy
16

Los valores de q_i representan log-verosimilitudes. Para recuperar los valores de probabilidad, debe exponerlos.

Una razón por la cual los algoritmos estadísticos a menudo usan funciones de pérdida de probabilidad logarítmica es que son más estables numéricamente: un producto de probabilidades puede representarse como un número de coma flotante muy pequeño. Usando una función de pérdida de probabilidad logarítmica, un producto de probabilidades se convierte en una suma.

Otra razón es que las probabilidades de registro ocurren naturalmente cuando se obtienen estimadores para variables aleatorias que se supone que se extraen de distribuciones gaussianas multivariadas. Vea, por ejemplo, el estimador de máxima verosimilitud (ML) y la forma en que está conectado a los mínimos cuadrados.

Como nota al margen, creo que esta pregunta es más apropiada para la teoría de CS o intercambios de pila de ciencia computacional.

Victor May
fuente
12
q_i no representa implícitamente las probabilidades de registro. es solo cuando usamos el softmax que asumimos explícitamente que lo hacen.
Tom
6

Estamos viendo un problema de clasificación multiclase. Es decir, la variable predicha ypuede tomar una de las kcategorías, donde k > 2. En la teoría de la probabilidad, esto generalmente está modelado por una distribución multinomial. La distribución multinomial es un miembro de distribuciones familiares exponenciales. Podemos reconstruir la probabilidad P(k=?|x)usando propiedades de distribuciones familiares exponenciales, coincide con la fórmula softmax.

Si cree que el problema puede ser modelado por otra distribución, que no sea multinomial, entonces podría llegar a una conclusión que es diferente de softmax.

Para obtener más información y una derivación formal, consulte las notas de clase CS229 (9.3 Regresión Softmax) .

Además, un truco útil que generalmente se realiza para softmax es: softmax (x) = softmax (x + c) , softmax es invariante a los desplazamientos constantes en la entrada.

ingrese la descripción de la imagen

GabrielChu
fuente
¿Cómo funciona como una función de activación, ya que devuelve el mismo valor para 'x' y 'x + c'?
Suresh Pokharel
1
Estrictamente hablando, softmaxno es una función de activación. La función de activación es una operación basada en elementos: dar un elemento tensor que realiza una operación no lineal de manera inteligente para producir otro tensor. Pero softmaxes una operación vectorial, produce un vector normalizado, hay dependencias internas entre cada elemento.
GabrielChu
5

Creo que una de las razones puede ser tratar con los números negativos y la división por cero, ya que exp (x) siempre será positivo y mayor que cero.

Por ejemplo, para que a = [-2, -1, 1, 2]la suma sea 0, podemos usar softmax para evitar la división por cero.

Torayeff
fuente
3
Normalmente restarías el mínimo y luego dividirías por el máximo / suma. En su caso eso haría [0, 1, 3, 4]luego dividir.
ubershmekel
1
@ubershmekel Esto tiene el problema de que a la clase con el puntaje más pequeño siempre se le asignará una probabilidad de 0.
Alessandro Power
4

Supongamos que cambiamos la función softmax para que las activaciones de salida estén dadas por ingrese la descripción de la imagen aquí

donde ces una constante positiva Tenga en cuenta que c=1corresponde a la función softmax estándar. Pero si usamos un valor diferente de cobtenemos una función diferente, que sin embargo es cualitativamente bastante similar al softmax. En particular, demuestre que las activaciones de salida forman una distribución de probabilidad, al igual que para el softmax habitual. Supongamos que permitimos cllegar a ser grande, es decir, c→∞. ¿Cuál es el valor límite para las activaciones de salida a^L_j? Después de resolver este problema, debe quedar claro por qué pensamos en la c=1función como una versión "suavizada" de la función máxima. Este es el origen del término "softmax". Puede seguir los detalles de esta fuente (ecuación 83).

Dios mio
fuente
Para mí, la idea de la versión "suavizada" de la función máxima es la mejor manera simple de justificar el uso de softmax.
Tashuhka
3

Agregando a la respuesta de Piotr Czapla, cuanto mayores son los valores de entrada, mayor es la probabilidad de la entrada máxima, para la misma proporción y en comparación con las otras entradas:

ingrese la descripción de la imagen aquí

negas
fuente
2

La elección de la función softmax parece de alguna manera arbitraria ya que hay muchas otras posibles funciones de normalización. Por lo tanto, no está claro por qué la pérdida de log-softmax funcionaría mejor que otras alternativas de pérdida.

De " Una exploración de las alternativas de Softmax que pertenecen a la familia de pérdida esférica " https://arxiv.org/abs/1511.05042

Los autores exploraron algunas otras funciones, como la expansión de Taylor expy el llamado softmax esférico, y descubrieron que a veces pueden funcionar mejor de lo habitual softmax.

Kh romano
fuente