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

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

X задает три входных набора с 2 элементами (вектор-столбцы). Обратите внимание на то, что 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 и макс. значений для элементов входа R, 2) Число элементов в выходном векторе, 3) Введите вектор задержки и 4) Скорость обучения.

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

ОБУЧАЙТЕСЬ использует правило Видроу-Хофф, чтобы обучить линейные сети по умолчанию. Мы будем отображать каждого 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);

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

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