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

Нейрону жесткого предела с 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 создается и конфигурируется. (Шаг настройки является обычно дополнительным, когда он выполняется автоматически, АДАПТИРУЮТСЯ и ОБУЧАЮТСЯ.)

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.

Для просмотра документации необходимо авторизоваться на сайте