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