¿Por qué usar softmax en lugar de la normalización estándar? En el área de comentarios de la respuesta principal de esta pregunta, @Kilian Batzner planteó 2 preguntas que también me confunden mucho. Parece que nadie da una explicación, excepto los beneficios numéricos.
Obtengo las razones para usar la Pérdida de entropía cruzada, pero ¿cómo se relaciona eso con el softmax? Usted dijo "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?
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?
Respuestas:
Es más que solo numérico. Un recordatorio rápido del softmax:
Donde es un vector de entrada con una longitud igual al número de clases de . La función softmax tiene 3 propiedades muy agradables: 1. normaliza sus datos (genera una distribución de probabilidad adecuada), 2. es diferenciable y 3. utiliza la exp mencionada. Algunos puntos importantes:Kx K
La función de pérdida no está directamente relacionada con softmax. Puede usar la normalización estándar y aún usar la entropía cruzada.
Una función "hardmax" (es decir, argmax) no es diferenciable. El softmax da al menos una mínima cantidad de probabilidad a todos los elementos en el vector de salida, por lo que es muy diferenciable, de ahí el término "soft" en softmax.
Ahora llego a tu pregunta. La en softmax es la función exponencial natural. Antes de normalizar, transformamos como en el gráfico de :x e xe x ex
Si es 0, entonces , si es 1, entonces , y si es 2, ahora . Un gran paso! Esto es lo que se llama una transformación no lineal de nuestras puntuaciones de registro no normalizadas. La propiedad interesante de la función exponencial combinada con la normalización en el softmax es que las puntuaciones altas en vuelven mucho más probables que las bajas.y = 1 x y = 2.7 x y = 7 xx y=1 x y=2.7 x y=7 x
Un ejemplo . Digamos , y su puntaje log es el vector . La función argmax simple genera:x [ 2 , 4 , 2 , 1 ]K=4 x [2,4,2,1]
El objetivo es argmax, pero no es diferenciable y no podemos entrenar nuestro modelo con él :( Una normalización simple, que es diferenciable, genera las siguientes probabilidades:
Eso está muy lejos de la argmax! :( Considerando que las salidas softmax:
¡Eso está mucho más cerca del argmax! Debido a que usamos el exponencial natural, aumentamos enormemente la probabilidad del puntaje más alto y disminuimos la probabilidad de los puntajes más bajos en comparación con la normalización estándar. De ahí el "max" en softmax.
fuente
e
, ¿qué pasa con el uso de una constante digamos 3 o 4? ¿El resultado será el mismo?e
tiene una derivada más agradable;)e
que lo hace interpretable como una probabilidad, es el hecho de que cada elemento de la salida softmax está limitado en [0,1] y las sumas completas a 1.Además de la explicación de vega,
definamos softmax genérico: donde es una constante> = 1P(y=j|x)=ψxj∑Kk=1ψxk ψ
if , entonces estás bastante lejos de argmax como @vega mencionó.ψ=1
Supongamos ahora que , ahora estás bastante cerca de la argmax pero también tienes números realmente pequeños para valores negativos y números grandes para positivos. Estos números se desborda el límite aritmética de punto flotante con facilidad (por ejemplo límite máximo de float64 numpy es ). Además de eso, incluso si la selección es que es mucho más pequeña que , los marcos deberían implementar una versión más estable de softmax (multiplicando tanto el numerador como el denominador con constante ) ya que los resultados se vuelven demasiado pequeños para poder expresar con tanta precisiónψ=100 10 308 ψ = e 100 C10308 ψ=e 100 C
Por lo tanto, desea elegir una constante lo suficientemente grande como para aproximar bien argmax, y también lo suficientemente pequeña como para expresar estos números grandes y pequeños en los cálculos.
Y, por supuesto, también tiene un derivado bastante bueno.e
fuente
Esta pregunta es muy interesante. No sé la razón exacta pero creo que la siguiente razón podría usarse para explicar el uso de la función exponencial. Esta publicación está inspirada en la mecánica estadística y el principio de máxima entropía.
Explicaré esto usando un ejemplo con imágenes, que están constituidas por imágenes de la clase , imágenes de la clase , ..., y imágenes de la clase . Luego asumimos que nuestra red neuronal pudo aplicar una transformación no lineal en nuestras imágenes, de modo que podemos asignar un 'nivel de energía' a todas las clases. Suponemos que esta energía está en una escala no lineal que nos permite separar linealmente las imágenes.N n1 C1 n2 C2 nK CK Ek
La energía media está relacionada con las otras energías por la siguiente relaciónE¯ Ek NE¯=∑k=1KnkEk.(∗)
Al mismo tiempo, vemos que la cantidad total de imágenes se puede calcular como la siguiente suma
La idea principal del principio de máxima entropía es que el número de imágenes en las clases correspondientes se distribuye de tal manera que se maximice el número de combinaciones posibles de una distribución de energía dada. Para decirlo de manera más simple, el sistema no entrará en un estado en el que solo tenemos la clase tampoco entrará en un estado en el que tengamos la misma cantidad de imágenes en cada clase. Pero ¿por qué es esto así? Si todas las imágenes estuvieran en una clase, el sistema tendría una entropía muy baja. El segundo caso también sería una situación muy poco natural. Es más probable que tengamos más imágenes con energía moderada y menos imágenes con energía muy alta y muy baja.n1
La entropía aumenta con el número de combinaciones en las que podemos dividir las imágenes en las clases de imagen , , ..., con la energía correspondiente. Este número de combinaciones viene dado por el coeficiente multinomialN n1 n2 nK
Intentaremos maximizar este número asumiendo que tenemos infinitas imágenes . Pero su maximización también tiene restricciones de igualdad y . Este tipo de optimización se llama optimización restringida. Podemos resolver este problema analíticamente utilizando el método de multiplicadores de Lagrange. Introducimos los multiplicadores de Lagrange y para las restricciones de igualdad y presentamos la función Lagrange .N→∞ (∗) (∗∗) β α L(n1,n2,…,nk;α,β)
Como asumimos también podemos suponer y usar la aproximación de Stirling para el factorialN→∞ nk→∞
Tenga en cuenta que esta aproximación (los dos primeros términos) es solo asintótica, ¡no significa que esta aproximación convergerá apara .lnn! n→∞
La derivada parcial de la función Lagrange con respecto a dará como resultadonk~
Si establecemos esta derivada parcial en cero, podemos encontrar
Si volvemos a poner esto en podemos obtener(∗∗)
Si volvemos a poner esto en obtenemos algo que debería recordarnos la función softmax(∗∗∗)
Si definimos como la probabilidad de la clase por obtendremos algo que es realmente similar a la función softmaxnk~/N Ck~ pk~
Por lo tanto, esto nos muestra que la función softmax es la función que maximiza la entropía en la distribución de imágenes. Desde este punto, tiene sentido usar esto como la distribución de imágenes. Si establecemos obtenemos exactamente la definición de la función softmax para la salida .βEk~=wTkx kth
fuente