Softmax tiene dos significados posibles. El significado original explica de dónde viene el nombre. La definición de softmax utilizada en el aprendizaje automático está estrechamente relacionada con el original.
Significado original
[math] \ text {max} (x_1, …, x_n) [/ math] es una función de [math] \ mathbb {R} ^ n \ to \ mathbb {R} [/ math]
- ¿Qué especificaciones de computadora se recomiendan para entrenar redes neuronales?
- ¿Qué recursos debo usar para comenzar a aprender Machine Learning durante el verano con mi educación actual?
- ¿Qué implementaciones de la capa convolucional utiliza la biblioteca CuDNN para optimizar el rendimiento de la velocidad? Por ejemplo, ¿cambia entre implementaciones dependiendo del tamaño del filtro?
- ¿Cuál es la mejor manera de hacer reconocimiento / clasificación de múltiples objetos en tiempo real usando OpenCV y GPU (CUDA)?
- ¿Qué se sabe sobre la eficiencia de la agrupación espectral en caso de que los datos no estén completamente conectados?
Sin embargo, max no es diferenciable. Por lo tanto, en muchas aplicaciones se usa la función
[matemáticas] \ text {softmax} (x_1,…, x_n) = \ log \ left (\ sum_ {i = 1} ^ ne ^ {x_i} \ right) [/ math]
como una aproximación suave para softmax.
A continuación puede ver la gráfica de [matemáticas] y = \ max (x, 5) [/ matemáticas] versus [matemáticas] y = \ text {softmax} (x, 5) [/ matemáticas]
Tenga en cuenta que también puede reescalar el softmax para aproximar mejor la función. Para [matemáticas] k> 0 [/ matemáticas], defina
[matemáticas] k- \ text {softmax} (x_1,…, x_n) = \ frac {1} {k} \ log \ left (\ sum_ {i = 1} ^ ne ^ {k x_i} \ right) [/ mates]
Luego, a medida que [math] k [/ math] aumenta, obtiene una mejor aproximación de softmax: sin embargo, esto tiene un costo de aumentar la rugosidad (tamaño de las derivadas) de la función.
Aquí amplío el centro de la figura anterior mientras le muestro k-softmax para k = 1 a 10.
Significado del aprendizaje automático
El aprendizaje automático de softmax se utiliza para la clasificación.
Supongamos que tienes n clases. Para cualquier característica dada x , desea estimar sus probabilidades [matemáticas] p_i [/ matemáticas] de estar en la clase i .
Sin embargo, su algoritmo no produce probabilidades directamente. En su lugar, primero produce puntajes de valor real [matemática] y_1,…, y_n [/ matemática].
A partir de estos puntajes, usted define las probabilidades [matemáticas] p_i [/ matemáticas] usando la función softmax.
[matemáticas] (p_1, …, p_n) = \ text {softmax} (y_1, …, y_n) = \ left (\ frac {e ^ {y_1}} {\ sum_ {j = 1} ^ ne ^ {y_j} },…, \ Frac {e ^ {y_n}} {\ sum_ {j = 1} ^ ne ^ {y_j}} \ right) [/ math]
¿Por qué configurar su clasificador de esta manera? Debido a que un vector de probabilidad [matemática] (p_1, …, p_n) [/ matemática] vive en un espacio muy restringido (no negativo, sumas a 1), y es difícil trabajar con funciones que se asignan desde el espacio de características a este espacio restringido. En particular, la restricción de suma a uno significa que no puede entrenar a los alumnos para cada clase por separado. En su lugar, trabaja con funciones que se asignan al espacio no restringido de puntajes [matemática] (y_1,…, y_n) [/ matemática], y luego asigna esas puntuaciones al espacio de vectores de probabilidad en el último paso. Esto le permite dividir el problema en subproblemas [matemática] n [/ matemática] de predicción [matemática] y_1,…, y_n [/ matemática], y también es una generalización de la regresión logística.
¿Cuál es la relación con la definición anterior de softmax? Resulta ser el gradiente de la definición original.