решить, сколько слоев и нейронов установить в ANN - PullRequest
0 голосов
/ 19 апреля 2019

Я начал изучать ML из онлайн-проклятий и считаю это очень захватывающим.

примеры довольно просты для понимания (написаны на python), и результаты поразительны, но все примеры довольно просты и не объясняют, как решить, сколько скрытых слоев и нейронов необходимо в скрытых слоях, поэтому я искал в гугле.

большинство результатов говорят об искусстве и опыте, я нашел одну статью, в которой показано, как начинающие спрашивают, сколько скрыто-слоев-нейронов для использования в искусственных нейронных сетях но для больших наборов данных с большим количеством параметров я не могу нарисовать границы, есть ли способ сделать это программируемым или лучший способ узнать, сколько скрытых слоев и нейронов мне нужно?

1 Ответ

1 голос
/ 20 апреля 2019

Нет, это вопрос экспериментов, чтобы найти то, что решает вашу проблему. Как показывает ваша справка, сложность слоя определяется внутренней сложностью ваших данных и классификациями, которые вы пытаетесь сделать.

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

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

Как только это удастся, я постепенно уменьшаю количество нейронов, пока не найду «точку отсчета» для точности по сравнению с временем тренировки.


Некоторые проблемы не могут быть легко решены с помощью простого NN. В зависимости от приложения вам может понадобиться что-то из мира глубокого обучения, например, простой CNN (Convolutional NN).

Если ваш набор данных достаточно сложный, вы также можете применить PCA (анализ основных компонентов), чтобы найти важные входные параметры. Затем вы можете уменьшить входные данные, значительно уменьшив размер NN и время обучения, необходимое для схождения.

...