¿Por qué el entrenamiento con la unidad softmax en redes neuronales es manejable si la función de partición es intratable?

La función de partición es difícil de calcular solo cuando necesita sumar las probabilidades (no normalizadas) sobre un conjunto muy grande de estados.

Si tiene una sola variable aleatoria con un puñado de estados, puede ser muy barata. Para el caso de la clasificación sobre el conjunto de datos de ImageNet, está prediciendo para una sola variable aleatoria (es decir, “Clase de imagen”) con solo 1000 posibilidades. Por lo tanto, el denominador para la pérdida de softmax es simplemente una suma sobre las probabilidades para estas 1000 clases. ¡Sumar un vector con 1000 números no es caro en absoluto! [Actualizado: para ser precisos, está haciendo e ^ (probabilidad) para 1000 flotadores que es la parte más cara en comparación con el cálculo de la suma.]

Ahora, si, sin embargo, tenía dos variables aleatorias, cada una con 1000 estados posibles que deseaba predecir conjuntamente, inmediatamente obtiene un espacio de estado con 1000 x 1000 posibilidades. Sumar un vector con 1,000,000 de números es ciertamente bastante costoso (y en realidad lleva e al poder de esas 1,000,000 de probabilidades).

Agregue una variable más con 1000 estados; y tienes 1000 x 1000 x 1000 puntos en tu espacio de estado. Ahora sumando un vector de 1,000,000,000 de números; y en el caso de redes neuronales + softmax, hacerlo varias veces para cada ejemplo de entrenamiento se vuelve intratable.

Es por eso que no usamos softmax para problemas de clasificación a gran escala, por ejemplo, reconocimiento de caras, ¡cuando su conjunto de datos contiene todas las caras de un país! Y es por eso que esos problemas tienen sus talleres separados:

Taller de Clasificación Extrema 2015