¿Función Softmax vs Sigmoid en clasificador logístico?

63

¿Qué decide la elección de la función (Softmax vs Sigmoid) en un clasificador logístico?

Supongamos que hay 4 clases de salida. Cada una de las funciones anteriores da las probabilidades de que cada clase sea la salida correcta. Entonces, ¿cuál tomar para un clasificador?

mach
fuente
16
La función softmax no es más que una generalización del sigmoide, por lo que no está del todo claro qué quiere decir con "softmax vs. sigmoide".
dsaxton
2
Es el caso del sigmoide. Cuando usamos el sigmoide, una clase tiene probabilidad exp(βTx)/(exp(βTx)+1) y la otra tiene probabilidad 1/(exp(βTx)+1) .
dsaxton
3
El póster de reddit está haciendo una distinción que creo que es incorrecta o al menos irrelevante. Si una de las clases tiene o no una ponderación, es solo cuestión de cambiar los puntajes, lo que no tiene ningún efecto en las probabilidades.
dsaxton
2
Posible duplicado de regresión logística binaria y multinomial
Franck Dernoncourt
3
"No está del todo claro lo que quieres decir con" softmax vs. sigmoide "". Justo debajo del título, está el cuerpo de la pregunta: lo sé, es muy fácil pasarlo por alto . Además, es un buen título para dirigir las consultas de Google para que vengan aquí y respondan exactamente lo que se preguntó.
michael

Respuestas:

77

La función sigmoidea se usa para la regresión logística de dos clases, mientras que la función softmax se usa para la regresión logística multiclase (también conocida como MaxEnt, regresión logística multinomial, regresión softmax, clasificador de entropía máxima).


En la regresión logística de dos clases, las probabilidades predichas son las siguientes, utilizando la función sigmoidea:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

En la regresión logística multiclase, con clases , las probabilidades predichas son las siguientes, utilizando la función softmax:K

Pr(Yi=k)=eβkXi 0cKeβcXi

Se puede observar que la función softmax es una extensión de la función sigmoidea al caso multiclase, como se explica a continuación. Veamos la regresión logística multiclase, con clases:K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

con . Vemos que obtenemos las mismas probabilidades que en la regresión logística de dos clases usando la función sigmoide. Wikipedia se expande un poco más sobre eso.β=(β0β1)

Franck Dernoncourt
fuente
1
Soy ingenuo en este caso, pero veo esto mucho tiempo β = - (β0 − β1) ¿Cuál podría ser la posible explicación? Hasta donde yo sé en Sigmoids β sería un vector. Y generalmente son uno para la carrera dada. Entonces, ¿cómo es que β0 y β1 aparecen en la imagen?
Ishan Bhatt
1
@IshanBhatt este comentario puede ayudar.
Tom Hale
curiosamente, todavía puedo regresar a multiclases usando solo
sigmoid
15

De hecho, son equivalentes, en el sentido de que uno puede transformarse en el otro.

Suponga que sus datos están representados por un vector , de dimensión arbitraria, y construyó un clasificador binario para ello, utilizando una transformación afín seguida de un softmax:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

Transformémoslo en un clasificador binario equivalente que use un sigmoide en lugar del softmax. En primer lugar, tenemos que decidir cuál es la probabilidad de que queremos que salga el sigmoide (que puede ser para la clase o ). Esta elección es absolutamente arbitraria, por lo que elijo la clase . Entonces, mi clasificador tendrá la forma:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Los clasificadores son equivalentes si las probabilidades son las mismas, por lo que debemos imponer:

σ(z)=softmax(z0)

Reemplazar , y por sus expresiones en términos de y y hacer algo sencillo manipulación algebraica, puede verificar que la igualdad anterior se mantenga si y solo si y están dados por:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.
RE...
fuente
@ null Ok, si preguntas eso, entonces no entendiste mi explicación. Permítame abordar su problema específico: si me dice que está alimentando sus datos a un sigmoide, entonces debe ser un número unidimensional, . Al alimentarlo a un sigmoide, obtienes la probabilidad de que esté en una de tus dos clases, por ejemplo : . Entonces, la probabilidad de que esté en es: . Ahora reemplacemos su sigmoide por un softmax. (Continuará). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...
(Continuación). Para aplicar un softmax a un problema de clasificación con dos clases, necesita que sus datos unidimensionales se transformen en un vector bidimensional. Por lo tanto, necesitamos definir nuestros y . Vamos a elegir . Como debe satisfacer , tenemos , entonces . Ahora, tenemos y . Con esto, puede verificar inmediatamente que . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...
Además, cualquier combinación de y que satisfaga (es decir, ) conduciría al mismo resultado exacto. Esto muestra que el softmax tiene un parámetro redundante. Aunque esto puede parecer estúpido, de hecho es una propiedad interesante, ya que permite la normalización de los parámetros , lo que promueve la estabilidad numérica del algoritmo de aprendizaje y la inferencia. Pero esto es solo un comentario adicional, no es importante responder a su pregunta :)w0w1w=w0w11=w1w0wi
D ...
Muchas gracias. Lo tengo. En su primer comentario, la probabilidad probablemente debería ser . Ahora entiendo cuál es la idea detrás de la transformación. P(C1|x)1σ(x)
nulo
Me alegro de que lo haya entendido;) Sí, es un error tipográfico, obviamente debería ser . ¡Gracias por mencionarlo! P(C1|x)=1σ(x)
D ...
8

