Сети ADALINE (адаптивные линейные нейроны), обсуждаемые в этой теме, похожи на перцептрон, но их передаточная функция является линейной, а не жестко ограничивающей. Это позволяет их выходам принимать любое значение, тогда как выход перцептрона ограничен либо 0, либо 1. И ADALINE, и перцептрон могут решать только линейно разделяемые задачи. Однако здесь используется правило обучения LMS (наименьшие средние квадраты), которое гораздо мощнее правила обучения перцептрона. LMS, или Widrow-Hoff, правило обучения минимизирует среднеквадратическую ошибку и, таким образом, перемещает границы принятия решения настолько далеко, насколько это возможно, от обучающих шаблонов.
В этом разделе мы создадим адаптивную линейную систему, реагирующую на изменения в ее среде в процессе работы. Линейные сети, которые корректируются на каждом временном шаге на основе новых входных и целевых векторов, могут находить веса и смещения, которые минимизируют суммарно-квадратную ошибку сети для последних входных и целевых векторов. Сети такого рода часто используются в системах подавления ошибок, обработки сигналов и управления.
Пионерскую работу в этой области проделали Уидроу и Хофф, давшие адаптивным линейным элементам название ADALINE. Основная ссылка на эту тему - Widrow, B. и S.D. Стернс, адаптивная обработка сигналов, Нью-Йорк, Прентис-Холл, 1985.
В этом разделе рассматривается также адаптивная подготовка самоорганизующихся и конкурентоспособных сетей.
В этом разделе описывается функция adapt, который изменяет вес и отклонения сети постепенно во время обучения.
Линейный нейрон с R входами показан ниже.

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

Линейная передаточная функция вычисляет выход нейрона, просто возвращая переданное ему значение.
α = пурелин (n) = пурелин (Wp + b) = Wp + b
Этот нейрон можно обучить изучать аффинную функцию его входов или находить линейное приближение к нелинейной функции. Линейная сеть, конечно, не может быть выполнена для выполнения нелинейных вычислений.
Сеть ADALINE, показанная ниже, имеет один уровень S нейронов, соединенных с R входами через матрицу весов W.

Эта сеть иногда называется MADALINE для многих ADPs. Обратите внимание, что рисунок справа определяет выходной вектор S-длины a.
Правило Widrow-Hoff может обучать только однослойные линейные сети. Однако это не является большим недостатком, поскольку однослойные линейные сети также способны работать, как и многослойные линейные сети. Для каждой многослойной линейной сети существует эквивалентная однослойная линейная сеть.
Рассмотрим одну ADALINE с двумя входами. На следующем рисунке показана схема для этой сети.

Весовая матрица W в этом случае имеет только одну строку. Выход сети:
α = пурелин (n) = пурелин (Wp + b) = Wp + b
или
α = w1,1p1 + w1,2p2 + 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) является примером контролируемого обучения, в котором правило обучения снабжено набором примеров желаемого поведения сети.
pQ, tQ}
Здесь pq является входом в сеть, а tq является соответствующим целевым выходом. Когда каждый вход подается в сеть, сетевой выход сравнивается с целевым. Ошибка вычисляется как разница между целевым выходом и сетевым выходом. Цель - минимизировать среднее значение суммы этих ошибок.
(k)) 2
Алгоритм LMS регулирует веса и смещения ADALINE так, чтобы минимизировать эту среднеквадратическую ошибку.
К счастью, индекс среднеквадратической ошибки для сети ADALINE является квадратичной функцией. Таким образом, индекс производительности будет иметь либо один глобальный минимум, либо слабый минимум, либо никакого минимума, в зависимости от характеристик входных векторов. В частности, характеристики входных векторов определяют, существует ли уникальное решение.
Для получения дополнительной информации по этой теме см. главу 10 документа [HDB96].
Адаптивные сети будут использовать алгоритм LMS или алгоритм обучения Widrow-Hoff, основанный на приблизительной процедуре наиболее крутого спуска. Здесь также адаптивные линейные сети обучаются на примерах правильного поведения.
Алгоритм LMS, показанный здесь, подробно обсуждается в Linear Neural Networks.
W (k + 1) = W (k) + 2αe (k) pT (k)
b (k + 1) = b (k) + 2αe (k)
Сеть ADALINE, как и перцептрон, может решать только линейно разделяемые задачи. Однако это одна из наиболее широко используемых нейронных сетей, найденных в практических применениях. Адаптивная фильтрация является одной из основных областей применения.
Для полного использования сети ADALINE необходим новый компонент - линия задержки с отводом. Такая линия задержки показана на следующем рисунке. Входной сигнал поступает слева и проходит через N-1 задержки. Выходной сигнал линии задержки с отводом (TDL) представляет собой N-мерный вектор, состоящий из входного сигнала в текущий момент времени, предыдущего входного сигнала и т.д.

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

Выход фильтра задается
k − i + 1) + b
При цифровой обработке сигналов эта сеть называется фильтром с конечной импульсной характеристикой (FIR) [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 для просмотра примера адаптивной программы шумоподавления в действии. Этот пример позволяет выбрать скорость обучения и импульс (см. Многоуровневые неглубокие нейронные сети и обучение обратному распространению), и показывает траекторию обучения, а также исходные сигналы и сигналы отмены в зависимости от времени.
Рассмотрим пилота в самолете. Когда пилот говорит в микрофон, шум двигателя в кабине сочетается с голосовым сигналом. Этот дополнительный шум делает результирующий сигнал услышанным пассажирами низкого качества. Целью является получение сигнала, который содержит голос пилота, но не шум двигателя. Можно отменить шум адаптивным фильтром, если получить образец шума двигателя и применить его в качестве входного сигнала адаптивного фильтра.

Как показано на предыдущем рисунке, вы адаптивно обучаете нейронную линейную сеть предсказывать комбинированный пилот-сигнал/сигнал двигателя по сигналу двигателя N. Сигнал двигателя n не сообщает адаптивной сети ничего о голосовом сигнале пилота, содержащемся в М. Однако, сигнал n двигателя дает сетевую информацию, которую он может использовать для прогнозирования вклада двигателя в сигнал m пилот-сигнала/двигателя.
Сеть делает все возможное для адаптивного вывода m. В этом случае сеть может предсказывать только помехи от двигателя в сигнале пилот-сигнала/двигателя. Таким образом, e содержит только голос пилота. Линейная адаптивная сеть адаптивно учится отменять шум двигателя.
Такое адаптивное подавление шума обычно выполняет лучшую работу, чем классический фильтр, потому что он вычитает из сигнала, а не отфильтровывает его из шума сигнала m.
Попробуйте использовать функцию адаптивного подавления шума для примера адаптивного подавления шума.
Вы можете использовать несколько нейронов в адаптивной системе, поэтому вам нужна дополнительная нотация. Можно использовать линию задержки с резьбой с S линейными нейронами, как показано на следующем рисунке.

Можно также представить эту же сеть в сокращенном виде.

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

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