¿Por qué la función de activación de softmax se llama “softmax”?

Supongo que su contexto es las redes neuronales. La función de activación Softmax y la función Softmax son dos cosas diferentes. Para entender el origen del nombre Softmax necesitamos entender la función Softmax .

¿Cómo se ve la función Softmax?

Suponga que tiene valores de [math] x_1, x_2, \ ldots, x_k [/ math]. La función Softmax para estos valores sería:

[matemáticas] \ ln {\ sum_ {i = 1} ^ ke ^ {x_i}} [/ matemáticas]

¿Qué está haciendo la función Softmax?

Se está aproximando a la función max . ¿Puedes ver por qué? Llamemos al valor más grande [math] x_i [/ ​​math] [math] x_ {max}. [/ Math] Ahora, estamos tomando exponencial por lo que [math] e ^ {x_ {max}} [/ math] será mucho más grande que cualquier [matemática] e ^ {x_i} [/ matemática].

[matemáticas] \ ln {\ sum_ {i = 0} ^ ke ^ {x_i}} \ aprox \ ln e ^ {x_ {max}} [/ matemáticas]

[matemáticas] \ ln {\ sum_ {i = 0} ^ ke ^ {x_i}} \ aprox x_ {max} [/ matemáticas]

Mire la gráfica a continuación para una comparación entre max (0, x) (rojo) y softmax (0, x) (azul).

¿Por qué se llama Softmax?

  • Es una aproximación de Max.
  • Es una aproximación suave / lisa de máx. Observe cómo se aproxima a la esquina afilada en 0 usando una curva suave.

¿Cuál es el propósito de Softmax?

Softmax nos da la aproximación diferenciable de una función no diferenciable max. ¿Por qué es eso importante? Para optimizar modelos, incluidos los modelos de aprendizaje automático, se requiere que las funciones que describen el modelo sean diferenciables. Entonces, si queremos optimizar un modelo que usa la función max, entonces podemos hacerlo reemplazando max con softmax .

Pero, ¿qué pasa con el nombre de la función de activación Softmax?

La función de activación de Softmax tiene la palabra “Softmax” tal vez debido a las siguientes observaciones:

  • La función de activación de Softmax es muy similar a la función de Softmax. Observe el denominador. [matemáticas] f (x_i) = \ frac {e ^ {x_i}} {\ sum_ {i = 0} ^ ke ^ {x_i}} [/ matemáticas]
  • La función de activación Softmax resalta la entrada más grande y suprime todas las significativamente más pequeñas. De esta manera, se comporta de manera similar a la función softmax.

En algunos deportes, puedes jugar con una gorra dura o una gorra blanda. Una tapa dura sería algo así, primero a 15 puntos victorias. Un límite suave puede ser algo así, primero gana 15 puntos, pero tienes que ganar por dos. La tapa blanda se aplica de manera más indulgente que la tapa dura.

La relación entre soft max y hard max es la misma. Hard max encuentra el mayor número de un grupo de ellos. El cálculo para softmax generalmente encuentra algo cercano al máximo, debido a la convexidad de [math] e ^ x [/ math], pero no encontrará el número más grande real, por lo que es una forma más indulgente de máximo.

Softmax es un mal nombre. Un nombre mucho mejor sería “soft arg max”.

Una función “dura” es aquella que no es completamente diferenciable. Una función suave es completamente diferenciable en todas partes.

Por ejemplo, la unidad lineal rectificada (ReLU) calcula [math] y = max (0, x) [/ math]. La función softplus puede considerarse una versión suavizada de ReLU:

De manera similar, la función argmax toma un vector como entrada y devuelve un vector caliente del valor máximo:

[matemáticas] \ arg \ max ([3, 5, 0]) = [0, 1, 0] [/ matemáticas]

La función softmax (softargmax) es una versión suavizada de esta función:

[matemática] \ text {soft} \ arg \ max ([3, 5, 0]) \ aprox [0.12, 0.88, 0] [/ math]

La función softmax es diferenciable en todas partes, además de tener buenas propiedades. Por ejemplo, todas las salidas están limitadas entre 0 y 1, y todas las salidas suman 1.

“Hardmax” sería una función de normalización / sigmoidea / activación de la forma:

y (i) = (x (i) -min (x)) / (max (x) -min (x))

es decir, forzar el mínimo de los datos a 0, el máximo a 1 y escalar todo linealmente en el medio. Softmax aproxima esto, pero no es tan sensible a los grandes valores atípicos que podrían aplastar el rango normal de datos.

Aquí hay una demostración que reuní para mostrar esto en Google Docs:

Demo de Softmax – Hojas de cálculo de Google

La primera columna es todos los valores aleatorios entre 0 y 1; intente reemplazar una o más de ellas por constantes más grandes (2, 10) y vea cómo se comparan softmax y hardmax.

Por suave queremos decir suave, y por suave queremos decir diferenciable .

Si mueve uno de los números en la lista de argumentos ([math] x_k = x_k + \ epsilon [/ math]), la salida softmax de todos los demás números se verá afectada. Este cambio es continuo con la cantidad de jiggle [math] \ epsilon [/ math]. Por lo tanto, la derivada de cualquier argumento de la función softmax con respecto a cualquier otro argumento no será cero. De ahí el prefijo soft.

PD. Ruego diferir con la respuesta de Ross Kravitz. Softmax conserva el orden de los números en la lista. Encontrará el elemento máximo en la lista original de números tal como lo hace hardmax .

¡Encontré una buena respuesta aquí! ¿Por qué se llama así a la función softmax?

Esencialmente se llama así para diferenciarse de un ‘hardmax’ que solo toma el máximo de manera irreversible

Idealmente, hay una asignación de clase, pero softmax proporciona el componente de cada clase del ejemplo de prueba (como la probabilidad de que el ejemplo esté en cada clase).
PD: No he leído esto en ninguna parte, pero creo que el nombre lo dice.

More Interesting

Cómo optimizar una red neuronal convolucional para hacer una clasificación de imágenes

¿Cómo escapa / resiste una red neuronal profunda a la maldición de la dimensionalidad?

Cómo detectar objetos superpuestos casi circulares en MATLAB

¿Cuáles son algunos buenos métodos para el procesamiento previo de datos en el aprendizaje automático?

¿Los algoritmos subyacentes permiten a Shazam identificar una canción y Amazon Flow para identificar una imagen básicamente igual?

¿Cómo podría usarse el aprendizaje automático para ayudar a las personas enfermas en los países del tercer mundo?

¿La red neuronal convolucional es básicamente un procesamiento previo de datos a través del núcleo más las redes neuronales? ¿Acaso Deep Learning no es solo redes neuronales con preprocesamiento para las selecciones de funciones automatizadas?

¿Hay orden entre las características de las incrustaciones de palabras?

¿Por qué la pérdida logística es una mejor métrica para la clasificación probabilística que RMSD?

¿Cuáles son los mejores métodos para el reconocimiento robusto de caracteres en MATLAB u OPENCV?

¿Hay alguna API o aplicaciones web como Watson?

¿Cómo evaluaría un sistema de recomendación si todo lo que tiene son calificaciones de elementos de usuario?

¿Quiénes son algunos investigadores notables del aprendizaje automático?

¿Las implementaciones físicas de las redes neuronales son claramente preferibles a las GPU?

¿Por qué es importante aprender el descenso de gradiente en el aprendizaje automático?