He notado que las personas a menudo se dirigen a esta pregunta cuando buscan si usar sigmoid vs softmax en redes neuronales. Si usted es una de esas personas que construye un clasificador de red neuronal, a continuación se explica cómo aplicar sigmoid o softmax a los valores de salida sin formato de su red:

  • Si tiene un problema de clasificación de etiquetas múltiples = hay más de una "respuesta correcta" = las salidas NO son mutuamente excluyentes, entonces use una función sigmoide en cada salida sin procesar de forma independiente. El sigmoide te permitirá tener una alta probabilidad para todas tus clases, algunas o ninguna. Ejemplo: clasificación de enfermedades en una imagen de rayos X de tórax. La imagen puede contener neumonía, enfisema y / o cáncer, o ninguno de esos hallazgos.
  • Si tiene un problema de clasificación de clases múltiples = solo hay una "respuesta correcta" = las salidas son mutuamente excluyentes, entonces use una función softmax. El softmax exigirá que la suma de las probabilidades de sus clases de salida sea igual a una, por lo que para aumentar la probabilidad de una clase en particular, su modelo debe disminuir la probabilidad de al menos una de las otras clases. Ejemplo: clasificación de imágenes del conjunto de datos MNIST de dígitos escritos a mano. Una sola imagen de un dígito solo tiene una identidad verdadera: la imagen no puede ser un 7 y un 8 al mismo tiempo.

Referencia: para obtener una explicación más detallada de cuándo usar sigmoid vs. softmax en el diseño de redes neuronales, incluidos los ejemplos de cálculos, consulte este artículo: "Clasificación: Sigmoid vs. Softmax".

veritessa
fuente
-1

Además de todas las respuestas anteriores, me gustaría mencionar el hecho de que cualquier problema de clasificación de varias clases puede reducirse a múltiples problemas de clasificación binaria utilizando el método "uno contra todos", es decir, tener sigmoides C (cuando C es el número de clases) e interpretando cada sigmoide como la probabilidad de estar en esa clase específica o no, y tomando la probabilidad máxima.

Entonces, por ejemplo, en el ejemplo de dígitos MNIST, puede usar un softmax o diez sigmoides. De hecho, esto es lo que Andrew Ng hace en su curso Coursera ML. Puede consultar aquí cómo Andrew Ng usó 10 sigmoides para la clasificación multiclase (adaptado de Matlab a python por mí), y aquí está mi adaptación de softmax en python.

Además, vale la pena señalar que si bien las funciones son equivalentes (para el propósito de la clasificación multiclase) difieren un poco en su implementación (especialmente con respecto a sus derivados y cómo representar y).

Una gran ventaja de usar múltiples clasificaciones binarias (es decir, Sigmoides) sobre una sola clasificación multiclase (es decir, Softmax) es que si su softmax es demasiado grande (por ejemplo, si está utilizando una incrustación de una sola palabra de un tamaño de diccionario de 10K o más ) - puede ser ineficiente entrenarlo. En cambio, lo que puede hacer es tomar una pequeña parte de su conjunto de entrenamiento y usarlo para entrenar solo una pequeña parte de sus sigmoides. Esta es la idea principal detrás del muestreo negativo .

David Refaeli
fuente
Las funciones no son equivalentes porque la red softmax está obligada a producir una distribución de probabilidad sobre las clases como salidas: el vector no es negativo y suma 1. Las unidades sigmoideas no son negativas, pero pueden sumar cualquier número entre 0 y ; No es una distribución de probabilidad válida. Esta distinción es crucial para caracterizar cómo difieren las dos funciones. CC
Restablece a Monica el
¿Cuál es su definición de equivalente? El mío es: puedes usarlo para la clasificación multiclase sin ningún problema. Además, cualquier clasificación multiclase que use softmax puede transformarse en una clasificación binaria de uno contra todos que use sigmoides. ¿Por qué debería importarme la distribución de las salidas que suman 1?
David Refaeli
Su argumento sobre la clasificación de etiquetas múltiples muestra por qué sigmoide y softmax no son equivalentes. Cuando se usa softmax, aumentar la probabilidad de una clase disminuye la probabilidad total de todas las otras clases (debido a la suma a 1). Usando sigmoide, aumentar la probabilidad de una clase no cambia la probabilidad total de las otras clases. Esta observación es la razón por la cual el sigmoide es plausible para la clasificación de etiquetas múltiples: un solo ejemplo puede pertenecer a clasesSum-to-1 también es la razón por la que softmax no es adecuado para la clasificación de etiquetas múltiples. 0,1,2,,C
Restablece a Monica el
Te perdí. Para todos los propósitos prácticos que conozco, múltiples sigmoides = 1 softmax. Incluso agregué el caso del muestreo negativo, donde múltiples sigmoides tienen una ventaja sobre un softmax.
David Refaeli