Обучение прямой связи нейронной сети для 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
Ответ 3
Изучите эту примерную программу
Рукописное распознавание цифр
В программе используется Набор данных для рукописного набора Semeion
с Библиотека FANN
Ответ 4
У меня была аналогичная проблема некоторое время назад, пытаясь определить рукописные цифры с использованием набора данных MNIST. Моя прямая нейронная сеть давала точность около 92% от набора валидаций, но часто неправильно классифицировала изображения, которые я им дал.
Я исправил эту проблему, добавив скрытый слой в свою сеть и используя RMSProp. Теперь сеть дает около 97% точности и правильно классифицирует изображения, которые я им даю.
Кроме того, если ваша стоимость не уменьшается, это, вероятно, означает, что ваш курс ng слишком высок, или ваша сеть, вероятно, застряла в локальных минимумах. В такой ситуации вы можете попытаться снизить скорость обучения и начальные веса.