Обучение прямой связи нейронной сети для OCR

В настоящее время я изучаю нейронные сети и пытаюсь создать приложение, которое можно научить распознавать рукописные символы. Для этой проблемы я использую нейронную сеть с прямой связью, и, кажется, она работает, когда я обучаю ее распознавать 1, 2 или 3 разных символа. Но когда я пытаюсь заставить сеть выучить более 3 символов, она застаивается с процентом ошибок около 40 - 60%.

Я пробовал с несколькими слоями и меньшим/большим количеством нейронов, но я не могу понять, как это правильно, теперь мне интересно, способна ли нейронная сеть с прямой связью распознавать такое количество информации.

Немного статистики:

Тип сети: Прямая нейронная сеть

Входные нейроны: сетка 100 (10 * 10) используется для рисования символов

Выходные нейроны: количество символов, которые нужно пересмотреть

Кто-нибудь знает, каков возможный недостаток в моей архитектуре? Слишком много входных нейронов? Разве нейронная сеть с прямой связью не способна переосмыслить характер?

Ответ 1

Для рукописного распознавания символов вам нужно

  • много примеров обучения (возможно, вам следует создавать искажения в вашем учебном наборе)
  • Функция активации softmax в выходном слое
  • функция ошибки кросс-энтропии
  • обучение с градиентом стохастического
  • смещение в каждом слое

Хорошей тестовой проблемой является набор данных с рукописными цифрами MNIST. Вот статьи, которые успешно применили нейронные сети в этом наборе данных:

У. LeCun, L. Bottou, Y. Bengio и P. Haffner: обучение на основе градиента при распознавании документов, http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

Дэн Клаудиу Киресан, Уэли Мейер, Лука Мария Гамбарделла, Юрген Шмидхубер: Глубокие большие простые нейронные сетки Excel на рукописном распознавании цифр, http://arxiv.org/abs/1003.0358

Я тренировал MLP с архитектурой 784-200-50-10 и получил точность 96% на тестовом наборе.

Ответ 2

Вероятно, вы захотите следовать лекциям 3 и 4 на http://www.ml-class.org. Профессор Нг решил эту точную проблему. Он классифицирует 10 цифр (0... 9). Некоторые из вещей, которые он делал в классе, который дает ему 95% точности тренировки:

  • Вход Nueron: 400 (20x20)
    • Скрытые слои: 2
    • Размер скрытых слоев: 25
    • Функция активации: сигмоид
    • Метод обучения: спуск градиента
    • Размер данных: 5000

Ответ 4

У меня была аналогичная проблема некоторое время назад, пытаясь определить рукописные цифры с использованием набора данных MNIST. Моя прямая нейронная сеть давала точность около 92% от набора валидаций, но часто неправильно классифицировала изображения, которые я им дал.

Я исправил эту проблему, добавив скрытый слой в свою сеть и используя RMSProp. Теперь сеть дает около 97% точности и правильно классифицирует изображения, которые я им даю.

Кроме того, если ваша стоимость не уменьшается, это, вероятно, означает, что ваш курс ng слишком высок, или ваша сеть, вероятно, застряла в локальных минимумах. В такой ситуации вы можете попытаться снизить скорость обучения и начальные веса.