Оптимальная конфигурация нейронной сети для классификации объектов

В настоящее время я работаю над проблемой классификации объектов и использую OpenCV для подготовки модели классификатора объектов на основе искусственной нейронной сети. Я использую 128-элементный дескриптор SURF для описания объекта. В настоящее время я определил 6 классов объектов.

Я хочу определить нейронную сеть на основе MLP в opencv и обучить ее дескрипторам SURF для подготовки модели классификации объектов. Однако при определении нейронной сети на основе MLP мне нужно указать количество входных узлов, количество скрытых узлов и количество выходных узлов в MLP. Насколько я понимаю, количество входных узлов равно количеству атрибутов, описывающих объект (и, следовательно, в моем случае я использовал 128 входных узлов), количество выходных узлов равно количеству классов объектов (то есть 6 в моем случае). У меня есть два вопроса:

  1. Верен ли мой выбор для определения количества входных и выходных узлов?
  2. Какое значение выбрать для количества скрытых узлов?

Я уже искал в Интернете, а также в stackoverflow, но меня смущает подход, используемый для выбора количества скрытых узлов. Из Интернета кажется, что количество скрытых узлов выбирается на основе проб и ошибок, но я думаю, что между тремя входами должна быть какая-то связь. Любые ссылки или помощь будут оценены.


person Bhoot    schedule 08.06.2015    source источник


Ответы (1)


Как правило, существует связь между количеством узлов и ошибкой обучения/обобщения. Скрытый слой служит прямой цели распознавания шаблонов из ваших входных данных. Слишком мало узлов, и ваша сеть будет недоработана, т. е. не сможет распознать столько сложных паттернов, сколько вам хотелось бы. Слишком много, и он переобучится, т. е. будет распознавать все, чему вы его обучаете, но ничего больше (никакого «обобщения», т. е. распознавания ранее неизвестных паттернов — вот почему вы создали его в первую очередь). См. также эту ссылку. Таким образом, магическое число находится «где-то посередине», и под этим я подразумеваю количество входов и количество выходов. Итак, что попробовать? К сожалению, не существует общего числа или соотношения, которое гарантированно сработает. Но хорошей отправной точкой было бы количество скрытых узлов, равное 1/2 * (входные узлы + выходные узлы), то есть просто среднее арифметическое между ними. С этого момента вы можете начать экспериментировать, вычисляя ошибки обучения и проверки для различного количества узлов скрытого слоя. В мозгу число нейронов от одного слоя к другому также выстроено в виде пирамиды, и вы можете быть уверены, что на то есть веская причина.

По сути, тот же вопрос уже был получил ответ здесь.

person cirko    schedule 17.07.2015