Адаптивные нейронные сетевые фильтры

ADALINE (адаптивный линейный нейрон) сети, обсуждаемые в этой теме, аналогичны перцептрону, но их передаточная функция линейна, а не жестко ограничивает. Это позволяет их выходам принимать любое значение, в то время как выход перцептрона ограничивается 0 или 1. И ADALINE, и перцептрон могут решить только линейно разделяемые задачи. Однако здесь используется правило обучения LMS (методом наименьших квадратов), которое намного мощнее, чем правило обучения перцептронов. Правило обучения LMS, или Widrow-Hoff, минимизирует среднюю квадратную ошибку и, таким образом, перемещает контуры принятия решений, насколько это возможно, от шаблонов обучения.

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

Новаторская работа в этой области была проделана Видроу и Гоффом, которые дали имя ADALINE для адаптивных линейных элементов. Основной ссылкой на эту тему являются Widrow, B. и S.D. Стернс, адаптивная обработка сигналов, Нью-Йорк, Prentice Hall, 1985.

Адаптивная подготовка самоорганизующихся и конкурентоспособных сетей также рассматривается в этом разделе.

Адаптивные функции

В этом разделе описывается функция adapt, который изменяет веса и смещения сети постепенно во время обучения.

Модель линейного нейрона

Линейный нейрон с R входами показан ниже.

Эта сеть имеет ту же основную структуру, что и перцептрон. Единственное различие заключается в том, что линейный нейрон использует линейную передаточную функцию, названную purelin.

Линейная передаточная функция вычисляет выход нейрона, просто возвращая переданное ему значение.

α = purelin (n) = purelin (Wp + b) = Wp + b

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

Адаптивная архитектура линейной сети

Сеть ADALINE, показанная ниже, имеет один слой S нейронов, соединенных с R входами через матрицу весов W.

Эта сеть иногда называется MADALINE для многих адалинов. Обратите внимание, что рисунок справа задает S выходной вектор a -length.

Правило Widrow-Hoff может обучать только однослойные линейные сети. Однако это не является большим недостатком, поскольку однослойные линейные сети так же способны, как и многослойные линейные сети. Для каждой многослойной линейной сети существует эквивалентная однослойная линейная сеть.

Один АДАЛИН (линейный слой)

Рассмотрим одну ADALINE с двумя входами. Следующий рисунок показывает схему для этой сети.

Матрица веса W в этом случае имеет только одну строку. Выходной выход сети

α = purelin (n) = purelin (Wp + b) = Wp + b

или

α = w 1,1 p 1 + w 1,2 p 2 + b

Как и перцептрон, ADALINE имеет контур принятия решения, которая определяется входными векторами, для которых чистый входной n равен нулю. Для n = 0 уравнение Wp + b = 0 задает такой контур принятия решения, как показано ниже (адаптировано с благодарностью от [HDB96]).

Входные векторы в верхней правой серой области приводят к выходу, большему 0. Входные векторы в нижней левой белой области приводят к выходу менее 0. Таким образом, ADALINE может использоваться для классификации объектов по двум категориям.

Однако ADALINE может классифицировать объекты таким образом только, когда объекты линейно разделимы. Таким образом, ADALINE имеет те же ограничения, что и перцептрон.

Вы можете создать сеть, подобную той, которая показана с помощью этой команды:

net = linearlayer;
net = configure(net,[0;0],[0]);

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

Веса и смещения сети по умолчанию равны нулю. Текущие значения можно увидеть с помощью команд:

W = net.IW{1,1}
W =
	 0	 0

и

b = net.b{1}
b =
	 0

Вы также можете назначить произвольные значения весам и смещению, такие как 2 и 3 для весов и − 4 для смещения:

net.IW{1,1} = [2 3];
net.b{1} = -4;

Можно симулировать ADALINE для конкретного входного вектора.

p = [5; 6];
a = sim(net,p)
a =
    24

