В этом примере показано, как адаптивный линейный слой может учиться предсказывать следующее значение в сигнале, учитывая текущие и последние четыре значения.
Чтобы изучить, как предсказать данные временных рядов с помощью нейронной сети для глубокого обучения, смотрите, что Временные ряды Предсказывают Используя Глубокое обучение.
Здесь два раза сегментируются, заданы от 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');
Заметьте, насколько маленький ошибка за исключением начальных ошибок, и сеть изучает системное поведение вначале и после системного перехода.
Этот пример проиллюстрировал, как симулировать адаптивную линейную сеть, которая может предсказать следующее значение сигнала от текущих и прошлых значений несмотря на изменения в поведении сигналов.