simple redes programacion neuronales multicapa estadistica ejemplos artificial-intelligence neural-network

artificial-intelligence - multicapa - redes neuronales programacion



¿Cuál es la diferencia entre el tren, la validación y el conjunto de prueba en redes neuronales? (4)

Estoy usando esta biblioteca para implementar un agente de aprendizaje.

He generado los casos de capacitación, pero no estoy seguro de cuáles son los conjuntos de validación y prueba.
El maestro dice:

El 70% debe ser casos de trenes, el 10% serán casos de prueba y el resto el 20% deben ser casos de validación.

editar

Tengo este código para entrenar, pero no tengo idea de cuándo dejar de entrenar.

def train(self, train, validation, N=0.3, M=0.1): # N: learning rate # M: momentum factor accuracy = list() while(True): error = 0.0 for p in train: input, target = p self.update(input) error = error + self.backPropagate(target, N, M) print "validation" total = 0 for p in validation: input, target = p output = self.update(input) total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output accuracy.append(total) print min(accuracy) print sum(accuracy[-5:])/5 #if i % 100 == 0: print ''error %-14f'' % error if ? < ?: break

editar

Puedo obtener un error promedio de 0.2 con datos de validación, después de quizás 20 iteraciones de entrenamiento, que debería ser del 80%.

error promedio = suma de la diferencia absoluta entre el objetivo de validación y el resultado, dada la entrada / tamaño de los datos de validación de los datos de validación.

1 avg error 0.520395 validation 0.246937882684 2 avg error 0.272367 validation 0.228832420879 3 avg error 0.249578 validation 0.216253590304 ... 22 avg error 0.227753 validation 0.200239244714 23 avg error 0.227905 validation 0.199875013416


Conjunto de entrenamiento : conjunto de ejemplos utilizados para el aprendizaje, es decir, para ajustar los parámetros [es decir, los pesos] del clasificador.

Conjunto de validación : conjunto de ejemplos utilizados para ajustar los parámetros [es decir, arquitectura, no pesos] de un clasificador, por ejemplo, para elegir la cantidad de unidades ocultas en una red neuronal.

Conjunto de prueba : un conjunto de ejemplos utilizados solo para evaluar el rendimiento [generalización] de un clasificador completamente especificado.

Desde ftp://ftp.sas.com/pub/neural/FAQ1.txt sección " ¿Cuál es la población, muestra, conjunto de entrenamiento, conjunto de diseño, validación "

La superficie de error será diferente para diferentes conjuntos de datos de su conjunto de datos (aprendizaje por lotes). Por lo tanto, si encuentra unos mínimos locales muy buenos para los datos de su conjunto de pruebas, ese puede no ser un buen punto, y puede ser un punto muy malo en la superficie generado por algún otro conjunto de datos para el mismo problema. Por lo tanto, necesita calcular un modelo que no solo encuentre una buena configuración de peso para el conjunto de entrenamiento, sino que también pueda predecir nuevos datos (que no estén en el conjunto de entrenamiento) con un buen error. En otras palabras, la red debería ser capaz de generalizar los ejemplos para que aprenda los datos y no simplemente recuerde o cargue el conjunto de entrenamiento al sobreajustar los datos de entrenamiento.

El conjunto de datos de validación es un conjunto de datos para la función que desea aprender, que no está utilizando directamente para capacitar a la red. Está entrenando a la red con un conjunto de datos que llama el conjunto de datos de entrenamiento. Si está utilizando un algoritmo basado en gradiente para entrenar la red, la superficie de error y el gradiente en algún momento dependerán por completo del conjunto de datos de entrenamiento, por lo que el conjunto de datos de entrenamiento se usa directamente para ajustar los pesos. Para asegurarse de no sobreajustar la red, necesita ingresar el conjunto de datos de validación a la red y verificar si el error está dentro de algún rango. Debido a que el conjunto de validación no se usa directamente para ajustar los pesos del neto, un buen error para la validación y también el conjunto de prueba indica que la red predice bien los ejemplos de conjuntos de trenes, también se espera que funcione bien cuando sea nuevo. ejemplo se presentan a la red que no se utilizó en el proceso de capacitación.

La detención temprana es una forma de dejar de entrenar. Hay diferentes variaciones disponibles, el esquema principal es, tanto el tren como los errores del conjunto de validación son monitoreados, el error del tren disminuye en cada iteración (backprop y hermanos) y al principio el error de validación disminuye. El entrenamiento se detiene en el momento en que el error de validación comienza a aumentar. La configuración de peso en este punto indica un modelo, que predice bien los datos de entrenamiento, así como los datos que no se ven en la red . Pero debido a que los datos de validación realmente afectan la configuración del peso indirectamente para seleccionar la configuración del peso. Aquí es donde entra el juego de prueba. Este conjunto de datos nunca se usa en el proceso de entrenamiento. Una vez que se selecciona un modelo basado en el conjunto de validación, los datos del conjunto de prueba se aplican en el modelo de red y se encuentra el error para este conjunto. Este error es un representante del error que podemos esperar de datos absolutamente nuevos para el mismo problema.

EDITAR:

Además, en el caso de que no tenga suficientes datos para un conjunto de validación, puede usar la crossvalidation para ajustar los parámetros y estimar el error de prueba.


Creo que en el modo de entrenamiento, permite que los nodos de su red alteren los valores de sus pesos de entrada o salida. También proporciona retroalimentación positiva o negativa para alterar los pesos. En otras palabras, le da un conjunto de entrada, y la salida de retroalimentación con la salida XOR ed contra el conocido verdadero / falso, entonces NO eso. En otras palabras, cuando las respuestas coinciden, usted da retroalimentación positiva, y cuando no están de acuerdo, usted da retroalimentación negativa.

No estoy seguro de cuál es la diferencia entre los casos de prueba / validación, aparte de que tal vez conozca la respuesta a los casos de validación y los use para validar el resultado, y quizás pruebe los casos que desconoce la respuesta, y simplemente acepte la respuesta de su red neuronal validada ...



Los juegos de entrenamiento y validación se usan durante el entrenamiento.

for each epoch for each training data instance propagate error through the network adjust the weights calculate the accuracy over training data for each validation data instance calculate the accuracy over the validation data if the threshold validation accuracy is met exit training else continue training

Una vez que terminas de entrenar, corres contra tu grupo de prueba y verificas que la precisión sea suficiente.

Conjunto de entrenamiento : este conjunto de datos se utiliza para ajustar los pesos en la red neuronal.

Conjunto de validación : este conjunto de datos se usa para minimizar el sobreajuste. No está ajustando los pesos de la red con este conjunto de datos, solo está verificando que cualquier aumento en la precisión sobre el conjunto de datos de entrenamiento realmente produce un aumento en la precisión sobre un conjunto de datos que no se ha mostrado a la red antes, o al menos la red no se ha entrenado en ella (es decir, conjunto de datos de validación). Si aumenta la precisión sobre el conjunto de datos de entrenamiento, pero la precisión sobre el conjunto de datos de validación se mantiene igual o disminuye, entonces está sobreajustando su red neuronal y debe dejar de entrenar.

Conjunto de pruebas : este conjunto de datos se usa solo para probar la solución final a fin de confirmar el poder predictivo real de la red.