math - redes - ¿Por qué usar softmax en comparación con la normalización estándar?
softmax redes neuronales (8)
La elección de la función softmax parece de alguna manera arbitraria, ya que existen muchas otras posibles funciones de normalización. Por lo tanto, no está claro por qué la pérdida de log-softmax tendría un mejor rendimiento que otras alternativas de pérdida.
De " Una exploración de las alternativas de Softmax que pertenecen a la familia esférica de la pérdida " https://arxiv.org/abs/1511.05042
Los autores exploraron algunas otras funciones entre las cuales se encuentran la expansión de Taylor exp
y el llamado softmax esférico y descubrieron que a veces podrían tener un mejor funcionamiento que el softmax
habitual.
En la capa de salida de una red neuronal, es típico usar la función softmax para aproximar una distribución de probabilidad:
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?
Creo que una de las razones puede ser tratar con números negativos y división por cero, ya que exp (x) siempre será positivo y mayor que cero.
Por ejemplo, para a = [-2, -1, 1, 2]
la suma será 0, podemos usar softmax para evitar la división por cero.
Estamos viendo un problema de clasificación múltiple. La variable predicha y
puede tomar uno de los k
valores, donde k > 2
. En probabilidad, esto satisface una distribución multinomial, y la distribución multinomial pertenece a una gran familia llamada familia exponencial. De acuerdo con la propiedad de las distribuciones familiares exponenciales, podemos reconstruir la probabilidad de P(k=?|x)
, que coincide con la fórmula de softmax.
Para obtener más información y una referencia de prueba formal CS229 notas de conferencia (Regresión de Softmax) .
Un truco útil suele ser softmax: softmax (x) = softmax (x + c) , es decir, softmax es invariante a los desplazamientos constantes en la entrada.
Hay un buen atributo de Softmax en comparación con la normalización estándar.
Reacciona a la baja estimulación (piense en la 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.
Si bien la normalización estándar no importa, siempre y cuando la proporción sea la misma.
Echa un vistazo a lo que sucede cuando el máximo suave tiene una entrada 10 veces mayor, es decir, tu red neuronal obtiene 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 compararlo 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 encontrado que la explicación aquí es muy buena: CS231n: redes neuronales convolucionales para el reconocimiento visual.
En la superficie, el algoritmo de softmax parece ser una simple normalización no lineal (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 ):
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.
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 crudas. En este caso, la ecuación de softmax encuentra el MLE (estimación de máxima verosimilitud)
En resumen, aunque la ecuación de softmax parece que podría ser arbitraria, NO lo es. En realidad, es una forma bastante principista de normalizar las clasificaciones para minimizar la probabilidad de entropía cruzada / negativa entre las predicciones y la verdad.
He tenido esta pregunta por meses. Parece que hemos adivinado astutamente 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 todas las salidas dividiendo 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 breve explicación
El exp en la función softmax anula 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á mal, 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). Debido a que la probabilidad de que todo el conjunto de datos de capacitación sea producto de las probabilidades de cada muestra, es más fácil maximizar la logaritmo-verosimilitud del conjunto de datos y, por lo tanto, la suma de la logaritmo-verosimilitud de cada muestra indexada por k:
Ahora, solo nos enfocamos en el softmax aquí con z ya dado, entonces podemos reemplazar
siendo yo la clase correcta de la muestra k. Ahora, vemos que cuando tomamos el logaritmo del softmax, para calcular la probabilidad de registro 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:
- Si el modelo es correcto, entonces max (z) será z_i. Por lo tanto, la verosimilitud logarítmica asintota con cero con una diferencia creciente entre z_i y las otras entradas en z.
- Si el modelo es incorrecto, entonces max (z) será otro z_j> z_i. Entonces, la adición de z_i no cancela por completo -z_j y la pérdida es aproximadamente - (z_j - z_i).
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 rápidamente. Tenga en cuenta que este no es el caso para el error cuadrado medio, por ejemplo.
Larga explicación
Si el softmax todavía le parece una opció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 clase múltiple justificados análogamente.
Los valores de q_i representan log-likelihoods. Para recuperar los valores de probabilidad, necesita exponerlos.
Una razón por la que los algoritmos estadísticos a menudo usan funciones de pérdida de verosimilitud logarítmica es que son más numéricamente estables: un producto de probabilidades puede representarse como un número de coma flotante muy pequeño. Usando una función de pérdida de verosimilitud logarítmica, un producto de probabilidades se convierte en una suma.
Otra razón es que las probabilidades logarítmicas ocurren de forma natural al derivar estimadores de variables aleatorias que se supone que provienen de distribuciones gaussianas multivariantes. Ver, por ejemplo, el estimador de máxima verosimilitud (ML) y la forma en que está conectado a mínimos cuadrados.
Como nota al margen, creo que esta pregunta es más apropiada para la Teoría de CS o los Intercambios de pila de Ciencias computacionales.
Supongamos que cambiamos la función softmax para que las activaciones de salida estén dadas por
donde c
es una constante positiva. Tenga en cuenta que c=1
corresponde a la función estándar de softmax. Pero si usamos un valor diferente de c
obtenemos una función diferente, que sin embargo es cualitativamente bastante similar a la de 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 que c
vuelva 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, debería quedarle claro por qué consideramos que la función c=1
es 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).