39 votos

¿Cómo determinar la confianza de una predicción de una red neuronal?

Para ilustrar mi pregunta, supongamos que tengo un conjunto de entrenamiento en el que la entrada tiene un grado de ruido pero la salida no, por ejemplo;

# Training data
[1.02, 1.95, 2.01, 3.06] : [1.0]
[2.03, 4.11, 5.92, 8.00] : [2.0]
[10.01, 11.02, 11.96, 12.04] : [1.0]
[2.99, 6.06, 9.01, 12.10] : [3.0]

aquí la salida es el gradiente de la matriz de entrada si fuera sin ruido (no el gradiente real).

Después de entrenar la red, la salida debería ser algo así para una entrada dada.

# Expected Output
[1.01, 1.96, 2.00, 3.06] : 95% confidence interval of [0.97, 1.03]
[2.03, 4.11, 3.89, 3.51] : 95% confidence interval of [2.30, 4.12]

Mi pregunta es cómo se puede crear una red neuronal que devuelva un valor predicho y una medida de confianza, como una varianza o un intervalo de confianza.

35voto

icelava Puntos 548

Parece que está buscando un intervalo de predicción es decir, un intervalo que contiene un porcentaje preestablecido de realizaciones futuras. (Mira las wikis de etiquetas para intervalo de predicción y intervalo de confianza por la diferencia).

Lo mejor es trabajar directamente con arquitecturas NN que no emitan predicciones de un solo punto, sino de todo el distribuciones predictivas . A continuación, se pueden extraer directamente los intervalos de predicción deseados (o las predicciones de la media, o del punto medio) de estas distribuciones. Yo y otros han argumentado que las distribuciones predictivas son mucho más útiles que las predicciones puntuales pero, para ser sincero, todavía no he visto muchos trabajos sobre distribuciones predictivas con redes neuronales, aunque he estado atento. Este documento parece que podría ser útil. Quizá quieras buscar un poco, quizás también utilizando otras palabras clave como "distribuciones de previsión" o "densidades de predicción" y cosas así.

Dicho esto, es posible que desee buscar en Michael Feindt's El algoritmo NeuroBayes, que utiliza un enfoque bayesiano para predecir las densidades de predicción.

10voto

Don Hunt Puntos 11

No estoy seguro de que se pueda calcular un intervalo de confianza para una sola predicción, pero sí se puede calcular un intervalo de confianza para la tasa de error de todo el conjunto de datos (se puede generalizar para la precisión y cualquier otra medida que se esté evaluando).

Si $e$ es su tasa de error al clasificar unos datos $S$ de tamaño $n$ un intervalo de confianza del 95% para su tasa de error viene dado por: $$ e \pm 1.96\sqrt{\frac{e\,(1-e)}{n}}$$ .

(véase el libro "Machine Learning" de Tom Mitchell, capítulo 5.)

EDITAR

Supongo que debería exponer un caso más general, que es: $$ e \pm z_N\sqrt{\frac{e\,(1-e)}{n}},$$ donde las opciones comunes para $z_N$ se enumeran en la siguiente tabla:

confidence level    80%    90%    95%    98%    99%
values of zN       1.28   1.64   1.96   2.33   2.58

10voto

SteveD Puntos 3805

En cuanto a la salida directa de los intervalos de predicción, hay un documento de 2011 ' Revisión exhaustiva de los intervalos de predicción basados en redes neuronales '

Comparan cuatro enfoques:

1: Método Delta 2: Método bayesiano 3: Estimación de la varianza media 4: Bootstrap

Los mismos autores continuaron desarrollando Método de estimación del límite superior inferior para la construcción de intervalos de predicción basados en redes neuronales que da salida directamente a un límite inferior y superior de la NN. Por desgracia, no funciona con backprop, pero un trabajo reciente lo ha hecho posible, Intervalos de predicción de alta calidad para el aprendizaje profundo .

Como alternativa a la emisión directa de intervalos de predicción, las redes neuronales bayesianas (BNN) modelan la incertidumbre en los parámetros de una NN y, por tanto, capturan la incertidumbre en la salida. Esto es difícil de hacer, pero los métodos populares incluyen la ejecución de Abandono de MC en el momento de la predicción, o ensamblaje .

6voto

chilicuil Puntos 93

No conozco ningún método para hacerlo de forma exacta.

Una solución podría ser suponer que hay ruido gaussiano y hacer que la red neuronal prediga una media $\mu$ y la varianza $\sigma$ . Para la función de coste se puede utilizar el NLPD ( densidad de probabilidad logarítmica negativa ). Para el punto de datos $(x_i,y_i)$ que será $-\log N(y_i-\mu(x_i),\sigma(x_i))$ . Esto hará que su $\mu(x_i)$ intentar predecir su $y_i$ y su $\sigma(x_i)$ ser más pequeño cuando se tiene más confianza y más grande cuando se tiene menos.

Para comprobar la calidad de los datos de validación, puede consultar $\frac{y_i-\mu(x_i)}{\sigma(x_i)}$ para ver si siguen aproximadamente una $N(0,1)$ . En los datos de prueba, de nuevo querrá maximizar la probabilidad de sus datos de prueba, por lo que puede utilizar de nuevo la métrica NLPD.

5voto

Matthew Puntos 1495

En realidad, hay formas de hacer esto utilizando el abandono. Ejecuta la evaluación con el dropout activado (normalmente está desactivado para la evaluación pero activado para el entrenamiento), y ejecuta la evaluación varias veces.

La distribución de resultados de varias ejecuciones diferentes puede utilizarse como intervalos de confianza.

Ver el documento " El abandono como aproximación bayesiana: Representación de la incertidumbre del modelo en el aprendizaje profundo " Vea la presentación en youtube Andrew Rowan - Aprendizaje profundo bayesiano con Edward (y un truco con Dropout)

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