20 votos

¿Cuántos datos necesita una red neuronal convolucional?

Si tengo una red neuronal convolucional (CNN), que tiene unos 1.000.000 de parámetros, ¿cuántos datos de entrenamiento se necesitan (suponiendo que estoy haciendo el descenso de gradiente estocástico)? ¿Existe 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 100k-1000k datos.

13voto

Lin Dong Puntos 101

Para saber 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 la red neuronal no "vio" en el entrenamiento).

Una buena cosa a comprobar sería el error (o la 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, es casi seguro que el rendimiento de su algoritmo mejorará con más datos.

2) El error de entrenamiento y el error de prueba convergen aproximadamente al mismo valor (con el error de entrenamiento siendo probablemente 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 que el que está obteniendo en este punto, debería intentar añadir más neuronas a sus capas ocultas, o añadir más capas ocultas. Si se añaden suficientes unidades ocultas, verá que su error de prueba será notablemente mayor que el error de entrenamiento, y más datos le ayudarán en ese momento.

Para una introducción más completa y útil sobre cómo tomar estas decisiones, recomiendo encarecidamente el libro de Andrew Ng Curso de Coursera En particular, las lecciones "Evaluación de un algoritmo de aprendizaje" y "Sesgo vs. Varianza".

4voto

alpheus Puntos 45

Supongo que lo más importante es que las muestras de tus datos estén bien repartidas, porque por muchos datos que tengas, más datos siempre serán mejores. Al fin y al cabo, si intentas aprender a distinguir entre imágenes de gatos y perros, no puedes esperar que tu modelo funcione bien si sólo le das imágenes de gatos.

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

Si buscas una medida más cuantitativa, hace poco encontré esta pregunta en quora . Se trata de un autocodificador, pero supongo que también debería ser aplicable a tu ejemplo. No tengo ni idea de si esto es correcto (por favor, hágamelo saber), pero yo razonaría que, por ejemplo, para MNIST, se podría argumentar que usted trata de 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 la codificación de una sola vez con 10 * 10 * 10 000 = 1 000 000 bits de entropía. Como sólo nos interesa el 1 000 000 de bits de entropía en la salida, podemos decir que con 1 000 000 de parámetros, cada parámetro representa un solo bit, lo que supone 1e-4 bits por muestra. Esto significa que necesitarías más datos. O tienes demasiados parámetros, porque por ejemplo con 100 parámetros, tienes 10 000 bits por parámetro y por tanto 1 bit por muestra. No obstante, vuelvo a insistir en que es la primera vez que veo algo así y si alguien pudiera confirmarlo, se lo agradecería.

3voto

Seth Petry-Johnson Puntos 5709

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

Por ejemplo, estoy entrenando un convnet para modelar oraciones y para probar si necesito más datos he intentado 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 entrenando durante 10 iteraciones, obtuve un 93% de precisión en mi punto de referencia y sigue mejorando. En cambio, cuando iteré sobre el 10% del conjunto de datos durante 100 iteraciones, obtendré un 85%.

Así que intenta siempre tener más datos, pero si no puedes, hacer más épocas puede ser un buen intercambio, pero al final tu modelo converge mejor si alimentas la red con datos siempre nuevos.

1voto

Ricibob Puntos 261

Otro método generalmente utilizado para averiguar 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 ha sido entrenada lo suficiente o que ha sido sobreajustada. Para más información, lea esta página .

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