Softmax (más de dos clases)
En simple: lee esto primero
Softmax = la versión de la logística para más de dos opciones: reparte el 100 % de probabilidad entre todas las clases.
Como una encuesta: cada candidato recibe un «puntaje de popularidad», y softmax los convierte en porcentajes que suman 100 %.
- Cada clase tiene su propio puntaje; el más alto se lleva la mayor probabilidad.
- Con solo dos clases, softmax es exactamente la sigmoide.
- logit / score
- el puntaje crudo de cada clase antes de convertirlo en probabilidad.
- one-hot
- escribir la clase correcta como [0, 1, 0]: un 1 en su lugar y 0 en el resto.
Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.
Un score por clase
Sección titulada «Un score por clase»Para clases, cada una tiene sus propios pesos y score lineal . La softmax los convierte en probabilidades positivas que suman 1:
Cada frontera entre un par de clases sigue siendo una recta (donde ): el plano queda partido en regiones convexas.
- Pérdida: cross-entropy con la etiqueta en one-hot ( solo para la clase verdadera): .
- Gradiente: : otra vez la forma «residual» .
Softmax: un score por clase
Cada clase tiene su propio score lineal . La softmax los exponencia y normaliza para que sumen 1. Cambia los logits y la temperatura.
Regiones de softmax: arrastra los vectores de pesos
Cada clase tiene su vector wₖ (la flecha). El score es zₖ = wₖᵀx: gana la clase cuya flecha apunta más «hacia» x. La intensidad del color es la confianza (max pₖ). Haz clic en el plano para consultar un punto.
La sigmoide es softmax con K = 2
Sección titulada «La sigmoide es softmax con K = 2»Con dos clases: . Solo importa la diferencia de scores (sumar una constante a todos no cambia nada), así que la logística binaria con es el caso particular. Un score por clase, softmax, cross-entropy: todo se traslada.
Ejercicio
Sección titulada «Ejercicio»Logits , clase verdadera = la primera. Calcula , la pérdida y el gradiente.
Ver solución
, suma . .
. Gradiente : sube el logit correcto y baja los demás, en proporción a cuánta probabilidad les dio el modelo.
Autoevaluación
0/3 correctas · 0 respondidasEn código
Sección titulada «En código»from sklearn.datasets import load_digitsfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.preprocessing import StandardScalerfrom sklearn.pipeline import make_pipelinefrom sklearn.metrics import confusion_matrix
X, y = load_digits(return_X_y=True) # 1797 imágenes, 64 píxelesX_tr, X_te, y_tr, y_te = train_test_split(X, y, stratify=y, random_state=0)clf = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000)) # multinomialclf.fit(X_tr, y_tr)print(clf.score(X_te, y_te)) # ≈ 0.96P = clf.predict_proba(X_te[:1]) # 10 probabilidades que suman 1W = clf[-1].coef_.reshape(10, 8, 8) # cada fila = «plantilla» 8×8Para profundizar
Sección titulada «Para profundizar»Fuente ·ML_Course_Logistic_Regression_and_Classification.pdf (slide 37) · ML_Course/session-04d-softmax-multiclass.ipynb