¿Cuántos datos necesita para una red neuronal convolucional?

14

Si tengo una red neuronal convolucional (CNN), que tiene aproximadamente 1,000,000 de parámetros, ¿cuántos datos de entrenamiento se necesitan (supongo que estoy haciendo un descenso de gradiente estocástico)? ¿Hay alguna regla general?

Notas adicionales: cuando realicé el descenso de gradiente estocástico (por ejemplo, 64 parches para 1 iteración), después de ~ 10000 iteraciones, la precisión del clasificador puede alcanzar un valor estable aproximado). ¿Esto significa que no se necesitan muchos datos? Como datos de 100k-1000k.

RockTheStar
fuente

Respuestas:

11

Para determinar si más datos serán útiles o no, debe comparar el rendimiento de su algoritmo en los datos de entrenamiento (es decir, los datos utilizados para entrenar la red neuronal) con su rendimiento en los datos de prueba (es decir, los datos que hizo la red neuronal no "ver" en el entrenamiento).

Una buena cosa para verificar sería el error (o precisión) en cada conjunto en función del número de iteración. Hay dos posibilidades para el resultado de esto:

1) El error de entrenamiento converge a un valor significativamente menor que el error de prueba. Si este es el caso, el rendimiento de su algoritmo seguramente mejorará con más datos.

2) El error de entrenamiento y el error de prueba convergen en aproximadamente el mismo valor (con el error de entrenamiento probablemente siendo un poco más bajo que el error de prueba). En este caso, los datos adicionales por sí mismos no ayudarán a su algoritmo. Si necesita un mejor rendimiento del que está obteniendo en este momento, debe intentar agregar más neuronas a sus capas ocultas o agregar más capas ocultas. Si se agregan suficientes unidades ocultas, encontrará que su error de prueba será notablemente más alto que el error de entrenamiento, y más datos ayudarán en ese punto.

Para una introducción más completa y útil sobre cómo tomar estas decisiones, recomiendo encarecidamente el curso Coursera de Andrew Ng , en particular las lecciones "Evaluación de un algoritmo de aprendizaje" y "Sesgo frente a varianza".

Kevin Lyons
fuente
3

La respuesta ingenua es que siempre se necesitan más datos. Iterar sobre el mismo conjunto de datos diciendo durante más épocas lo ayuda a "refinar" el resultado, pero no mejora el resultado tanto como tener más datos.

Como ejemplo, estoy entrenando a una red de comunicación para modelar oraciones y probar si necesito más datos. Intenté dividir mi conjunto de datos de entrenamiento en un subconjunto más pequeño y tratar de probarlo.

Utilizando todo el conjunto de datos y el entrenamiento para 10 iteraciones, obtuve un 93% de precisión en mi punto de referencia y sigue mejorando. En cambio, cuando iteré en el 10% del conjunto de datos para 100 iteraciones, obtuve un 85%.

Por lo tanto, siempre trate de tener más datos, pero si no puede, hacer más épocas puede ser un buen intercambio, pero al final su modelo converge mejor si alimenta la red con datos siempre nuevos.

dbonadiman
fuente
1
¡Gracias por tu respuesta! Sí, sé que cuantos más datos tenga, mejor será, pero entonces, exactamente cuántos datos necesita es lo que no estoy seguro. Porque no siempre puedes tener más datos. Por ejemplo, necesito contratar a alguien para que haga anotaciones y etiquetado, quiero saber cuándo debería parar ...
RockTheStar
¿eso significa que si tengo un pequeño conjunto de datos mi modelo no convergerá?
samsamara
3

Supongo que lo más importante es que las muestras en sus datos están bien distribuidas, porque no importa cuántos datos tenga, más datos siempre serían mejores. Después de todo, si intenta aprender a distinguir entre las imágenes de gatos y perros, no puede esperar que su modelo funcione bien si solo lo alimenta con imágenes de gatos.

Como se sugiere en la respuesta de Kevin L , tiene sentido considerar la diferencia entre el error de entrenamiento y el error de prueba. Si sus datos de prueba son independientes de sus datos de entrenamiento, esto le indica qué tan bien generaliza su modelo a los datos que no están disponibles. Algo que me gustaría agregar a eso es el hecho de que una gran diferencia entre el error de entrenamiento y prueba solo te dice que tu modelo no se generaliza bien, es decir, estás sobreajustado en los datos de entrenamiento. Probablemente, más datos ayudarán, porque ahora la red también necesita modelar los puntos de datos adicionales, por lo tanto, ya no puede sobreajustar tanto. Sin embargo, podría valer más la pena cambiar su modelo para que se generalice mejor. Este capítulo de un excelente libro. explica qué tipos de regularización existen y cómo se pueden aplicar en las redes para obtener una mejor generalización.

Si estaba buscando una medida más cuantitativa, recientemente encontré esta pregunta en quora. Se trata de un codificador automático, pero supongo que también debería ser aplicable a su ejemplo. No tengo idea de si esto es correcto (hágamelo saber), pero razonaría que, por ejemplo, para MNIST, se podría argumentar que intenta reducir las imágenes con un máximo de 28 * 28 * 8 * 10 000 = 62 720 000 bits de entropía a diez clases en una codificación de uno en caliente con 10 * 10 * 10 000 = 1 000 000 bits de entropía. Como solo estamos interesados ​​en los 1 000 000 bits de entropía en la salida, podemos decir que con 1 000 000 parámetros, cada parámetro representa un solo bit, que es 1e-4 bits por muestra. Esto significa que necesitaría más datos. O tiene demasiados parámetros, porque, por ejemplo, con 100 parámetros, tiene 10 000 bits por parámetro y, por lo tanto, 1 bit por muestra. Sin embargo,

Mr Tsjolder
fuente
Gracias por tu sugerencia. Creo que hoy en día las personas idean diferentes estrategias para reducir la cantidad de datos para una tarea específica.
RockTheStar
0

Otro método generalmente utilizado para determinar si su red ha aprendido suficientes características es visualizar los filtros iniciales. Si la red está bien entrenada, debería mostrar un filtro suave. Un filtro ruidoso generalmente indica que la red no se ha entrenado lo suficiente o que se ha sobreajustado. Para más información lee esta página .

suhail
fuente