Понимание многослойной perceptron сети

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

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

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

Спасибо.

7
задан doug 4 August 2017 в 19:20
поделиться

2 ответа

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

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

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

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

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

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

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

9
ответ дан 6 December 2019 в 09:59
поделиться

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

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

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

10
ответ дан 6 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: