Каковы наилучшие методы нормализации и структура LSTM для прогнозирования выхода с скачками (выбросами)? - PullRequest
1 голос
/ 23 октября 2019

У меня есть случай прогнозирования временных рядов с десятью функциями (входами) и только одним выходом. Я использую 22 временных шага (историю возможностей) для прогнозирования на один шаг вперед с использованием LSTM. Кроме того, я применяю MinMaxScaler для нормализации ввода, но я не нормализую вывод. Выходные данные содержат некоторые редкие скачки (например, 20, 50 или более 100), но другие значения находятся в диапазоне от 0 до ~ 5 (все значения положительные). В этом случае важно правильно прогнозировать как нормальные, так и выбросные результаты, поэтому я не хочу пропустить скачки в моей модели прогнозирования. Я думаю, что если я использую MinMaxScaler для вывода, большинство значений будет что-то около нуля, но другие (выбросы) будут около единицы.

  • Каков наилучший способнормализовать вывод? Должен ли я оставить его без нормализации?

  • Какая структура LSTM лучше всего подходит для решения этой проблемы? (в настоящее время я использую LSTM с relu и плотный слой с relu в качестве последнего слоя, поэтому вывод будет положительным). Я думаю, что я должен правильно выбрать функции активации для этого случая.

1 Ответ

0 голосов
/ 24 октября 2019

Я думаю, прежде всего, вам следует выбрать метрику для измерения производительности. Например, вы хотите использовать MAE или MSE? Или какой-то другой показатель, который вы решите, исходя из поставленной задачи. Например, вы можете допустить большую ошибку для «редких прыжков», но не для обычных случаев, или наоборот. Как только вы определились с метрикой ошибки, в идеале вы должны установить в качестве функции стоимости, что сеть LSTM будет минимизирована.

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

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

Теперь вернемся к вашим вопросам:

  1. Я бы, по крайней мере, сделал бы среднее значение на выходе и использовал бы Плотный слой с линейным выходом.

  2. Архитектура, которая у вас есть, кажется хорошей, вы можете попробовать сложить 2-4 слоя LSTM, если считаете, что ваши входные данные имеют сложные временные зависимости.

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

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