Линейно неотделимые векторы

Нейрону жесткого предела с 2 входами не удается правильно классифицировать 5 входных векторов, потому что они линейно неотделимы.

Каждый из этих пяти вектор-столбцов в X задает входные векторы с 2 элементами, и вектор - строка T задает целевые категории вектора. Постройте эти векторы с PLOTPV.

X = [ -0.5 -0.5 +0.3 -0.1 -0.8; ...
      -0.5 +0.5 -0.5 +1.0 +0.0 ];
T = [1 1 0 0 0];
plotpv(X,T);

perceptron должен правильно классифицировать входные векторы на X в категории, заданные T. Поскольку два вида входных векторов не могут быть разделены прямой линией, perceptron не сможет сделать это.

Здесь начальная буква perceptron создается и конфигурируется. (Шаг настройки является обычно дополнительным, когда он выполняется автоматически, АДАПТИРУЮТСЯ и TRAIN.)

net = perceptron;
net = configure(net,X,T);

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

hold on
plotpv(X,T);
linehandle = plotpc(net.IW{1},net.b{1});

АДАПТИРУЙТЕСЬ возвращает новую сеть после изучения на входе и целевых данных, выходных параметрах и ошибке. Цикл позволяет сети неоднократно адаптироваться, строит график классификации и останавливается после 25 итераций.

for a = 1:25
   [net,Y,E] = adapt(net,X,T);
   linehandle = plotpc(net.IW{1},net.b{1},linehandle);  drawnow;
end;

Обратите внимание на то, что нулевая ошибка никогда не получалась. Несмотря на обучение, perceptron не стал приемлемым классификатором. Только способность классифицировать линейно отделимые данные является основным ограничением perceptrons.