Дипломная работа: Разработка программы распознавания модуляции радиосигнала в сложной помеховой обстановке

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Создание обучающих выборок

Для создания обучающей выборки потребовалось написать генератор отсчетов сигнала. Для генерирования сигнала с нужным типом модуляции на вход генератору подается множество, соответствующее сигнальному созвездию данного типа модуляции. Далее генератор случайных чисел выбирает пар (в данном случае ) синфазной и квадратурной частей сигнала. В случае если нужно добавить в сигнал шум, то ГСЧ генерирует число из заданного диапазона уровня шума и угол, на который итоговое отклонение будет повернуто относительно горизонтали. В итоге было создано 30 выборок с различными типами модуляций и различным уровнем шума.

№ выборки

Типы модуляции входящие в выборку

Уровень шума (в единицах амплитуды)

Количество сигналов в выборке

1

QPSK, 16-PSK

0

10000

2

QPSK, 16-PSK

{-0.1, 0.1}

10000

3

QPSK, 16-PSK

{-0.25, 0.25}

10000

4

QPSK, 16-PSK

{-0.5, 0.5}

10000

5

QPSK, 16-PSK

{-1, 1}

10000

6

BPSK, QPSK, 8-PSK, 16-PSK

0

10000

7

BPSK, QPSK, 8-PSK, 16-PSK

{-0.1, 0.1}

10000

8

BPSK, QPSK, 8-PSK, 16-PSK

{-0.25, 0.25}

10000

9

BPSK, QPSK, 8-PSK, 16-PSK

{-0.5, 0.5}

10000

10

BPSK, QPSK, 8-PSK, 16-PSK

{-1, 1}

10000

11

16-APSK, 64-APSK, 256-APSK

0

10000

12

16-APSK, 64-APSK, 256-APSK

{-0.1, 0.1}

10000

13

16-APSK, 64-APSK, 256-APSK

{-0.25, 0.25}

10000

14

16-APSK, 64-APSK, 256-APSK

{-0.5, 0.5}

10000

15

16-APSK, 64-APSK, 256-APSK

{-1, 1}

10000

16

16-APSK, 32-APSK, 64-APSK, 128-APSK, 256-APSK

0

10000

17

16-APSK, 32-APSK, 64-APSK, 128-APSK, 256-APSK

{-0.1, 0.1}

10000

18

16-APSK, 32-APSK, 64-APSK, 128-APSK, 256-APSK

{-0.25, 0.25}

10000

19

16-APSK, 32-APSK, 64-APSK, 128-APSK, 256-APSK

{-0.5, 0.5}

10000

20

16-APSK, 32-APSK, 64-APSK, 128-APSK, 256-APSK

{-1, 1}

10000

21

16-QAM, 64-QAM, 256-QAM

0

10000

22

16-QAM, 64-QAM, 256-QAM

{-0.1, 0.1}

10000

23

16-QAM, 64-QAM, 256-QAM

{-0.25, 0.25}

10000

24

16-QAM, 64-QAM, 256-QAM

{-0.5, 0.5}

10000

25

16-QAM, 64-QAM, 256-QAM

{-1, 1}

10000

26

8-QAM, 16-QAM, 32-QAM, 64-QAM, 128-QAM, 256-QAM

0

10000

27

8-QAM, 16-QAM, 32-QAM, 64-QAM, 128-QAM, 256-QAM

{-0.1, 0.1}

10000

28

8-QAM, 16-QAM, 32-QAM, 64-QAM, 128-QAM, 256-QAM

{-0.25, 0.25}

10000

29

8-QAM, 16-QAM, 32-QAM, 64-QAM, 128-QAM, 256-QAM

{-0.5, 0.5}

10000

30

8-QAM, 16-QAM, 32-QAM, 64-QAM, 128-QAM, 256-QAM

{-1, 1}

10000

Обзор функций активации

Одним из важнейших аспектов любой нейронной сети является функция активации, которая привносит в сеть нелинейность. Вектор входных данных умножается на матрицу весов. Затем полученный вектор суммируется. Полученное число подается на вход функции активации. Функция активации выдает выходной сигнал искусственного нейрона. В данной работе было рассмотрено восемь из наиболее часто встречающихся функций активации.

ReLU

“Выпрямитель” (Rectifier) является наиболее часто используемой функцией активации в моделях глубокого обучения. Функция возвращает 0, если она получает какие-либо отрицательные входные данные, но для любого положительного значения она возвращает это значение обратно. Нейроны с данной функцией активации называются ReLU (rectified linear unit) 14..

Соответственно формула данной функции выглядит так:

График данной функции:

Удивительно, что такая простая функция, которая состоит из двух линейных частей, может позволить модели так хорошо учитывать нелинейности и взаимодействия, но функция ReLU прекрасно работает в большинстве случаев и в результате очень широко используется.

Важным свойством любой функции активации является ее нелинейность. Функция является нелинейной, если наклон не постоянен. Таким образом, функция ReLU будет нелинейной около 0, но угловой коэффициент всегда равен 0 для отрицательных значений и 1 для положительных значений. Это довольно ограниченный тип нелинейности, но есть две особенности в строении нейронных сетей, которые позволяют нам создавать много разных типов нелинейностей из того, как мы комбинируем нейроны с данной функцией активации.

Во-первых, в большинстве случаев нейроны имеют смещение. Смещение -- это константа, которая определяется во время обучения модели. В качестве примера рассмотрим отдельный нейрон. Сумму входных данных умноженных на вектор весов назовем . Возьмем в качестве смещения некоторое число . Тогда выход нейрона будет . В таком случае, если меньше , то выход нейрона будет равен 0, а угловой коэффициент будет равен 0. Если больше , то выход нейрона будет равен , а угловой коэффициент будет равен 1. Таким образом благодаря смещению мы можем менять точку изменения углового коэффициента.

Во-вторых, нейронные сети состоят из множества нейронов. Каждый нейрон (даже в пределах одного слоя) может иметь различное значение для своего смещения. Таким образом каждый нейрон может изменять точку изменения углового коэффициента для одинакового входа.

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

ELU

Функция активации Exponential Linear Unit (ELU) является дальнейшем развитием ReLU. Исследования показывают, что использование этой функции позволяет, как правило, быстрее получить требуемый результат и дает более точный итоговый результат. В отличие от других функций активации, ELU имеет дополнительный фиксированный параметр , который должен быть положительным числом 15..

Формула данной функции:

График (при ):

ELU очень похож на ReLU, кроме отрицательных входов. Обе функции дают идентичный выход для неотрицательных входных данных. С другой стороны, ELU медленно сглаживается до тех пор, пока его выход не станет равным , тогда как ReLU резко сглаживается.

Таким образом, ELU является сильной альтернативой ReLU в качестве функции активации в нейронных сетях. В отличие от ReLU, ELU может давать отрицательные результаты.

SELU

Искусственные нейронные сети обучаются методом обратного распространения ошибки. Основная идея заключается в том, что сеть обновляет свои веса и смещения в направлении, указанном градиентами. Потенциальная проблема с обратным распространением состоит в том, что градиенты могут стать слишком маленькими. Когда ваша сеть страдает от исчезающих градиентов, веса не будут корректироваться, и обучение останавливается. Нейронные сети с большим количеством слоев при обучении перемножают множество градиентов. Если градиенты близки к нулю, то результат умножения стремится к нулю. Это, в свою очередь, подталкивает другие градиенты ближе к нулю и так далее.

Рассмотренная выше функция ReLU заменяет отрицательные значения на ноль и оставляет положительные значения без изменений. Градиент этой функции активации настолько прост, насколько это возможно. Это ноль для значений меньше нуля, и единица для положительных. По этой причине ReLU предотвращает исчезновение градиентов. Градиентов близких к нулю нет, следовательно проблемы с затуханием градиентов нет.

Тем не менее, существует потенциальная проблема с ReLU: нейрон с этой функцией активации может попасть в мертвое состояние. Может возникнуть ситуация, при которой изменение весов настолько велико, а результат на следующей итерации настолько мал, что функция активации застревает с левой стороны от нуля. Уязвимая ячейка больше не может способствовать изучению сети, и ее градиент остается нулевым. Если это происходит со многими нейронами в вашей сети, то мощность обученной сети остается ниже ее теоретических возможностей. Проблемы с исчезающими градиентами больше нет, но теперь есть проблема с умирающими ReLU.

Один из вариантов решения этой проблемы это нормализация выхода функции активации, но есть и другой подход - функция активации, которая выводит уже нормализованные значения.

Одна из таких функций это SELU?(scaled exponential linear units) 16..

Ее формула:

SELU -- это своего рода ELU, но с небольшим уклоном. В ней есть два фиксированных параметра и . Они не являются гиперпараметрами для принятия решений.

Если данные масштабированы, то для получения нулевого среднего значения и единичного среднего отклонения, значения параметров и должны составлять и соответственно.

График функции при данных значениях параметров и :

Softsign

Softsign это еще одна нелинейная функция 17..

Ее формула:

Ее график:

В качестве функции активации ее можно рассматривать как альтернативу гиперболическому тангенсу. Обе функции масштабируют выход в диапазоне .

Softplus

Для работы алгоритма обратного распространения ошибки нужно знать производную функции активации. По этой причине одно из важных свойств функции активации это ее дифференцируемость. Например, функции скачкообразного (ступенчатого) типа абсолютно бесполезны для обратного распространения ошибки, так как не имеют значимой производной. Поэтому функции активации сигмоидального и гиперболического типа пользуются большой популярностью. Одна из таких функций - softplus 18..

ЕЕ формула:

ЕЕ график:

Данная функция имеет интересную производную. Найдем ее:

При внимательном рассмотрении видно, что производная функции softplus это сигмоида. О ней мы поговорим ниже.

Hardtanh

Кусочно-заданная функция hardtanh - это функция активации на основе гиперболического тангенса 19..

Формула:

График:

Hardsigmoid

Еще одна кусочно-заданная функция активации это hardsigmoid. Она является обобщением сигмоидальной функции. Так как функция состоит из трех линейных частей то её гораздо проще и быстрее вычислить чем обычную сигмоиду.

Формула:

График:

Sigmoid

Сигмоидальная функция преобразует любое действительное число из диапазона в диапазон 20.. Посмотрим на её формулу:

И ее график:

Эта функция дифференцируема, найдем ее производную:

Здесь мы находим интересную особенность: производная сигмоидальной функции выражается через саму сигмоидальную функцию. Это позволяет производить более быстрые вычисления при работе алгоритма обратного распространения ошибки.

Сигмоидальная функция монотонна, но ее производная не монотонна.

Также сигмоидальная функция используется в логистической регрессии. С ее помощью решается задача классификации с двумя классами.

Обучение нейронных сетей

Обучение и выбор лучшей конфигурации нейронной сети для каждого из трех рассматриваемых видов модуляции происходило в два этапа.

На первом рассматривалась выборки с типами модуляции с четной степенью позиционности. В начале обучение происходило на выборке с не зашумленными сигналами. Для обучения выбиралось 2000 сигналов из выборки. Максимальное количество раундов обучения равнялось 32, а размер группы данных равнялся 16. Из 64 полученных нейронных сетей выбиралось 10 конфигураций с лучшей точностью распознавания. Затем выбранные конфигурации обучались на выборках с зашумленными сигналами.

На втором этапе рассматривались выборки как с четными, так и с нечетными степенями. Как и на первом этапе, в начале обучение происходило на не зашумленных сигналах с такими же параметрами обучения и выбиралось 10 лучший конфигураций. Для улучшения точности распознавания выбранные конфигурации обучались с другими параметрами обучения. Для обучения выбиралось 7000 сигналов из выборки. Максимальное количество раундов обучения равнялось 48, а размер группы данных равнялся 32. Затем вновь, как и на первом этапе, выбранные конфигурации обучались на выборках с зашумленными сигналами.

PSK, M=2^(2n)

Без шума

Первая функция активации

Вторая функция активации

Точность распознавания

1

ReLU

ReLU

0,899125

2

ReLU

ELU

0,94225

3

ReLU

SELU

0,93875

4

ReLU

SoftSign

0,926375

5

ReLU

SoftPlus

0,941125

6

ReLU

HardTanh

0,9275

7

ReLU

HardSigmoid

0,932625

8

ReLU

Sigmoid

0,9425

9

ELU

ReLU

0,955875

10

ELU

ELU

0,96125

11

ELU

SELU

0,9575

12

ELU

SoftSign

0,954875

13

ELU

SoftPlus

0,955

14

ELU

HardTanh

0,95425

15

ELU

HardSigmoid

0,954375

16

ELU

Sigmoid

0,9545

17

SELU

ReLU

0,927875

18

SELU

ELU

0,9365

19

SELU

SELU

0,92825

20

SELU

SoftSign

0,920625

21

SELU

SoftPlus

0,9355

22

SELU

HardTanh

0,914625

23

SELU

HardSigmoid

0,943875

24

SELU

Sigmoid

0,943625

25

SoftSign

ReLU

0,747375

26

SoftSign

ELU

0,7265

27

SoftSign

SELU

0,706375

28

SoftSign

SoftSign

0,71725

29

SoftSign

SoftPlus

0,74875

30

SoftSign

HardTanh

0,71125

31

SoftSign

HardSigmoid

0,74

32

SoftSign

Sigmoid

0,73

33

SoftPlus

ReLU

0,835125

34

SoftPlus

ELU

0,906625

35

SoftPlus

SELU

0,895

36

SoftPlus

SoftSign

0,9085

37

SoftPlus

SoftPlus

0,925375

38

SoftPlus

HardTanh

0,905

39

SoftPlus

HardSigmoid

0,90325

40

SoftPlus

Sigmoid

0,910125

41

HardTanh

ReLU

0,74475

42

HardTanh

ELU

0,724625

43

HardTanh

SELU

0,722125

44

HardTanh

SoftSign

0,70775

45

HardTanh

SoftPlus

0,762

46

HardTanh

HardTanh

0,7075

47

HardTanh

HardSigmoid

0,742625

48

HardTanh

Sigmoid

0,7295

49

HardSigmoid

ReLU

0,782125

50

HardSigmoid

ELU

0,8015

51

HardSigmoid

SELU

0,800375

52

HardSigmoid

SoftSign

0,795375

53

HardSigmoid

SoftPlus

0,805875

54

HardSigmoid

HardTanh

0,798375

55

HardSigmoid

HardSigmoid

0,804

56

HardSigmoid

Sigmoid

0,799625

57

Sigmoid

ReLU

0,73925

58

Sigmoid

ELU

0,804375

59

Sigmoid

SELU

0,79575

60

Sigmoid

SoftSign

0,802875

61

Sigmoid

SoftPlus

0,794125

62

Sigmoid

HardTanh

0,790875

63

Sigmoid

HardSigmoid

0,79

64

Sigmoid

Sigmoid

0,773875

Источник: https://otherreferats.allbest.ru/download/1180021/