Понимание многослойной сети персептрона - PullRequest
7 голосов
/ 25 апреля 2010

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

Для конкретной задачи у меня есть четыре источника ввода, каждый из которых может вводить одно из трех состояний. Я предполагаю, что это будет означать четыре входных нейрона, запускающих 0, 1 или 2, но, как мне сказали, вход должен быть двоичным?

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

Спасибо.

Ответы [ 2 ]

10 голосов
/ 01 мая 2010

Я не согласен с ответом Дуга выше по нескольким пунктам.

У вас есть 4 дискретных (3-х категориальных) входа.Вы должны (если у вас нет веских оснований этого не делать) представлять это как 12 двоичных входов, используя кодировку «1 из 3» для каждого из четырех ваших концептуальных входов.Таким образом, если вы вводите [2,0,1,1], то ваша сеть должна быть задана: 0 0 1 1 0 0 0 1 0 0 1 0 Если ваша сетевая реализация требует ручного смещения, то вы должны добавить еще один бит всегдадля предвзятости, но большинство разумных реализаций нейронных сетей не требуют этого.

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

9 голосов
/ 25 апреля 2010

Определение приемлемой структуры сети для многослойного персептрона на самом деле просто.

  1. Входной слой : Сколько элементов / размеров находится в ваши данные - то есть, сколько столбцов в каждая строка данных. Добавьте один к этому (для узел смещения) и это количество узлов для первого (вход слой).

  2. Выходной уровень : Ваш MLP работает на «машине» режим или режим регрессии («регрессия» используется здесь в машинное обучение, а не статистический смысл) - то есть, делает ли мой MLP вернуть метку класса или предсказанный значение? Если последнее, то ваш Выходной слой имеет один узел. Если бывший, то ваш выходной слой имеет то же количество узлов, что и метки классов. Например, если результат, который вы хотите, это пометить каждый Например, «мошенничество» или «не мошенничество ", это два ярлыка класса, следовательно, два узла в вашем выводе слой.

  3. Скрытый слой (и) : Между этими двумя (вход и вывод) явно скрыты слои. Всегда начинай с одного скрытый слой. Итак, сколько узлов? Вот эмпирическое правило: установите (начальный) размер скрытого слоя равным некоторому количеству узлов, чуть превышающему количество узлов во входном слое. По сравнению с меньшим количеством узлов, чем у входного слоя, эта избыточная емкость поможет сойтись в вашей программе числовой оптимизации (например, градиентном спуске).

В общем, начните с трех уровней для вашей сетевой архитектуры; размеры первого (входного) и последнего (выходного) определяются вашими данными и дизайном вашей модели, соответственно. Скрытый слой, немного превышающий размер входного слоя, почти всегда является хорошим началом для начала.

Итак, в вашем случае подходящей структурой сети для начала будет:

входной слой : 5 узлов -> скрытый слой : 7 узлов -> выходной слой : 3 узла

...