Почему увеличение количества функций приводит к ухудшению производительности нейронной сети?

У меня проблема регрессии, и я настроил многослойную нейронную сеть с помощью Keras. В исходном наборе данных было 286 функций, и с использованием 20 эпох NN сходилась к потере MSE ~ 0,0009. Это использует оптимизатор Адама.

Затем я добавил еще три функции, и, используя ту же конфигурацию, NN не будет сходиться. После 1 эпохи он застревает с потерей 0,003, что значительно хуже.

Убедившись, что новые функции представлены правильно, я безуспешно пробовал следующее:

  • регулировка количества слоев
  • регулировка количества нейронов в каждом слое
  • включая отсеиваемые слои
  • регулировка скорости обучения

Вот моя первоначальная конфигурация:

model = Sequential()
model.add(Dense(300, activation='relu', 
input_dim=training_set.shape[1]))
model.add(Dense(100, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(optimizer='Adam',loss='mse')

У кого-нибудь есть идеи?

какого типа 3 новые функции? Значительно ли отличаются значения характеристик от первых 286 функций? Возможно, вам нужно по-другому нормализовать / стандартизировать ввод с помощью недавно добавленных функций.

dportman 01.05.2018 18:56

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

user1753640 01.05.2018 19:05

несколько вопросов: 1. это регресс таймсерии? 2. соответствуют ли три новые функции тому, что вы пытаетесь предсказать? 3. Сколько тренировочных данных у вас есть? Данные высокой размерности требуют большего количества обучающих данных, модели b / c пострадают от проклятия размерности

Primusa 01.05.2018 19:30

Я пытаюсь предсказать, сколько времени займет поездка из одной части города в другую, и модель действительно включает временные ряды. Добавленные мною функции были связаны с самым быстрым маршрутом, то есть кратчайшим расстоянием, самым быстрым временем в пути и количеством «шагов». У меня ~ 1,5 млн строк обучающих данных

user1753640 01.05.2018 21:30

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

Craig.Li 02.05.2018 01:57
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
1
5
560
0

Другие вопросы по теме