2016-05-30 2 views
0

Я сделал распознавание цифр (56x56 цифр), используя Neural Networks, но я получаю точность 89,5% на тестовом наборе и 100% на тренировочном наборе. Я знаю, что можно получить> 95% на тестовом наборе, используя этот набор тренировок. Есть ли способ улучшить мое обучение, чтобы я мог получить лучшие прогнозы? Изменение итераций с 300 до 1000 дал мне точность + 0,12%. Я также ограничен размером файла, поэтому увеличение количества узлов может быть невозможно, но если это так, возможно, я мог бы сократить некоторые пиксели/узлы из входного слоя.Как улучшить предсказание распознавания цифр в Neural Networks в Matlab?

Для обучения я использую:

  • входной слой: 3136 узлы
  • скрытый слой: 220 узлов
  • этикетки: 36
  • регуляризованный функция затрат с лямбда = 0,1
  • fmincg для расчета весов (1000 итераций)
+0

Какой метод вы используете для обучения своей сети? –

+0

Как я уже сказал в теме: [fmincg] (https://www.mathworks.com/matlabcentral/fileexchange/42770-logistic-regression-with-regularization-used-to-classify-hand-written-digits/content/Logistic % 20Regression% 20with% 20regularisation/fmincg.m). Это как [fminunc] (http://www.mathworks.com/help/optim/ug/fminunc.html), но люди говорят, что это лучше. – Potato

+1

Как вы пришли к этим параметрам? Вы используете перекрестную проверку? – Dan

ответ

1

Как указано в t он комментирует, самым простым и наиболее перспективным способом является переход на Свернутую нейронную сеть. Но с вами текущей модели вы можете:

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

  • batch Normalization (BN). В то время как вы уже используете регуляризацию, BN ускоряет обучение, а также выполняет регуляризацию и представляет собой алгоритм NN, который может работать лучше.

  • Сделайте ансамбль. Направьте несколько NN на один и тот же набор данных, но с другой инициализацией. Это создаст несколько разные классификаторы, и вы сможете комбинировать их результаты, чтобы получить небольшое увеличение точности.

  • Потери кросс-энтропии. Вы не упоминаете, какую функцию потерь вы используете, если ее не кросс-энтропия, то вы должны начать ее использовать. Все высокоточные классификаторы используют кросс-энтропийную потерю.

  • Перейти к обратному распространению и стохастическому градиентному спуску. Я не знаю эффекта использования другого алгоритма оптимизации, но backpropagation может превзойти алгоритм оптимизации, который вы используете в настоящее время, и вы можете комбинировать его с другими оптимизаторами, такими как Adagrad или ADAM.

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

Смежные вопросы