Добрый день!
Я решаю задачу определения места повреждения на линии электропередачи. Для этого я хочу использовать сверочную нейронную сеть, однако у меня возникают проблемы.
Перед описанием проблем я бы хотел пояснить процессы, которые лежат в основе моей задачи: на линии электропередачи в месте повреждения X возникают два импульса, они с одинаковой и постоянной скоростью V распространяются в обе стороны и отражаются на концах линии электропередачи и в месте повреждения (рис. 1). Временная характеристика распространения этих импульсов вдоль линии электропередачи показана зелеными линиями. Я измеряю эти импульсы в начале линии – измеренный сигнал показан слева. Как видно из рис. 1, между расстоянием X и моментами возникновения импульсов в сигнале есть взаимосвязь, например:
X=(t2-t1)*V/2 или X=(t4-t2)*V/2 и т.д., где V – скорость распространения импульса. Чем больше расстояние проходит импульс, тем его величина меньше.
Я хочу, чтобы сверточная нейронная сеть научилась определять расстояние X.
Я создаю датасет путем моделирования места повреждения X вдоль всей длины линии L с маленьким шагом. Я получаю 12720 сигналов, 6360 я использую для обучения, 3180 для валидации и 3180 для теста.
Каждый сигнал я преобразую в изображение. Для этого я использую непрерывное вейвлет преобразование: вейвлет Хаара и 8 уровней разложения. Пример приведен на рисунке 2.
Я пробовал разные варианты конфигурации сверточной нейронной сети, сейчас она имеет следующий вид:
Мои параметры обучения: стохастический градиентный спуск, количество эпох – 400, размер мини-батча – 1590, скорость обучения – 0.00001.
Результат обучения плохой, среднеквадратическая ошибка в 5 раз больше, чем шаг между обучающими данными, что говорит о том, что сеть не обобщает данные, а пытается заучить их. Ошибка валидации не снижается.
Я пробовал менять параметры обучения, делал алгоритм adam, использовал L2-регуляризацию и дроп-аут, убирал макспулинг, однако все равно не могу добиться того, чтобы регрессия была точной и сеть умела определять место повреждения в промежуточных точках. Что можно изменить в моей сети и в моих исходных данных, чтобы был лучший результат? Может быть использовать другой способ формирования картинки для обучения?