@LexFerdinand

Как улучшить мою сверточную нейронную сеть?

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

В наше время все хотят затащить в проект НС потому что это стильно и модно и кроме того наличие тега НС очень сильно может впечатлить заказчика. Но может быть настало время переосмысления НС и рассмотрения старых добрых проверенных методов?

Почему-бы не попробовать авто-корреляционную функцию. И если она будет лучше и проще - разве это не будет решением задачи?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы