2009-03-28 2 views
3

Я намереваюсь использовать многослойную сеть персептрона, обученную с обратным распространением (один скрытый слой, входы служили матрицами размером 8x8 бит, содержащими черно-белые пиксели изображения). Возникают следующие вопросы:Многослойный персептрон для OCR

  1. какой тип обучения я должен использовать: пакетный или он-лайн?
  2. Как я могу оценить правильное количество узлов в скрытом слое? Я намерен обработать 26 букв английского алфавита.
  3. как я мог остановить процесс обучения, чтобы избежать переобучения?
  4. (не совсем связано) есть ли еще один лучший NN, призванный работать лучше, чем MLP? Я знаю, что MLP заходит в локальные минимумы, перерабатывает и т. Д., Так есть ли лучший (на основе мягких вычислений) подход?

Благодаря

+0

Если это домашнее задание, отметьте его соответствующим образом. –

ответ

5

Большинство из этих вопросов являются то, что вам нужно, чтобы попробовать разные варианты, чтобы увидеть, что работает лучше всего. Это проблема с ANN. Нет никакого «лучшего» способа сделать почти что угодно. Вам нужно выяснить, что работает для вашей конкретной проблемы. Тем не менее, я дам совет для ваших вопросов.

1) Я предпочитаю инкрементное обучение. Я думаю, что важно, чтобы весы сети обновлялись после каждого шаблона.

2) Это сложный вопрос. Это зависит от сложности вашей сети. Сколько входных узлов, узлов вывода и шаблонов обучения есть. Для вашей проблемы я могу начать с 100 и попробовать диапазоны вверх и вниз от 100, чтобы увидеть, есть ли улучшения.

3) Я обычно вычисляю общую ошибку сети при применении к тестовому набору (а не набору обучения) после каждой эпохи. Если эта ошибка увеличится примерно на 5 эпох, я прекращу обучение, а затем воспользуюсь сетью, которая была создана до того, как произойдет увеличение. Важно не использовать ошибку тренировочного набора при принятии решения о прекращении обучения. Это то, что приведет к переобучению.

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

2

Что касается номера 3, то один способ узнать, когда ваш ANN начинает переобустраиваться, - это график точности сети на ваших данных обучения и ваших тестовых данных по сравнению с количеством выполненных эпох. В какой-то момент, по мере того, как ваша точность обучения продолжает увеличиваться (приближается к 100%), ваша точность теста, вероятно, начнет фактически уменьшить, потому что АНН перерабатывает данные обучения. Посмотрите, какая эпоха начнет происходить, и не пропустите это.

Если ваши данные очень правильные и последовательные, то он может не переполняться до самого конца игры или вообще не быть. И если ваши данные сильно нерегулярны, ваш ANN начнет переработку намного раньше.

Также, чтобы проверить, насколько правильными являются ваши данные, это сделать что-то вроде k-fold cross validation.