Imagine que tiene una red neuronal (NN) que tiene 1000 salidas (ImageNet). Podemos pensar en una función de activación de arg max dura en la salida como haciendo lo siguiente:
- La entrada se propaga hacia adelante.
- Los nodos de salida se activan para calcular [math] o = [o_1, o_2, …, o_ {n}] ^ {T} [/ math], que es un vector lineal n de salida dimensional. En este caso [matemáticas] n = 1000 [/ matemáticas].
- Evalúe [math] i_ {max} = [/ math] arg max [math] (o) [/ math]. Donde [math] i_ {max} = [/ math] índice de nodo de salida con el valor de salida máximo.
- El índice, [math] i_ {max} [/ math], también es la etiqueta predicha de salida final del NN. La etiqueta predicha de la entrada es, por lo tanto, el índice del nodo de salida de activación máxima.
¿Puedes identificar algunos problemas importantes con este enfoque?
Bien, enumeremos los principales problemas:
- ¿Qué tan pronto la inteligencia artificial deletreará el destino de la raza humana?
- ¿Cómo funcionan los programas de IA que aprenden a jugar solos?
- ¿Por qué API AI no es de código abierto?
- ¿Es aconsejable dejar que AI juegue videojuegos orientados al combate?
- ¿Qué herramienta de IA para Windows 10 puedo usar?
- El enfoque arg max no es diferenciable.
- Los componentes del vector de salida son ilimitados. Durante el aprendizaje, sin la operación de aplastamiento, los grandes valores de salida para puntos de datos más alejados del límite de decisión, pero no en el lado equivocado del límite, serán fuertemente penalizados y no queremos eso. También necesitamos valores de salida aplastados para reducir la sensibilidad a los valores atípicos.
- Los resultados no son probabilidades. Es difícil establecer valores de salida ilimitados. Entonces, a menos que tengamos probabilidades, podemos tomar mejores decisiones. Por ejemplo, podríamos establecer el umbral en 90% para las probabilidades de salida, pero no podemos establecer un umbral para las entradas con valores ilimitados. También es más conveniente trabajar con probabilidades.
La operación softmax lo soluciona implementando un soft arg max:
[matemáticas] s_ {j} (o) = \ frac {e ^ {o_ {j}}} {\ sum_ {i} ^ {n} e ^ {o_ {i}}} [/ matemáticas]
La razón por la que softmax es en realidad un soft arg max es que en realidad no devuelve el valor máximo sino el vector de salida aplastado:
[matemáticas] s = [s_ {1}, s_ {2}, …, s_ {n}] ^ {T} [/ matemáticas]
Que tiene un valor cercano a 1 en el índice [math] i_ {max} [/ math] y valores casi cero en cualquier otro lugar. Por lo tanto, la salida es como un vector codificado en caliente que proporciona un valor cercano a uno para la entrada máxima y un valor cercano a cero para el resto de las entradas.
Por lo tanto, la función softmax implementa esencialmente una función soft arg max.
Y tiene varios beneficios para la operación hard arg max:
- Es diferenciable Lo que significa más fácil de usar en optimizadores basados en descenso de gradiente.
- Las salidas se comprimen entre 0 y 1, lo que facilita la aplicación de un umbral. Los puntos de datos más alejados del límite de decisión, pero no en el lado equivocado del límite, ya no pueden ser penalizados.
- Las salidas son acotadas e interpretables como probabilidades relativas. Por lo tanto, un rendimiento de una confianza del 85% puede ser aceptable como lo suficientemente bueno porque es una probabilidad. El softmax hace que las salidas compitan, por lo que si hay dos salidas igualmente fuertes, entonces las probabilidades serán 50-50. Si una salida permanece constante pero la otra se reduce, la probabilidad de que la salida permanezca constante aumentará. Por lo tanto, el softmax es sensible a los valores relativos de las salidas y no a sus valores reales.
Por lo tanto, es importante utilizar el softmax sobre el hard arg max para fines de optimización y el hecho de que la salida softmax es una distribución de probabilidad.
El softmax es, por lo tanto, una versión relajada de la operación arg max porque no realiza por completo una tarea difícil del ganador, lo hace suavemente de una manera bastante continua y diferenciable.
Espero que esto ayude.