exponenta event banner

Классификация с двухвходовым перцептроном

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

Каждый из четырех векторов-столбцов в X определяет двухэлементные входные векторы, а вектор-строка T определяет целевые категории вектора. Мы можем построить эти векторы с помощью PLOTPV.

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

Figure contains an axes. The axes with title Vectors to be Classified contains 4 objects of type line.

Перцептрон должен надлежащим образом классифицировать четыре входных вектора в X на две категории, определенные Т. Перцептроны имеют нейроны HARDLIM. Эти нейроны способны разделить входное пространство прямой линией на две категории (0 и 1).

Здесь PERCEPTRON создает новую нейронную сеть с одним нейроном. Затем сеть настраивается на данные, поэтому мы можем изучить ее начальные значения веса и смещения. (Как правило, шаг конфигурирования можно пропустить, так как он автоматически выполняется ADAPT или TRAIN.)

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

Входные векторы повторяются с начальной попыткой нейрона классифицировать.

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

plotpv(X,T);
plotpc(net.IW{1},net.b{1});

Figure contains an axes. The axes with title Vectors to be Classified contains 5 objects of type line.

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

ADAPT обновляет сеть для каждого временного интервала в серии и возвращает новый сетевой объект, который работает как лучший классификатор.

XX = repmat(con2seq(X),1,3);
TT = repmat(con2seq(T),1,3);
net = adapt(net,XX,TT);
plotpc(net.IW{1},net.b{1});

Figure contains an axes. The axes with title Vectors to be Classified contains 6 objects of type line.

Теперь SIM используется для классификации любого другого входного вектора, как [0.7; 1.2]. График этой новой точки с исходным обучающим набором показывает, как работает сеть. Чтобы отличить его от тренировочного набора, окрашивайте его в красный цвет.

x = [0.7; 1.2];
y = net(x);
plotpv(x,y);
point = findobj(gca,'type','line');
point.Color = 'red';

Figure contains an axes. The axes with title Vectors to be Classified contains an object of type line.

Включите «удержание», чтобы предыдущий график не стирался, и постройте график обучающего набора и линии классификации.

Перцептрон правильно классифицировал нашу новую точку (красным цветом) как категорию «ноль» (представленную кругом), а не «единицу» (представленную плюсом).

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

Figure contains an axes. The axes with title Vectors to be Classified contains 6 objects of type line.