сколько скрытых слоев ?
модель с нулевыми скрытыми слоями разрешит линейно разделяемые данные. Так что, если вы уже не знаете, что ваши данные нельзя разделить линейно, не повредит проверить это - зачем использовать более сложную модель, чем требует задача? Если он линейно разделен, тогда будет работать более простой метод, но перцептрон также выполнит эту работу.
Предполагая, что ваши данные действительно требуют разделения нелинейным методом, всегда начинайте с одного скрытого слоя . Почти наверняка это все, что вам нужно. Если ваши данные разделяются с помощью MLP, то для этого MLP, вероятно, нужен только один скрытый слой. Для этого есть теоретическое обоснование, но моя причина чисто эмпирическая: многие сложные задачи классификации / регрессии решаются с использованием MLP с одним скрытым слоем, но я не припоминаю, чтобы встречал какие-либо многослойные MLP с несколькими скрытыми слоями, используемые для успешного моделирования данных - - Будь то на досках объявлений ML, учебниках ML, академических статьях и т. д. Они, безусловно, существуют, но обстоятельства, оправдывающие их использование, эмпирически довольно редки.
Сколько узлов в скрытом слое?
Из академической литературы MLP. мой собственный опыт и т. д., я собрал и часто полагаюсь на несколько практических правил ( RoT ), которые я также считаю надежными руководящими принципами (т. е. руководство было точным, и даже когда это не было так, оно обычно было ясно, что делать дальше):
RoT на основе улучшения сходимости:
Когда вы начинаете построение модели, допустите ошибку на стороне большего количества узлов в скрытом слое.
Зачем? Во-первых, несколько дополнительных узлов в скрытом слое вряд ли причинят вред - ваш MLP все равно будет сходиться. С другой стороны, слишком мало узлов в скрытом слое может помешать сходимости. Подумайте об этом так: дополнительные узлы обеспечивают некоторую избыточную емкость - дополнительные веса для хранения / передачи сигнала в сеть во время итерации (обучение или построение модели). Во-вторых, если вы начнете с дополнительных узлов в скрытом слое, то позже (во время итерации) их легко удалить. Это обычное дело, и существуют диагностические методы, которые могут вам помочь (например, диаграмма Хинтона, которая представляет собой просто визуальное изображение весовых матриц, «тепловую карту» весовых значений).
RoT на основе размера входного слоя и размера выходного слоя:
Как показывает практика, размер этого [скрытого] слоя должен находиться где-то между размером входного слоя ... и размером выходного слоя ....
Для расчета количества скрытых узлов мы используем общее правило: (Количество входов + выходов) x 2/3
RoT на основе основных компонентов:
Как правило, мы указываем столько скрытых узлов, сколько измерений [основных компонентов] необходимо для захвата 70–90% дисперсии входного набора данных .
И все же автор часто задаваемых вопросов NN называет эти Правила «чепухой» (буквально), потому что они: игнорируют количество обучающих экземпляров, шум в целях (значения переменных ответа) и сложность пространства функций.
По его мнению (и мне всегда казалось, что он знает, о чем он говорит), выберите количество нейронов в скрытом слое в зависимости от того, включает ли ваш MLP некоторую форму регуляризации или раннюю остановку. .
Единственный действенный метод оптимизации количества нейронов в скрытом слое:
Во время построения модели, одержимо тестируйте; тестирование выявит признаки «неправильной» сетевой архитектуры. Например, если вы начинаете с MLP, имеющего скрытый слой, состоящий из небольшого количества узлов (которые вы будете постепенно увеличивать по мере необходимости, в зависимости от результатов тестирования), ваша ошибка обучения и обобщения будет высокой как из-за смещения, так и из-за недостаточного соответствия.
Затем увеличивайте количество узлов в скрытом слое по одному, пока ошибка обобщения не начнет увеличиваться, на этот раз из-за переобучения и высокой дисперсии.
На практике я делаю так:
входной уровень : размер моего фактора данных (количество функций в моей модели) + 1 для узла смещения, не включая, конечно, переменную ответа
выходной слой : единственно определяется моей моделью: регрессия (один узел) по сравнению с классификацией (количество узлов, эквивалентное количеству классов, при условии softmax)
скрытый слой : для начала , один скрытый слойс количеством узлов, равным размеру входного слоя. «Идеальный» размер, скорее всего, будет меньше (т. Е. Некоторое количество узлов между числом во входном слое и числом в выходном слое), а не больше - опять же, это просто эмпирическое наблюдение, и основная масса этого наблюдения - мой собственный опыт. Если проект оправдал необходимое дополнительное время, то я начинаю с одного скрытого слоя, состоящего из небольшого количества узлов, затем (как я объяснил чуть выше) я добавляю узлы к скрытому слою по одному, вычисляя обобщение. ошибка, ошибка обучения, систематическая ошибка и дисперсия. Когда ошибка обобщения снизилась и непосредственно перед тем, как она снова начнет увеличиваться, я выбираю количество узлов в этой точке. См. Рисунок ниже.