Main Content

Clasificación con un perceptrón de dos entradas

Una neurona de límite rígido de dos entradas se entrena para clasificar cuatro vectores de entrada en dos categorías.

Cada uno de los cuatro vectores columna en X define vectores de entrada de dos elementos, y un vector fila T define las categorías objetivo de los vectores. Podemos representar estos vectores con 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 object. The axes object with title Vectors to be Classified, xlabel P(1), ylabel P(2) contains 4 objects of type line. One or more of the lines displays its values using only markers

El perceptrón debe clasificar correctamente los cuatro vectores de entrada en X en las dos categorías definidas por T. Los perceptrones cuentan con neuronas HARDLIM. Estas neuronas tienen la capacidad de separar un espacio de entrada con una línea recta en dos categorías (0 y 1).

Aquí, PERCEPTRON crea una nueva red neuronal con una sola neurona. La red se configura con los datos, de modo que podemos examinar sus valores iniciales de peso y sesgo. (Normalmente, se puede omitir el paso de configuración, ya que ADAPT o TRAIN lo realizan automáticamente).

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

Los vectores de entrada se vuelven a representar con el intento inicial de clasificación de la neurona.

Los pesos iniciales se establecen en cero, por lo que cualquier entrada da la misma salida y la línea de clasificación ni siquiera aparece en la gráfica. No se preocupe... ¡lo vamos a entrenar!

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

Figure contains an axes object. The axes object with title Vectors to be Classified, xlabel P(1), ylabel P(2) contains 5 objects of type line. One or more of the lines displays its values using only markers

Aquí, los datos de entrada y objetivo se convierten en datos secuenciales (arreglo de celdas donde cada columna indica una unidad de tiempo) y se copian tres veces para formar las series XX y TT.

ADAPT actualiza la red para cada paso de tiempo de la serie y devuelve un nuevo objeto de red que funciona como un clasificador mejor.

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 object. The axes object with title Vectors to be Classified, xlabel P(1), ylabel P(2) contains 6 objects of type line. One or more of the lines displays its values using only markers

A continuación, se utiliza SIM para clasificar cualquier otro vector de entrada, como [0.7; 1.2]. Una gráfica de este nuevo punto con el conjunto de entrenamiento original muestra cómo funciona la red. Para distinguirlo del conjunto de entrenamiento, coloréelo de rojo.

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

Figure contains an axes object. The axes object with title Vectors to be Classified, xlabel P(1), ylabel P(2) contains a line object which displays its values using only markers.

Active el estado de permanencia "hold" para que la gráfica anterior no se borre y represente el conjunto de entrenamiento y la línea de clasificación.

El perceptrón ha clasificado correctamente nuestro nuevo punto (en rojo) como categoría "cero" (representada por un círculo) y no como "uno" (representada por un signo más).

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

Figure contains an axes object. The axes object with title Vectors to be Classified, xlabel P(1), ylabel P(2) contains 6 objects of type line. One or more of the lines displays its values using only markers