11

Actualmente estoy aprendiendo sobre redes neuronales y estoy tratando de crear una aplicación que pueda ser entrenada para reconocer caracteres escritos a mano. para este problema uso una red neuronal feedforward y parece funcionar cuando lo entreno para reconocer 1, 2 o 3 caracteres diferentes. pero cuando trato de hacer que la red aprenda más de 3 caracteres se estancará con un porcentaje de error alrededor del 40 - 60%.feedforward red neuronal para OCR

intenté capas múltiples, menos/más cantidad de neuronas pero parece que no puedo hacerlo bien, ahora me pregunto si una red neuronal feedforward es capaz de reconocer tanta información.

algunas estadísticas:

tipo de red: red neuronal feedforward.

neuronas de entrada: 100 (10 * 10) de rejilla se utiliza para dibujar los caracteres

neuronas de salida: la cantidad de caracteres a regocnize

¿alguien sabe cuál es el posible defecto en mi arquitectura es? ¿hay demasiadas neuronas de entrada? ¿La red neuronal feedforward no es capaz de retener el carácter?

gracias de antemano.

+1

¿Cuántas neuronas ocultas está usando? – mbatchkarov

+0

Las neuronas de entrada y salida parecen estar bien para su tarea, pero ¿cómo entrena su red? ¿Qué algoritmo usa? ¿Cómo inicializas pesas? – maximdim

+0

intenté usar backpopagation y un algoritmo genético. también lo probé con una capa oculta de 70 neuronas y una con 2 capas ocultas (70 y 40) de neuronas. –

Respuesta

12

Para el reconocimiento de caracteres manuscritos que necesita

  1. muchos ejemplos de entrenamiento (tal vez debería provocar distorsiones de su conjunto de entrenamiento)
  2. función de activación softmax en la capa de salida
  3. función de error entropía cruzada
  4. entrenamiento con estocástico pendiente de gradiente
  5. un sesgo en cada capa

Un buen problema de prueba es el conjunto de datos de dígitos escritos a mano MNIST. Éstos son los papeles que se aplicaron con éxito las redes neuronales en este conjunto de datos:

Y. LeCun, L. Bottou, Y. Bengio y P. Haffner: Gradiente del aprendizaje basado en Aplicada al reconocimiento de documentos, http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

Dan Claudiu Ciresan , Ueli Meier, Luca Maria Gambardella, Juergen Schmidhuber: redes neuronales profundas grandes y grandes Excel en reconocimiento de dígitos manuscritos, http://arxiv.org/abs/1003.0358

Entrené un MLP con arquitectura 784-200-50-10 y obtuve> 96% de precisión en el conjunto de prueba .

10

Probablemente quiera seguir las Lecturas 3 y 4 al http://www.ml-class.org. El profesor Ng ha resuelto este problema exacto. Él está clasificando 10 dígitos (0 ... 9).Algunas de las cosas que había hecho en la clase que lo hace con una precisión de entrenamiento 95% son:

  • entrada Nueron: 400 (20x20)
    • capas ocultas: 2
    • Tamaño de capas ocultas: 25
    • función
    • activación: sigmoide método
    • Formación: descenso de gradiente
    • tamaño de datos: 5000
+0

-1 para un enlace muerto. – jpjacobs

+0

Perdón por el enlace muerto ... el enlace correcto es http://www.ml-class.org. La clase fue ofrecida por Stanford. – nitin

+1

upvoted en consecuencia;) – jpjacobs

1

que tenía un problema similar hace algún tiempo tratando de identificar los dígitos escritos a mano utilizando el conjunto de datos MNIST. Mi red neural feedforward estaba dando una precisión de aproximadamente el 92% en el conjunto de validación, pero con frecuencia estaba clasificando erróneamente las imágenes que le di.

Resolví este problema agregando una capa oculta en mi red y usando RMSProp. La red ahora ofrece una precisión de alrededor del 97% y clasifica correctamente las imágenes que le doy.

Además, si su costo no está disminuyendo, probablemente signifique que su tasa de ng es demasiado alta o que su red probablemente se encuentre estancada en un mínimo local. En tal situación, podría intentar disminuir su índice de aprendizaje y los pesos iniciales.

Cuestiones relacionadas