26 votos

El valor esperado de la aplicación de la función sigmoidea a una distribución normal

Versión corta:

Quiero calcular el valor esperado si se aplica la función sigmoidea $\frac{1}{1+e^{-x}}$ a una distribución normal con valor esperado $\mu$ y la desviación estándar $\sigma$.

Si no me equivoco esto se corresponde con la siguiente integral:

$$\int_{-\infty}^\infty \frac{1}{1+e^{-x}} \frac{1}{\sigma\sqrt{2\pi}}\ e^{ -\frac{(x-\mu)^2}{2\sigma^2} } dx$$

Sin embargo, yo no puedo resolver esta integral. He intentado manualmente, con Arce y con Wolfram|Alpha, pero no llegar a ninguna parte.

Un poco de información (¿por qué quiero hacer esto):

Funciones sigmoides se utilizan en redes neuronales artificiales como una función de activación, la asignación de un valor de $(-\infty,\infty)$$(0,1)$. A menudo, este valor se utiliza directamente en los cálculos posteriores, pero a veces (por ejemplo, en la gestión por resultados, la) es el primer estocásticamente redondeado a un 0 o un 1, con el probabililty de un 1 siendo que el valor. La estocasticidad ayuda al aprendizaje, pero a veces no deseada cuando finalmente el uso de la red. Sólo el uso de las normales no los métodos estocásticos en una red que usted capacitado estocásticamente no funciona bien. Cambia el resultado esperado, debido a que (en breve):

$$\operatorname{E}[S(X)] \neq S(\operatorname{E}[X])$$

para la mayoría de X. sin Embargo, si usted aproximado de X como una distribución normal, y de alguna manera podría calcular este valor esperado, puede eliminar la mayoría de los sesgos. Eso es lo que estoy tratando de hacer.

18voto

korkinof Puntos 21

Aparte de la MacLaurin aproximación, la forma habitual de calcular la integral en las Estadísticas es aproximar el sigmoides con una función de beneficios. Más específicamente $\mathrm{sigm}(a) \approx \Phi(\lambda a)$$\lambda=\pi/8$. Entonces, el resultado sería: $$\int \mathrm{sigm}(x) \, N(x \mid \mu\sigma^2) \, dx \approx \int \Phi(\lambda x) \, N(x \mid \mu\sigma^2) \, dx = \Phi\left(\frac{x}{\sqrt{\lambda^{-2} + \sigma^2}}\right).$$

7voto

Matthew Scouten Puntos 2518

Dudo de que hay una forma cerrada de la solución. Sin embargo, he aquí una serie en potencias de $\sigma$:

$$ \left( {{\rm e}^{-{\mu}}}+1 \right) ^{-1}+{\frac { \left( { {\rm e}^{-{\mu}}}-1 \right) {{\rm e}^{-{\mu}}}}{2\, \left( {{\rm e} ^{-{\mu}}}+1 \right) ^{3}}}{{\sigma}}^{2}+{\frac { \left( { {\rm e}^{-3\,{\mu}}}-11\,{{\rm e}^{-2\,{\mu}}}+11\,{{\rm e}^{-{ \mu}}}-1 \right) {{\rm e}^{-{\mu}}}}{8\, \left( {{\rm e}^{-{\mu} }}+1 \right) ^{5}}}{{\sigma}}^{4}+{\frac {{{\rm e}^{-{\mu} }} \left( {{\rm e}^{-5\,{\mu}}}-57\,{{\rm e}^{-4\,{\mu}}}+302\,{ {\rm e}^{-3\,{\mu}}}-302\,{{\rm e}^{-2\,{\mu}}}+57\,{{\rm e}^{-{ \mu}}}-1 \right) }{48\, \left( {{\rm e}^{-{\mu}}}+1 \right) ^{7}}}{{ \sigma}}^{6}+{\frac {{{\rm e}^{-{\mu}}} \left( {{\rm e}^{-7\,{\mu}}}-247\,{{\rm e}^{-6\,{\mu}}}+4293\,{ {\rm e}^{-5\,{\mu}}}-15619\,{{\rm e}^{-4\,{\mu}}}+15619\,{ {\rm e}^{-3\,{\mu}}}-4293\,{{\rm e}^{-2\,{\mu}}}+247\,{{\rm e}^{ -{\mu}}}-1 \right) }{384\, \left( {{\rm e}^{-{\mu}}}+1 \right) ^{9}}} {{\sigma}}^{8}+O \left( {{\sigma}}^{10} \right) $$

EDIT: Para obtener esto, en primer lugar hacer el cambio de variables $x = \mu + \sigma t$. El integral se convierte en $$ \frac{1}{\sqrt{2\pi}} \int_{-\infty}^\infty \dfrac{e^{-t^2/2}}{1 + e^{-\mu - \sigma t}}\ dt $$ Ahora toma la serie de Maclaurin $$\frac{1}{1+e^{-\mu - \sigma t}} = \frac{1}{1+e^{-\mu}} + \frac{e^{-\mu} \sigma t}{(1+e^{-\mu})^2} + \frac{e^{-\mu} ( e^{-\mu} - 1) \sigma^2 t^2}{(1+e^{-\mu})^3} + \ldots$$ e integrar término a término.

0voto

Peter Puntos 101

Aquí está una función de python la aplicación de la aproximación. Requiere numpy y scipy. Yo creo que es correcto, pero por favor, señalar los errores. He encontrado el probit aproximación a estar mejor, aunque yo no comparar correctamente en el espacio de medios/desviaciones.

def expected_sigm_of_norm(mean, std, method = 'probit'):
    """
    Approximate the expected value of the sigmoid of a normal distribution.

    Thanks go to this guy:
    http://math.stackexchange.com/questions/207861/expected-value-of-applying-the-sigmoid-function-to-a-normal-distribution

    :param mean: Mean of the normal distribution
    :param std: Standard Deviation of the normal distribution
    :return: An approximation to Expectation(sigm(N(mu, sigma**2)))
    """
    if method == 'maclauren-2':
        eu = np.exp(-mean)
        approx_exp = 1/(eu+1) + 0.5*(eu-1)*eu/((eu+1)**3) * std**2
        return np.minimum(np.maximum(approx_exp, 0), 1)
    elif method == 'maclauren-3':
        eu = np.exp(-mean)
        approx_exp = 1/(eu+1) + \
            0.5*(eu-1)*eu/((eu+1)**3) * std**2 + \
            (eu**3-11*eu**2+57*eu-1)/((8*(eu+1))**5) * std**4
        return np.minimum(np.maximum(approx_exp, 0), 1)
    elif method == 'probit':
        return norm.cdf(mean/np.sqrt(2.892 + std**2))
    else:
        raise Exception('Method "%s" not known' % method)

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