Подводя итог, можно создать сеть ADALINE с linearlayer, настройте его элементы, как вы хотите, и моделируйте его с sim.

Наименьшая квадратная ошибка

Как и правило обучения перцептронов, алгоритм наименьшей средней квадратной ошибки (LMS) является примером контролируемого обучения, в котором правило обучения обеспечивается набором примеров желаемого сетевого поведения.

{p1,t1},{p2,t2},{pQ,tQ}

Здесь p q является входом в сеть, и t q является соответствующим целевым выходом. Когда каждый вход применяется к сети, выход сети сравнивается с целевым. Ошибка вычисляется как различие между целевым выходом и сетевым выходом. Цель состоит в том, чтобы минимизировать среднее значение суммы этих ошибок.

mse=1Qk=1Qe(k)2=1Qk=1Qt(k)α(k))2

Этот LMS-алгоритм регулирует веса и смещения ADALINE так, чтобы минимизировать эту среднюю квадратную ошибку.

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

Дополнительные сведения об этой теме см. в главе 10 [HDB96].

LMS-алгоритм (learnwh)

Адаптивные сети будут использовать LMS-алгоритм или алгоритм обучения Widrow-Hoff, основанный на приблизительной процедуре наискорейшего спуска. Здесь снова адаптивные линейные сети обучаются на примерах правильного поведения.

Этот LMS-алгоритм, показанный здесь, подробно обсуждается в Linear Neural Networks.

W (k + 1) = W (k) + 2αe (k) pT(<reservedrangesplaceholder0>)

b (k + 1) = b (k) + 2αe (k)

Адаптивная фильтрация (адаптация)

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

Соединенная линия задержки

Вам нужен новый компонент, выделенная линия задержки, чтобы в полной мере использовать сеть ADALINE. Такая линия задержки показана на следующем рисунке. Входной сигнал входит слева и проходит через N -1 задержки. Выход линии задержки (TDL) является N-размерным вектором, составленным из входного сигнала в текущее время, предыдущего входного сигнала и т.д.

Адаптивный фильтр

Можно объединить выделенную линию задержки с сетью ADALINE, чтобы создать адаптивный фильтр, показанный на следующем рисунке.

Выход фильтра задается как

α(k)=purelin(Wp+b)=i=1Rw1,αi(ki+1)+b

При цифровой обработке сигналов эта сеть упоминается как фильтр с конечной импульсной характеристикой (КИХ) [WiSt85]. Взгляните на код, используемый для генерации и моделирования такой адаптивной сети.

Пример адаптивного фильтра

Во-первых, задайте новую линейную сеть, используя linearlayer.

Предположим, что линейный слой имеет один нейрон с одним входом и задержкой отвода 0, 1 и 2 задержки.

net = linearlayer([0 1 2]);
net = configure(net,0,0);

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

Можно задать различные веса и значения смещения с

net.IW{1,1} = [7 8 9];
net.b{1} = [0];

Наконец, определите начальные значения выходов задержек как

pi = {1 2};

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

Чтобы настроить вход, предположим, что входные скаляры приходят в последовательности: сначала значение 3, затем значение 4, затем значение 5 и, наконец, значение 6. Можно указать эту последовательность, определив значения как элементы массива ячеек в фигурных скобках.

p = {3 4 5 6};

Теперь у вас есть сеть и последовательность входов. Симулируйте сеть, чтобы увидеть, что ее выход является функцией времени.

[a,pf] = sim(net,p,pi)

Эта симуляция приводит к последовательности выхода

a
    [46]    [70]    [94]    [118]

и конечные значения для выходов задержки

pf
    [5]    [6]

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

Только что заданная сеть может быть обучена с помощью функции adapt для создания конкретной выходной последовательности. Предположим, например, вы хотите, чтобы сеть произвела последовательность значений 10, 20, 30, 40.

t = {10 20 30 40};

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

Пусть сеть адаптируется на 10 проходов по данным.

