Адаптивное линейное предсказание

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

Определение формы волны

Здесь два раза сегментируются, заданы от 0 до 6 секунд на шагах 1/40 секунды.

time1 = 0:0.025:4;      % from 0 to 4 seconds
time2 = 4.025:0.025:6;  % from 4 to 6 seconds
time = [time1 time2];  % from 0 to 6 seconds

Вот сигнал, который запускается на одной частоте, но затем переходах к другой частоте.

signal = [sin(time1*4*pi) sin(time2*8*pi)];
plot(time,signal)
xlabel('Time');
ylabel('Signal');
title('Signal to be Predicted');

Подготовка проблемы для Нейронной сети

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

signal = con2seq(signal);

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

Xi = signal(1:5);
X = signal(6:end);
timex = time(6:end);

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

T = signal(6:end);

Создание линейного слоя

Функция linearlayer создает линейный слой с одним нейроном с задержкой касания последних пяти входных параметров.

net = linearlayer(1:5,0.1);
view(net)

Адаптация линейного слоя

The function *adapt* simulates the network on the input, while
adjusting its weights and biases after each timestep in response
to how closely its output matches the target.
It returns the update networks, it outputs, and its errors.
[net,Y] = adapt(net,X,T,Xi);

Выходной сигнал построен с целями.

figure
plot(timex,cell2mat(Y),timex,cell2mat(T),'+')
xlabel('Time');
ylabel('Output -  Target +');
title('Output and Target Signals');

Ошибка может также быть построена.

figure
E = cell2mat(T)-cell2mat(Y);
plot(timex,E,'r')
hold off
xlabel('Time');
ylabel('Error');
title('Error Signal');

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

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