Как эффективно выполнять моделирование нейронной сети?


13

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


1
Тебе действительно нужен NN? Этот метод считается устаревшим (частично потому, что очень сложно ответить на ваши вопросы).

1
@mbq: может быть, это должен быть отдельный вопрос, но не могли бы вы расширить свое утверждение о том, что нейронные сети считаются устаревшими? (и кем?)
naught101

1
@ naught101 Это комментарий от 2010 года ... В настоящее время мы, к сожалению, переживаем возрождение этого безумия, поэтому нам придется подождать несколько лет, чтобы NN снова устарели (;

1
@mbq: это не отвечает на мой вопрос. Но, возможно, это так: stackoverflow.com/questions/683124/neural-networks-obsolete
naught101

Ответы:


25

Совет, который я бы дал, заключается в следующем:

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

  2. Изучите методы ядра (например, машины опорных векторов (SVM), логистическая регрессия ядра), сначала модели процессов Гаусса. В обоих случаях перестройка эффективно контролируется путем настройки небольшого количества гиперпараметров. Для методов ядра это часто выполняется перекрестной проверкой, для моделей процесса Гаусса это выполняется путем максимизации предельной вероятности (также известной как байесовское «доказательство» модели). Я обнаружил, что с помощью этих методов гораздо проще получить разумную модель, чем с нейронными сетями, так как средство избежать чрезмерной подгонки гораздо проще.

  3. Если вы действительно хотите использовать нейронную сеть, начните с (регуляризованной) сети с радиальными базисными функциями, а не с сетью типа Multiplayer Perceptron (MLP) с прямой связью.

  4. Если вы используете MLP, используйте регуляризацию. Если вы это сделаете, он будет менее чувствителен к выбору архитектуры, например, к оптимизации количества скрытых блоков. Вместо этого все, что вам нужно сделать, это выбрать правильное значение для параметра регуляризации. Байесовская «структура доказательств» Маккея обеспечивает хороший метод для настройки параметра регуляризации. Если вы используете регуляризацию, то количество наблюдений и количество переменных становится гораздо менее важной проблемой.

Чтобы обнаружить переопределение, просто выполните перекрестную проверку для проверки производительности обобщения.

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

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

Если вы являетесь пользователем MATLAB (как и я), я настоятельно рекомендую программное обеспечение NETLAB (Ян Набни и Крис Бишоп) или программное обеспечение, входящее в книгу Гаусса «Процесс машинного обучения» Расмуссена и Уильямса. Я могу настоятельно рекомендовать книгу Криса Бишопа «Нейронные сети для распознавания образов» всем, кто только начинает заниматься нейронными сетями. Это блестящая книга, в которой материал изложен с большой ясностью и минимальным уровнем математики, необходимой для реального понимания того, что вы делаете, и большая часть этого реализована в программном обеспечении NETLAB (которое также может работать под Octave).

НТН

PS Лучшим способом моделирования с помощью нейронной сети, вероятно, является использование байесовского подхода, основанного на гибридном методе Монте-Карло (HMC), разработанного Рэдфордом Нилом. В общем, проблемы начинаются в моделировании, когда вы пытаетесь оптимизировать некоторые параметры, и в итоге вы перебираете. Лучшее решение - никогда ничего не оптимизировать и вместо этого маргинализировать (интегрировать) по параметрам. К сожалению, эта интеграция не может быть выполнена аналитически, поэтому вам нужно использовать подходы, основанные на выборке. Тем не менее, это (а) вычислительно дорого и (б) немного «черного искусства» и требует глубокого понимания и опыта.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.