С чего начать рукописное распознавание с помощью нейронной сети?

Я уже некоторое время пытаюсь узнать о нейронных сетях, и я могу понять некоторые основные учебные пособия в интернете. Теперь я хочу разработать онлайн рукописное распознавание с использованием нейронной сети. Так я понятия не имею, с чего начать? И мне нужна очень хорошая инструкция. В конце концов, я программист java.

Что вы предлагаете мне делать?

11 ответов


Начну с распознавания символов на Unipen


введение в нейронные сети для Java является хорошей вводной книгой и включает в себя пример распознавания почерка.

alt текст http://ecx.images-amazon.com/images/I/51RmyzT3ZUL._SL500_AA240_.jpg


посмотрите на некоторые из проектов, плавающих вокруг сети:

чтобы перечислить только три первые ссылки, Google выплевывает"распознавание рукописного ввода java"

некоторые подсказки, чтобы получить вас начал:

  • Если можете, работайте с векторами вместо растровой графики. В идеале, вы должны иметь скорость и направление каждого удара. Часто легче распознать букву по тому, как изгибается кривая плюс скорость, с которой она была нарисована вместо формы.

  • атакуйте проблему несколькими подходами. Используйте нейронные сети, распознавание формы, размер, предыдущую и следующую букву, словари. Все они дадут вам разные результаты с разными уровнями ошибок. Это может помочь значительно улучшить результаты.

удачи!


Питера Норвига Искусственный Интеллект: Современный Подход является хорошей книгой об общем ИИ и многое объясняет Об основах,и есть раздел о нейронных сетях обратного распространения.

для обучения вашей нейронной сети вам понадобятся наборы данных.

здесь БАЗА ДАННЫХ MNIST рукописных цифр или на основе пера распознавание рукописных цифр набора данных на машинное обучение UCI Хранилище

репозиторий UCI ML имеет множество отличных наборов данных, многие из которых были бы хороши для обучения нейронных сетей. Даже если вы не знаете, о чем они, вы можете захватить некоторые и посмотреть, может ли ваша система ML выполнять задачи классификации. Посмотреть задачи классификации с большим количеством атрибутов и экземпляров, хотя вы можете попробовать и меньшие, когда начнете.

кстати, есть гораздо больше методов, кроме нейронных сетей, в том числе Поддержка Векторных Машин, которые пользуются популярностью.


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

абсолютно важно выбрать правильные функции и предварительно обработать (т. е. избавиться от шумовых функций, посторонних данных, дубликатов или сильно коррелированных функций) столько, сколько вы можете. По моему опыту, вы получите гораздо лучшую производительность от самых скучных и простых ближайшая соседняя реализация с хорошими функциями, чем от алгоритма режущей кромки с менее хорошо подобранными функциями.

для вас это означает задерживает чтение литература по нейронной сети на данный момент (просто сначала возьмите с полки реализацию черного ящика) и прочтите о том, какая обработка изображений и т. д. использование реальных систем. Если ваши данные могут включать информацию о давлении и скорости, тем лучше. Что-то вроде тепловой карты LDA может быть иллюстративным, чтобы изначально увидеть, что особенности имеют значение, а какие нет.

для базовой классификации существует множество достойных алгоритмов. Большинство работает просто отлично и будет работать просто отлично для вас. Трудная часть заключается не в выборе или настройке алгоритма, а в том, чтобы избежать сценария "мусор в мусоре".


Heaton research поможет вам много

http://www.heatonresearch.com/articles/7/page3.html - посетите это для учебника с образцами фрагментов кода


нейронная сеть [если я не ошибаюсь] будет работать над интерпретацией шаблонов, Вы предоставляете входы в свою программу, и программа ищет этот шаблон в наборе сохраненных шаблоны и на основе матча обеспечивает возможное совпадение.

в вашем случае размеры для шаблонов могут быть такими данными, как скорость + направление или только направление, etc

Я сделал небольшую симуляцию нейронного бота, который общается на моем сайте аналогичным образом.

более шаблоны программа "учится", тем более точные ответы она дает.


нейронным сетям нужно много времени. Концепции достаточно просты,но они могут быть подавляющими для начинающего.

посмотрите, что Йохен Фрелих сделал с нейронные сети в Java. Это звучит как идеальная отправная точка для программиста Java, такого как вы.



Если вы ищете концепции, я предлагаю BrainNet,

нейронные сети-Часть I: простая система распознавания рукописного ввода в .NET

http://amazedsaint.blogspot.com/2008/01/neural-networks-part-i-simple.html

BrainNet поможет вам!--1-->

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

Я предлагаю вам начать с распознавания рукописных цифр по следующим причинам:

  • задача четко определена
  • есть очень хорошая база данных рукописных цифр, упомянутых выше (MNIST)
  • есть много реализованных алгоритмов, проверенных на этой проблеме
  • одним из наиболее успешных подходов к этой проблеме являются сверточные нейронные сети, которые даже использовались в коммерческих приложениях. Их немного. доступные реализации, включая C++, CUDA, Matlab, Python. К сожалению я не знаю никаких реализаций Java.