Как заставить выход RNN стать более плавным? - PullRequest
0 голосов
/ 17 июня 2019

Я использую экспериментальные данные с Keras LSTM для моделирования сложной физической системы. Проблема в том, что выходное значение имеет тенденцию резко меняться между двумя точками в определенных точках. Все физические системы должны демонстрировать некоторое непрерывное / гладкое поведение. Как мне сделать вывод более плавным, есть ли какой-то слой или регуляризация?

Я попытался ввести регуляризацию l1-l2, отсевы ... Они помогают, но я не смог получить хорошие результаты. Что я ищу, так это какой-то слой, который ограничивает внезапные изменения значений. Кстати, я работаю с довольно небольшим количеством данных; Я использую 2 серии для обучения и проверки, 1 для тестирования.

Структура сети: я получаю аналогичные результаты для 2 LSTM + 1 Плотного слоя или 1 LSTM + 1 Плотного слоя. (С / без выпадающих слоев между LSTM и Dense и некоторой регуляризацией l2)

Данные временного ряда представляют некоторые измерения. Измерения проводятся через короткие промежутки времени, в результате чего время от времени появляются повторяющиеся значения. Я также удаляю некоторые повторяющиеся строки. (Я связал их вместе, а затем удалил строки относительно одного из входов. Я попытался сделать это для нескольких входов. Но, как вы можете понять, я не удалил все повторяющиеся строки При таком подходе это может быть источником проблемы?)

Я использую sklearn.StandardScaler или sklearn.MinMaxScaler для нормализации входных данных, небольшая разница между ними.

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

enter image description here

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