Количество нейронов во входном слое нейронной сети с прямой связью - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в Machine Learning и делаю мультикласс multiclass classsification task прогнозирования качества вина (от 0 до 10), основываясь на 11 входных переменных Как определить количество нейронов во входном слое моей прямой связи neural network? Например, 11 переменных в моем наборе данных. На входном слое я должен держать 11 нейронов? Как насчет того, чтобы иметь больше / меньше 11 нейронов?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

В вашей сети вы пытаетесь аппроксимировать функцию F (x_1, x_2, ..), сопоставляющую некоторый вход, с 10-мерным вектором качества вина.

В вашем случае входными данными могут быть 11 функций или, может быть, просто 1. Если, например, цена вина - это функция, определенно будет корреляция между ценой и качеством.Но эта корреляция, вероятно, будет приблизительно приближена к «истинной функции».Таким образом, добавив больше функций в вашу модель, вы сможете лучше и лучше аппроксимировать основную функцию True.Но имейте в виду, что некоторые функции могут быть бесполезными или почти не иметь никакого влияния!

0 голосов
/ 11 мая 2018

Единицы ввода : Вопрос спрашивает, сколько нейронов должно быть во входном слое. У вас есть 11 переменных. Поэтому с единицей смещения у вас будет всего 12 единиц на входном слое.

Единицы вывода : Количество единиц вывода будет определяться тем, является ли это проблемой регрессии или классификации, и сколько выходов имеет эта проблема. Например, для набора данных вина будет 3 класса. В схеме горячего кодирования было бы 3 выходных блока, по одному для каждого класса.

Поэтому единицы ввода и вывода определяются набором данных (если вы не делаете что-то сумасшедшее).

Скрытые слои и юниты : Количество скрытых слоев и количество единиц на скрытый слой - это то, что нужно настроить. Для этой конкретной проблемы, возможно, нет необходимости углубляться. Один единственный скрытый слой подойдет. Хотя для небольших наборов данных вы можете обучить несколько моделей с разными скрытыми единицами и разным количеством слоев и выбрать модель на основе оценки набора проверки или на основе перекрестной проверки.

Обучается с одним скрытым слоем с 5 скрытыми юнитами, тремя выходами. Набор данных вина. Trained with one hidden layer with 5 hidden units, three outputs. Wine dataset.

Обучается с двумя скрытыми слоями, с 10 и 5 скрытыми единицами соответственно. Trained with two hidden layers, with 10 and 5 hidden units respectively.

В обоих случаях присутствуют единицы смещения. В моем случае этот конкретный набор данных вина имеет 13 входов и три выхода для классификации трех классов.

Поскольку для больших наборов данных это может занять много времени, вы можете использовать некоторые эвристические методы для выбора количества слоев. Например. начать с одного скрытого слоя и, скажем, 5 единиц. Тогда тренируй модель. Затем используйте 10 единиц и обучайте другую модель, продолжайте добавлять 5 единиц и обучайте модели, пока результат проверки не улучшится значительно. Затем прекратите добавлять единицы в слой. После этого вы можете добавить еще один слой и снова изменить количество скрытых юнитов и продолжить.

Это очень простой метод. Я бы порекомендовал вам прочитать научные статьи для эффективных методов. Есть много методов, используемых. Для начала я хотел бы указать вам здесь: http://www.ml4aad.org/literature-on-neural-architecture-search/. Также проверьте AutoML

0 голосов
/ 10 мая 2018

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

Несколько вещей, которые нужно иметь в виду

  1. Более глубокая сеть требует много времени для обучения, поэтому попробуйте построить меньшую сеть,В этом случае точность и обобщение могут быть меньше.
  2. Если вы идете по более глубокой сети, позаботьтесь о проблеме исчезновения / взрыва градиента, которая довольно распространена в глубоких сетях.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...