Требуются предложения по обобщению регрессионной нейронной сети - PullRequest
0 голосов
/ 01 февраля 2019

Я обучил глубокую нейронную сеть из нескольких сотен функций, которые анализируют геоданные города и вычисляют оценку для выборки на основе профиля между наблюдателем и целевым местоположением.То есть, чем больше расстояние между наблюдателем и целью, тем больше возможностей у меня будет для этого образца.Когда я тренирую свой NN с образцами из части города и тестирую с другими частями того же города, NN работает очень хорошо, но когда я применяю свой NN к другим городам, NN начинает давать высокое стандартное отклонение ошибок, особеннов случаях, когда образцы города, к которому я применяю NN, обычно имеют больше возможностей, чем образцы города, которые я использовал для обучения этого NN.Чтобы справиться с этим, я добавил 10% пустых выборок на тренинге, что позволило уменьшить ошибки вдвое, но оставшиеся ошибки все еще слишком велики по сравнению с решениями, рассчитанными вручную.Могу ли я дать совет по обобщению регрессионной нейронной сети?Спасибо!

1 Ответ

0 голосов
/ 02 февраля 2019

Я собирался попросить больше примеров ваших данных и вашей сети, но это на самом деле не имело бы значения.

Как улучшить обобщение регрессионной нейронной сети?

Вы можете использовать те же вещи, что и для классификации нейронной сети.Единственное отличие состоит в том, что он делает с числами, которые выводятся из предпоследнего слоя!

Я добавил 10% пустых выборок в обучении, что позволило уменьшить ошибки вдвое,

Я не совсем понял, что это значит (поэтому мне все равно было бы интересно, если бы вы расширили свой вопрос некоторыми более конкретными деталями), но это немного похоже на использование отсева.В Keras вы добавляете слой Dropout() между вашими другими слоями:

...
model.append(Dense(...))
model.append(Dropout(0.2))
model.append(Dense(...))
...

0.2 означает выпадение 20%, что является хорошей отправной точкой: вы можете поэкспериментировать со значениями до 0,5.Вы могли бы прочитать оригинальную статью или , эта статья , кажется, является хорошим введением с примерами keras.

Другой общий метод заключается в добавлении некоторого L1 и / или L2регуляризация, здесь ручной ввод .

Я обычно использую поиск по сетке, чтобы экспериментировать с каждым из них, например, пробуя каждый из 0, 1e-6, 1e-5 для каждого из L1и L2, и каждый из 0, 0,2, 0,4 (обычно используют одно и то же значение для всех слоев, для простоты) для отсева.(Если 1e-5 лучше, я мог бы также поэкспериментировать с 5e-4 и 1e-4.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...