Тема распознавания сигналов очень актуальна. Распознавание сигналов можно использовать в радиолокации для идентификации объектов, для задач принятия решений, медицине и во многих других областях.
Направления исследований
Я считаю, что исследование нужно вести в двух направлениях. Первое направление — это первичная обработка сигналов, в которой сигнал во временной области "s(t)" заменяется на функционалы.[5] Набор функционалов является вектором в пространстве признаков, по которому и происходит распознавание.
Второе направление это исследование и разработка самих классификаторов так как классы в пространстве признаков могут иметь нелинейное разделение. Нейронные сети типа персептрона способны разделять только линейно разделимые классы. А нейронные сети типа радиально-базисных сетей, способны разделять только классы со сферическим разделением.[4]
Часто эти два типа нейронных сетей комбинируют. Очень важно правильно выбрать пространство признаков, так как если будет излишняя информация о сигнале, она затруднит процедуру распознавания из-за того, что классы будут сложно отделимы: они могут быть как нелинейно отделимы, так и неразделимые вообще. Если данных будет недостаточно, то будет проблематично распознать объект, из-за того что одному набору данных будет соответствовать несколько сигналов. Для распознавания, в качестве признаков можно ввести статистические параметры сигналов.
Предлагаю ввести следующие критерии, по которым определять количество признаков:
1) Признаки должны отличаться для объектов принадлежащих разным классам.
2) Они должны совпадать по своим значением для объектов одного класса.
Полное совпадение статистических параметров сигналов возможно, только если сигнал эргодический и время наблюдения стремится к бесконечности. Неэргодический сигнал, или сигнал наблюдаемый конечное время образует некую область в многомерном пространстве признаков.[3]
Сигналы относящиеся к разным классам образуют свои области. Задача классификатора состоит в том, чтобы отделить одну область от другой. Задача первичной обработки сводится к описанию сигнала конечным вектором, таким образом, чтобы сигналы относящиеся к одному классу находились близко друг другу в многомерном Евклидовом пространстве, а сигналы, относящиеся к разным классам — далеко, другими словами чтобы выполнялась гипотеза компактности.[1]
Следует отметить, что сигналы почти всегда записаны на фоне шума, и методы распознавания на основе Фурье-преобразований или распознавание по отсчетам во временной области подразумевают в качестве первичной обработки фильтрацию сигнала.[5] Метод распознавания на основе статистик, не нуждается в фильтрации, если помеха является эргодическим случайным процессом. Т.к. всегда можно "вычесть" из модели сигнала с помехой модель помехи.[2]
Важно! Таким методом нельзя распознавать биологические сигналы. Т.к. биологические сигналы, являются очень специфичными, для их распознавания нужно учитывать механику процессов порождающих эти сигналы.[6] Скажем сигнал ЭКГ и сигнал ЭЭГ, исследуются различными методами.
Математические основы
На практике оказалось, что для решения большинства задач распознавания достаточно использовать всего 4 параметра для распознавания, такие как: мат. ожидание, СКО, эксцесс и асимметрия.
Для примера рассмотрим распознавание сигнала при следующих вариантах:
1) нет сигнала (только помеха)
2) синусоида + помеха
3) прямоугольный + помеха
4) радиоимпульс с прямоугольной огибающей + помеха.
Отношение сигнал/шум () в эксперименте равно 0.2.
Амплитуду сигнала возьмем равной 1 Вольт(чтобы не нормировать), и помеха в виде белого шума с нормальным распределением.
Для распознавания будем использовать двухслойный персептрон, с 4 входами, 4 выходами и 9 нейронами на скрытом слое(по теореме Колмогорова достаточное условие).[4]
Первичная обработка
Составим вектор в пространстве признаков, для начала определим модель шума:
[2,3]
Теперь составим вектор для сигнала с помехой:
m — математическое ожидание, D — дисперсия, — СКО, — эксцесс, — асимметрия.
Но это было в случае с непрерывными сигналами, и когда известно аналитическое выражение плотности вероятности f(x). С дискретным сигналом интеграл заменяется на сумму. И мы уже говорим не о статистических параметрах, а об их оценках.[2] А там вступают в силу погрешности определения оценок(о них мы поговорим в другой статье).
N — количество отсчетов.
После этого можем сформировать входной вектор для нейронной сети.
Переменные с индексом "x" — компоненты входного вектора, без индекса — характеристики сигнала с шумом, а с индексом"" модель шума. Для нормировки СКО делится еще 2.5.
Практическая реализация
Вот-так выглядит интерфейс тестовой программы.
В данном эксперименте вероятность верного распознавания составила 94.6%. Нейронная сеть обучалась методом градиентного спуска на выборке в 50 реализаций на сигнал, в сигнале 2001 отсчет.
Литература:
- Классификация. Гипотеза компактности
- Вентцель Е.С. Теория вероятностей: Учеб. для вузов. — 6-е изд. стер. — М.: Высш. шк., 1999.
- В.И. Тихонов. Статистическая радиотехника.
- Станислав Осовский. Нейронные сети для обработки информации.
- А.М. Дейч. Методы идентификации динамических объектов
- Синютин С. А. Проектирование микроконтроллерных систем съема, обработки и анализа электрокардиосигнала.
Комментарии (30)
Arastas
30.12.2016 23:50+3К сожалению, пост очень похож на статью из вузовского журнала, из которой на скорую руку был сделан текст на Хабр.
Zachar_5
31.12.2016 01:23+1Нет, на эту тему я статью в журнале не публиковал. Просто раньше публиковался в различных инженерных сборниках и привычка так писать осталась, но ничего плохого я в этом не вижу. Друг посоветовал некоторые статьи публиковать здесь, вот и написал. Такая стилистика здесь неприемлема?
32bit_me
31.12.2016 06:50+1Не вижу в статьях из журналов ничего плохого, нормальный стиль. Но хотелось бы больше подробностей.
satandyh
31.12.2016 13:54Было дело когда-то в институте писал работу по схожей теме («Создание ансамблей дискретных ортогональных сигналов с улучшенными корреляционными свойствами» кажется, или как-то так). Тоже была идея использовать нейронные сети, но таки эволюционные алгоритмы тогда одержали верх. А сейчас я что-то не вижу подобной тенденции. Неужели будущее за нейронными сетями?
Aelphy
31.12.2016 15:43Подскажите пожалуйста, как из теоремы Колмогорова следует достаточность такой конфигурации многослойного перцептрона ?
Zachar_5
31.12.2016 18:29Нейронную сеть можно рассматривать как многомерный аппроксиматор функций. Чтобы не пересказывать укажу литературу.(Станислав Осовский. Нейронные сети для обработки информации. М.: «Финансы и статистика». 2004 год. Страницы 90-92.)
veydlin
31.12.2016 18:33Пара вопросов:
1. Почему был выбран именно двухслойный персептрон? На сколько помню сетей много, а данный тип сети «средненький». Возможно другой мог бы дать ещё более точное распознавание
2. Не могли бы вы поделится исходным кодом?Zachar_5
31.12.2016 18:361) Смотря для каких задач, для обработки изображений хорошо подходят сверточные НС, для последовательностей — рекуррентные. Ну а тут вектор фильтровать не надо, и он имеет постоянную длину. Так что персептрон самое то.
Zachar_5
31.12.2016 18:38Исходным кодом чего, просто я использовал свой фреймворк, для статистики и для создания НС, его код не могу дать. А код какой-то части приложения, для лучшего понимания, пожалуйста.
sci_nov
А где сравнение с согласованным фильтром?
Zachar_5
Согласованный фильтр, может быть согласован только с одним сигналом, а тут ведется распознавание нескольких сигналов. С разной частотой, амплитудой, начальной фазой и даже формой.
nckma
То есть для распознавания нескольких сигналов нужно несколько согласованных фильтров. Не получается ли, что иметь несколько фильтров по затратам (вычислительным ресурсам) так же (или меньше?), чем нейронные сети?
sci_nov
Да, несколько фильтров. Для согласованного фильтра важна также и длительность импульса, помимо амплитуды.
Zachar_5
Для этого теста их бы пришлось использовать очень много, но в стат. радиотехнике доказано, что на фоне белого шума использование согласованного фильтра, при известных параметрах сигнала, является оптимальным. И там многое зависит от выбранного критерия обнаружения. Т.е. уровня z0. Где учитывается вероятность ложной тревоги и правильного обнаружения. Сделать объективное сравнение этих методов крайне сложно. Но если интересно, могу сделать и написать статью на эту тему.
sci_nov
Зачем? Есть же формула для вероятности ошибки при заданном отношении сигнал-шум, просто по ней посчитать, правда, здесь важна длительность сигнала, то есть в итоге его энергия, а важна ли она в нейронной сети — не знаю. Один фильтр на один сигнал, одна формула для вероятности ошибки. Согласованный фильтр — это КИХ-фильтр, на выходе которого требуется взять всего один отсчет из N, где N — порядок фильтра, поэтому число операций можно свести к O(N).
Zachar_5
К сожалению, я согласованными фильтрами занимался только в рамках учебы, но точно помню, что для принятия решений, мы после СФ, ставили пороговое устройство. Сам порог рассчитывался в зависимости от выбранного критерия и функции риска. И для перекрытия того же спектра сигналов нужно было бы использовать бесконечное количество таких фильтров. Вы можете скинуть ссылки по этой теме, я почитаю? Насчет КИХ Вы правы, сейчас посмотрел конспекты. Правда мы их только аналоговые проходили. И я после праздников сделаю сравнение, этих методов.
sci_nov
Берите любую книгу по обнаружению и различению сигналов, классиков статистической радиотехники Тихонов, Левин и т. д. В качестве критерия можно выбрать минимум полной вероятности ошибки, когда порог выбирается по пересечению двух плотностей вероятости. Моделируете в дискретном виде, задавая импульсную характристику согласованного фильтра в виде зеркально отраженного идеального сигнала, который собираетесь обнаруживать.
Zachar_5
Это понятно, книгу Тихонова я прочитал, по ней собственно и учились. Не понятно другое, как Вы получаете сложность O(N), когда алгоритм быстрой свертки имеет сложность O(3*N*log_2(N)).
sci_nov
Загоняете в регистр N отсчетов и только потом считаете сумму произведений, получая число, которое сравнивается с порогом.
Zachar_5
Вы есть в вк?
sci_nov
Yes, of course, https://vk.com/id354040982
Zachar_5
Нет не получится, нейронная сеть не так уж и много ресурсов хавает, намного меньше, чем свертка сигналов, к тому же возникают вопросы:
1) Сколько фильтров ставить;
2) Какой тип использовать, КИХ или БИХ;
К тому же их довольно сложно рассчитывать. Он же состоит из СФОИ, линий задержки и сумматора.