for i = 1:10
    [net,y,E,pf,af] = adapt(net,p,t,pi);
end

Этот код возвращает конечные веса, смещение и выходную последовательность, показанные здесь.

wts = net.IW{1,1}
wts =
    0.5059    3.1053    5.7046
bias = net.b{1}
bias =
   -1.5993
y
y = 
    [11.8558]    [20.7735]    [29.6679]    [39.0036]

Предположительно, если бы вы провели дополнительные проходы, выходная последовательность была бы еще ближе к желаемым значениям 10, 20, 30 и 40.

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

Пример предсказания

Предположим, что вы хотите использовать адаптивный фильтр для предсказания следующего значения стационарного случайного процесса, p (t). Для выполнения этого предсказания можно использовать сеть, показанную на следующем рисунке.

Сигнал, который будет предсказан, p (t), входит слева в выделенную линию задержки. Предыдущие два значения p (t) доступны в качестве выходов от выделенной линии задержки. Сеть используетadapt изменять веса на каждом временном шаге так, чтобы минимизировать e ошибок (t) на крайнем правом углу. Если эта ошибка 0, выходной a сети (t) в точности равен p (t), и сеть сделала свое предсказание правильно.

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

Глава 10 [HDB96] представляет эту проблему, проходит анализ и показывает траекторию веса во время обучения. Оптимальные веса сеть находит самостоятельно без каких-либо трудностей.

Можно также попробовать пример nnd10nc чтобы увидеть пример адаптивной программы шумоподавления в действии. Этот пример позволяет вам выбрать скорость и импульс обучения (см. Multilayer Shallow Neural Networks and Backpropagation Training), и показывает траекторию обучения, и исходные и сигналы отмены в зависимости от времени.

Пример шумоподавления

Рассмотрим пилота в самолете. Когда пилот говорит в микрофон, шум двигателя в кабине объединяется с голосовым сигналом. Этот дополнительный шум делает полученный сигнал услышанным пассажирами низкого качества. Цель состоит в том, чтобы получить сигнал, который содержит голос пилота, но не шум двигателя. Можно отменить шум с помощью адаптивного фильтра, если вы получите выборку шума двигателя и примените его как вход к адаптивному фильтру.

Как показано на предыдущем рисунке, вы адаптивно обучаете нейронную линейную сеть, чтобы предсказать объединенный сигнал m пилот-сигнала/двигателя от n сигнала двигателя. n сигнала двигателя ничего не сообщает адаптивной сети о голосовом сигнале пилота, содержащемся в m. Однако n сигнала двигателя предоставляет сетевую информацию, которую он может использовать для предсказания вклада двигателя в m сигнала управления/двигателя.

Сеть делает все возможное, чтобы вывести m адаптивно. В этом случае сеть может только предсказать шум интерференции двигателя в m сигнала управления/двигателя. Сетевая ошибка, e равна m, сигнал пилот-сигнала/двигателя, минус предсказанный сигнал шума двигателя. Таким образом, e содержит только голос пилота. Линейная адаптивная сеть адаптивно учится отменять шум двигателя.

Такое адаптивное шумоподавление обычно работает лучше, чем классический фильтр, потому что оно вычитает из сигнала, а не фильтрует его шум сигнального m.

Попробуйте Адаптивное Шумоподавление для примера адаптивного шумоподавления.

Адаптивные фильтры с несколькими нейронами

Вы можете захотеть использовать более одного нейрона в адаптивной системе, поэтому вам нужна некоторое дополнительное обозначение. Можно использовать выделенную линию задержки с S линейными нейронами, как показано на следующем рисунке.

Кроме того, можно представлять эту же сеть в сокращенной форме.

Если вы хотите показать больше деталей выделенной линии задержки - и задержек не слишком много - можно использовать следующее обозначение:

Здесь выделенная линия задержки отправляет в матрицу веса:

  • Токовый сигнал

  • Предыдущий сигнал

  • Сигнал, задержанный до этого

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