3 votos

Desbordamiento del producto interior grande de regresión Softmax

En la regresión softmax, la probabilidad $P$ que un elemento forma parte de la clase $l$ viene dada por $$P(y^{(i)}=l | x^{(i)};\theta)=\frac{e^{\theta^Tx^{(i)}}}{\sum_{j=1}^k e^{\theta^Tx^{(j)}}}$$

He implementado la regresión softmax, pero parece que tengo problemas cuando el producto interno $\theta^Tx^{(i)}$ es grande (digamos, mayor que 30-50,) en cuyo caso incluso un flotador de 64 bits se desborda. ¿Cuál es el procedimiento recomendado para evitar este problema? He pensado en normalizar el vector de entrada $x^{(i)}$ tal que $x^{(i)\prime}=\frac{x^{(i)}}{|x^{(i)}|}$ pero eso podría hacer que la predicción fuera menos dinámica.

1voto

Gajendra Puntos 321

Se puede restar una constante al $\theta^T x^{(i)}$ antes de tomar el exponente. Creo que el máximo, por ejemplo, se utiliza comúnmente.

1voto

Quentin Puntos 166

Utiliza los logaritmos. Por ejemplo, en lugar de calcular $a/b$ , intente $exp(log(a) - log(b))$

1voto

Franck Dernoncourt Puntos 2128

La forma típica de evitar que se produzcan desbordamientos al calcular las probabilidades para la regresión softmax es la siguiente:

  • Paso 1: considerar el logaritmo de las probabilidades. Es decir, $$\log \left(P(y^{(i)}=k | x^{(i)};\theta)\right)=\frac{\log \left(e^{\theta_k^Tx^{(i)}}\right)}{\log \left(\sum_{c=1}^K e^{\theta_c^Tx^{(i)}}\right)}$$

  • Paso 2: si te interesa predecir la clase, sólo tienes que calcular el numerador, así que estás listo. Si te interesa predecir las probabilidades, también tienes que calcular el denominador, en cuyo caso tienes que utilizar el truco log-sum-exp .

Ejemplo de cómo funciona el truco log-sum-exp en Naive Bayes explica estos dos pasos con más detalle. Sólo hay que sustituir los desbordamientos por los desbordamientos, y fingir $p(\mathbf{x}|Y=C_k)p(Y=C_k) = e^{\theta_c^Tx^{(i)}}$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X