2012-06-25 3 views
5

Я занимаюсь некоторыми исследованиями с нейронными сетями, и концепция и теория в целом имеют смысл для меня. Хотя один вопрос, который мне подходит, на который я еще не смог найти ответа, - сколько нейронов следует использовать в нейронной сети. для достижения надлежащих/эффективных результатов. Включая скрытые слои, нейроны на скрытый слой и т. Д. Увеличивают ли больше нейронов более точные результаты (при большей нагрузке на систему) или меньше нейронов все еще будут достаточными? Есть ли какое-то правильное правило, которое поможет определить эти цифры? Это зависит от типа алгоритма обучения/обучения, который внедряется в нейронную сеть. Это зависит от типа данных/ввода, которые представлены в сети?Определение правильного количества нейронов для нейронной сети

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

На стороне примечания есть ли алгоритм прогнозирования/правила обжига или алгоритм обучения, который обычно пересматривается как «лучший/самый практичный» или зависит также от типа данных, представляемых в сети?

Благодаря любому, кто имеет какие-либо входные данные, он всегда ценится!

EDIT: Что касается тега C#, то это язык, на котором я собираюсь собрать свою нейронную сеть. Если эта информация вообще помогает.

+0

* Если вы можете представить целую книгу, которая отвечает на ваш вопрос, вы слишком много спрашиваете. * Http://stackoverflow.com/faq#dontask Кроме того, я не вижу, как это может быть что-то сделать с C#. –

+2

См. Http://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw –

+0

@ 0xA3, отлично ссылка. Этот вопрос может быть недостаточно конкретным для SO, но всего лишь несколько мыслей: размер нейронной сети диктуется сложностью функции или классификатора, которые они представляют. Кроме того, да, возможно иметь слишком много нейронов: в классификации это может привести к переобучению и потере обобщенной модели. – nicholas

ответ

2

Я специализировался на AI/NN в Колледже, и у меня был некоторый опыт работы с ними для игр, и вот что я нашел в качестве руководства для начала работы. Поймите, однако, что каждый NN будет использовать некоторые настройки для лучшей работы в выбранной вами среде. (Одно из возможных решений заключается в том, чтобы выставить свою программу на 1000 разных NN, настроить тестовые критерии производительности, а затем использовать генетический алгоритм для распространения более полезных NN и отбирать менее полезные NNs, но это целый другой очень большой пост ...)

я нашел - в общем

  • Входной слой - Один AN для каждого входного вектора + 1 Bias (всегда 1)
  • Внутренний слой - Двойной входной слой
  • Выходной слой - один для каждого действия или результат

Пример: распознавание символов

  • Если вы изучаете сетку 10x10 для распознавания символов;
  • начать с 101 Input AN (по одному для каждого пикселя, плюс один смещения)
  • 202 Внутренний AN
  • и 26 Выход А.Н. (один для каждой буквы алфавита)

Пример: Блэкджек

  • Если вы строите NN для «победы в блэкджеке»;
  • старт с 16 вводом AN (13 рассчитывать каждое вхождение в картах, 1 для игрока значения руки, 1 для дилера "вверх-карты", и 1 смещение)
  • 32 Внутреннего AN
  • и 6 выводить (один для «Хит» «Stay» «Разделить» «Двойной», «Surrender» и «Insurrance»)
+0

У меня очень ограниченное воздействие на NN до сих пор, поэтому извините меня, если этот вопрос очень простой; но что вы подразумеваете под внутренним слоем Bias? Скрытый слой, который имеет некоторое предвзятое отношение? И какое значение имеет значение уровня смещения? Также исправляюсь ли я в предположении внутреннего слоя = скрытый слой? – RaiderNation

+1

Извините за путаницу, по «Bias». Я имею в виду один AN, на входном слое, который всегда установлен в 1. Нет необходимости в смещении на внутренних или выходных уровнях. (SO отформатировал мой пост иначе, чем то, что я сделал, поэтому линии слились, когда они не должны иметь = p) Итак, искусственный нейрон Bias всегда питает «1» на Внутренний слой, как если бы это обычный AN, который «застрял» на." – EtherDragon

+0

Таким образом, установка входного нейрона в качестве «1» обычно будет благоприятной, независимо от типа ввода, подаваемого на входной уровень? Например, не типы ввода для распознавания символов и Блэкджек разные? Еще раз спасибо! – RaiderNation

0

Некоторые общие правила являются следующие на основе этого документа: «аппроксимирующей Количество нейронов скрытого слоя в архитектуре BPNN с несколькими скрытыми слоями 'by Saurabh Karsoliya.

  • Количество нейронов скрытого слоя являются 2/3 (или 70% до 90%) от размера входного слоя. Если это недостаточно, тогда число нейронов выходного слоя может быть добавлено позднее. .
  • Число нейронов скрытого слоя должно быть меньше , чем в два раза больше числа нейронов во входном слое.
  • Размер нейронов скрытого слоя находится между размером входного слоя и размером выходного слоя.
Смежные вопросы