exponenta event banner

Линейно-зависимая проблема

Линейный нейрон обучен находить минимальное решение ошибки для задачи y с линейно зависимыми входными векторами. Если линейная зависимость y во входных векторах не согласована в целевых векторах, задача нелинейна и не имеет линейного решения с нулевой ошибкой y.

X определяет три двухэлементных входных шаблона (векторы столбцов). Обратите внимание, что 0,5-кратная сумма векторов 1 и 3 в векторе 2. Это называется линейной зависимостью.

X = [ 1.0   2.0   3.0; ...
      4.0   5.0   6.0];

T определяет связанный 1-элементный целевой объект (векторы столбцов). Обратите внимание, что 0,5-кратная сумма -1,0 и 0,5 не равна 1,0. Поскольку линейная зависимость в X не согласована в T, эта задача является нелинейной и не имеет линейного решения с нулевой ошибкой y.

T = [0.5 1.0 -1.0];

MAXLINLR находит самый быстрый стабильный уровень обучения для TRAINWH. NEWLIN создает y линейный нейрон. NEWLIN принимает следующие аргументы: 1) Rx2 матрица значений min и max для R входных элементов, 2) количество элементов в выходном векторе, 3) вектор задержки ввода и 4) скорость обучения.

maxlr = maxlinlr(X,'bias');
net = newlin([0 10;0 10],1,[0],maxlr);

TRAIN по умолчанию использует правило Widrow-Hoff для обучения линейных сетей. Мы покажем каждые 50 эпох и тренируемся для y максимум 500 эпох.

net.trainParam.show = 50;     % Frequency of progress displays (in epochs).
net.trainParam.epochs = 500;  % Maximum number of epochs to train.
net.trainParam.goal = 0.001;  % Sum-squared error goal.

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

[net,tr] = train(net,X,T);

Теперь мы можем проверить ассоциатор с одним из исходных входных данных, [1; 4], и посмотрите, возвращает ли он цель, 0,5. Результат не равен 0,5, так как линейная сеть не может соответствовать нелинейной проблеме, вызванной линейной зависимостью между входными векторами.

p = [1.0; 4];
y = net(p)
y = 0.8971