Está en la página 1de 12

REDES NEURONALES ARTIFICIALES: TEORIA, APLICACIONES E

IMPLEMENTACIONES.
[Este captulo presenta un caso nico en el sentido de que las fuentes fueron restringidas. El contenido
se basa primordialmente de el manual del mdulo de Redes Neuronales de MATLAB].

Captulo 3: Redes Lineales.


Las redes que veremos en este captulo varian con las del captulo anterior en que tienen una
funcin de activacin lineal. Esto permite que las salidas puedan tener un valor continuo en lugar de
bivalente como en el caso del perceptron. Otro elemento importante es que la regla de aprendizaje
respectiva (la regla Widrow-Hoff, regla de mnimos cuadrados o regla delta) ajusta los pesos (y
elementos de tendencia -biases-) proporcionalmente a el valor del error, no solo cuando se detecta su
presencia.
En este captulo se van a atacar basicamente dos problemas. En primer lugar, queremos disear
una red lineal que, al ser presentada con un conjunto dado de entradas, d como salidas los vectores
deseados correspondientes. Para cada vector de entrada se calcular el vector de salida. La diferencia
entre el vector de salida y el vector de salida deseado es el error. Se estarn buscando velores para los
pesos y elementos de tendencia tales que la suma de los cuadrados de los errores se minimise o este
bajo un nivel de tolerancia pre-establecido.
Los sistemas lineales tienen un mnimo nico en el espacio del error, por lo tanto el problema de
entrenamiento no es tan grave. En la mayora de los casos los valores de convergencia se pueden
calcular directamente de las entradas y salidas deseadas. Hay casos en los que se dan problemas
numricos que dificultan esta tarea. Afortunadamente, existen herramientas (el algoritmo Widrow-Hoff)
con las que siempre se puede encontrar un error mnimo para el problema.
El segundo problema es la necesidad comn de entrenar una red dinmicamente, es decir, que
el sistema responda de manera continua a cambios en el ambiente de operacin. A este tipo de sistemas
se le conoce como adaptivo. Este problema puede ser resuelto gracias a que el tiempo de
entrenamiento es generalmente suficientemente corto para permitir entrenamiento a cada paso
basndose en vectores de entrada y deseados nuevos.

Un trabajo pionero en sta rea se debe a Widrow y Hoff, quienes nombraron sus sistemas
adaptivos lineales ADELINE. Estas redes con usualmente utilizadas en procesamiento de seales,
control y sistemas de prediccin. Una referencia basica en sta rea es:
[B. Widrow and S.D. Sterns, Adaptive Signal Processing, New York. Prentice-Hall 1985.]

Una neurona con dos entradas y funcin de activacin lineal se muestra en la figura 3.1. Tal
como al final del captulo anterior, el trmino de tendencia (bias) se utiliza como variable extra de ajuste
para obtener la respuesta deseada de la red. El valor del trmino de tendencia se obtiene como si fuera
un peso ms, tal como se vi en el captulo pasado

Fig. 3. 1 Esquema de una red lineal.

Una neurona lineal se puede entrenar para aprender funciones lineales o puede ser utilizada para
encontrar una aproximacin lineal a una funcin no lineal. Una red lineal, por supuesto, no puede
ejecutar una computacin no lineal.
Arquitectura de la red.
Es posible disear un red lineal con varias neuronas del tipo de la que se muestra en la fig. 3.1.
A este tipo de red se le ha llamado tambin MADELINE, por ser Muchas ADELINE. La regla de
entrenamiento Widrow-Hoff, slo puede entrenar redes de una sola capa de procesamiento, sin
embargo sto no es una desventaja muy grande. Se puede demostrar (incluso vislumbrar) que una red

lineal de varias capas siempre tiene un equivalente de una sola capa. De hecho lo nico que se lograra
con capas multiples sera una operacin de multiplicacin a los resultados de una sola capa, lo que
implica multiplicar por cierto factor los resultados de la capa nica.
La figura 3.2 muestra una red lineal de multiples neuronas. Ahora se adopta la notacin que
MATLAB usa en el manual y en los programas.

Fig. 3. 2 Arquitectura de una red lineal. Se usa notacin de MATLAB.

La figura 3.3 muestra un diagrama esquemtico equivalente a la figura 3.2 pero en este caso en
simbologa reducida. Las entradas se muestran como un vector, al igual que las salidas, los elementos
de tendencia y los resultados intermedios (n). Los pesos ahora son una matriz porque hay tantos pesos
como nmero de neuronas en la capa procesadora para cada entrada. Cada entrada tiene un vector de
pesos asociado. El conjunto completo de pesos forma una matriz con los vectores que corresponden a
cada entrada.

Fig. 3. 3 Arquitectura de una red lineal. Se usa notacin reducida de MATLAB.

El smbolo de sumatoria con la letra griega sigma mayscula se ha substitutido por el signo '+' y
el smbolo para describir la funcin de activacin sigue siendo el mismo.

Diseo.
El diseo de la arquitectura en este tipo de redes no es ningn problema dado que el numero de
entradas esta dado por la definicin del problema al igual que el nmero de salidas. El mdulo de redes
neuronales de MATLAB contiene varias funciones para el diseo e imlementacin de este tipo de
redes.

Inicializacin.
La funcin initlin se usa para inicializar los peso y elementos de tendencia del la capa lineal
dndoles valores pequeos al azar. El cdigo de inicilizacin para una capa de siete neuronaslineales y
cinco entradas, sera:
[W,b] = initlin(7,5);
Initlin es una funcin que pertenece al mdulo de RN. Estas funciones estn dadas en
archivos de extencin '.m' que estan en ASCII. En la figura 3.4 se presenta el cdigo para la funcin
initlin:
function [w,b] = initlin(r,s)
%INITLIN Initialize linear layer.
%
%
[W,B] = INITLIN(R,S)
%
R - Number of inputs to the layer.

%
%
%
%
%
%
%
%
%
%
%
%
%
%
%

S - Number of neurons in layer.


Returns:
W - SxR Weight matrix.
B - Bias (column) vector.
[W,B] = INITLIN(P,T)
P - RxQ matrix of input vectors.
T - SxQ matrix of target outputs.
Returns weights and biases.
EXAMPLE: [w,b] = initlin(2,3)
p = [1; 2; 3];
a = simulin(p,w,b)
See also NNINIT, LINNET, SOLVELIN, SIMULIN, LEARNWH, ADAPTWH, TRAINWH.

% Mark Beale, 12-15-93


% Copyright (c) 1992-94 by the MathWorks, Inc.
% $Revision: 1.1 $ $Date: 1994/01/11 16:24:49 $
if nargin < 2,error('Not enough arguments.'),end
% NUMBER OF INPUTS
[R,Q] = size(r);
if max(R,Q) > 1
r = R;
end
% NUMBER OF NEURONS
[S,Q] = size(s);
if max(S,Q) > 1
s = S;
end
[w,b] = rands(s,r);

Fig. 3. 4 Cdigo de la funcin initlin de MATLAB.

Como se puede apreciar esta funcin es sumamente simple y se reduce a asignar valores
aleatorios a las variables de salida de la funcin. El nico cuidado que se tiene que tener es asignar a
cada vector o matriz su tamao correspondiente. Se puede observar de este cdigo que el tamao de
los vectores o matrices de entrada se infiere, por lo tanto se puede tener:
[W,b] = initlin(P,T);
Si una solucin con error cero existe, entonces la funcin solvelin la encontrar. Si no existe
una solucin perfecta para el problema, la funcin regresar valores que minimisan la suma de errores
cuadrados ('sse', por sus siglas en ingls).

sse =

e( k ) =

k =1

(t ( k ) a( k ) )2

k =1

Si existe mas de una solucin con error cero, la funcin regresa la solucin con los pesos y
elementos de tendencia mas pequeos, desde el punto de vista del sse.
Pero, para qu entrenar la red si ya se tiene una funcin que devuelve una solucin? Existe la
posibilidad de que solvelin no entregue una solucin. Se puede dar el caso que para ciertas
condiciones de tamao de las matrices o parmetros de etrenamiento la funcin regrese el siguiente
mensaje:
Warning: Matrix is singular to working precision.
Cuando los clculos realizados por solvelin no son numricamente estables las red se puede
entrenar con learnwh y trainwh para obtener una aproximacin de la solicin ideal.
En otras cicunstancias, es posible que no se cuente con todos los vectores de entrenamiento
desde un principio, y se requiera de un entrenamiento dinmico. Para esto se tiene que contar con un
procedimiento de entrenamiento para la red.. La funcin adaptwh permite que una red lineal sea
entrenada de manera adaptiva, en respuesta a un ambiente cambiante.
Finalmente, el estudio de el procedimiento de entrenamiento para las redes lineales nos dar
elementos escenciales para entender procedimientos de entrenamiento ms complejos.

Regla de aprendizaje.
Siendo ejemplos de redes supervisadas, las redes lineales son entrenadas en base a ejemplos
de operacin deseada. La regla de aprendizaje de Widrow-Hoff learnwh calcula cambios a los pesos
y elementos de tendencia de la capa de procesamiento para reducir el error mnimo cuadrado de esa
capa. learnwh toma como argumentos el vector de entrada p presentado a la red, y el error e de la
red (la diferencia entre las salida de la red a y las salidas deseadas t).
e = t-a;
[dW] = learnwh(p,e,lr);
Un argumento adicional es lr, la razn de aprendizaje, que funciona como una ganancia en los
cambios de las variables adaptables. Este parmetro es importante porque d el tamao de los pasos
hacia la convergencia. Si lr es grande, al aprendizaje es rpido, pero si es muy grande, el aprendizaje se
6

puede tornar inestable y tal vez aun alejarse de la convergencia. Para asegurar un aprendizaje estable, la
razn de aprendizaje lr debe ser menor al recproco del vector caracterstico (o propio o Eigen) de la
matriz P'*P. La funcin maxlinlr calcula la razn de aprendizaje mxima, que asegure estabilidad
(0.999*P'*P). La funcin maxlinlr de MATLAB se muestra en la figura 3.5.
function lr = maxlinlr(p,b)
%MAXLINLR Maximum learning rate for a linear layer.
%
%
MAXLINLR is used to calculate learning rates for TRAINWH.
%
%
MAXLINLR(P,'bias')
%
P - RxQ matrix of input vectors.
%
Returns maximum learning rate for layer with biases.
%
%
MAXLINLR(P)
%
P - RxQ matrix of input vectors.
%
Returns maximum learning rate for layer without biases.
%
%
EXAMPLE: P = [1 2 -4 7; 0.1 3 10 6];
%
lr = maxlinlr(P,'bias')
%
%
See also LINNET, LEARNWH, ADAPTWH, TRAINWH.
% Mark Beale, 1-31-92
% Revised 12-15-93, MB
% Copyright (c) 1992-94 by the MathWorks, Inc.
% $Revision: 1.1 $ $Date: 1994/01/11 16:25:45 $
if nargin < 1, error('Not enough input arguments.'); end
if nargin == 1
lr = 0.9999/max(eig(p*p'));
else
p2=[p; ones(1,length(p))];
lr = 0.9999/max(eig(p2*p2'));
end
Fig. 3. 5 Cdigo de la funcin maxlinlr de MATLAB. Versin ntegra.

Como podemos observar el cdigo nuevamente es muy simple. Tambin se nota que existen
dos posibilidades para llamar a la funcin:
lr = maxlinlr(P) % Si no se usan elementos de tendencia
lr = maxlinlr(P,'bias')

% Si se usan elementos de tendencia

Al llamar la funcin incluyendo los elementos de tendencia, se aade una hilera de unos al final
de la matriz P como se muestra a continuacin:
P=

1.0000 2.0000 -4.0000 7.0000


0.1000 3.0000 10.0000 6.0000
p2 =
1.0000 2.0000 -4.0000 7.0000
0.1000 3.0000 10.0000 6.0000
1.0000 1.0000 1.0000 1.0000

Pidiendo la ayuda para el comando 'ones' desde la ventana de comandos de MATLAB se


obtiene:
help ones
ONES
All ones.
ONES(N) is an N-by-N matrix of ones.
ONES(M,N) or ONES([M,N]) is an M-by-N matrix of ones.
ONES(SIZE(A)) is the same size as A and all ones.

Es importante tener siempre en mente la posibilidad de usar la ayuda y tener presente sus
alcances, que son considerables. Esta explicacin ha sido bastante detallada con el objetivo de mostrar
las herramientas disponibles para enfrentar un problema.
Una vez que la razn de aprendizaje ha sido calculado, iteraciones en el cdigo de la figura 3.6
reducirn el error asociado con las matrices de entrada y de salidas deseadas.
A = simulin(P,W,b);
E = T - A;
[dW,db] = learnwh(P,E,lr);
W = W + dW;
b = b + db;
Fig. 3. 6 Cdigo usado para cada iteracin de aprendizaje.

La regla Widrow-Hoff calcula cambios pequeos para los pesos y elementos de tendencia de
la neurona en el sentido que disminuya el error. Este sentido se encuentra tomando la derivada de la
suma del cuadrado de los errores (sse) con respecto a estos parmetros. La derivada de sse con
respecto al peso W(i,j) (de la entrada j a la neurona i) para un solo vector de entrada y vector de
salidas deseadas es:

sse

t( i )
=
W( i , j ) W(i , j )

W(i , j ) p( j ) b( i ) = 2e( i ) p( j )

j =1
R

Los cambios a los pesos se hacen en el sentido opuesto al sentido de aumento del error.
Haciendo que el parmetro lr absorba la constante '2' se obtiene:

W( i , j ) = lr e(i ) p( j )

Que en forma matricial se convierte en:

W = lr Ep T
Esta expresin fcilmente puede escribirse en trminos de los elementos de tendencia,
recordando que stos son pesos con entradas fijas a '1'.

b = lr E
Entrenamiento.
MATLAB provee una funcin para realizar el proceso iterativo de aprendizaje, lo que se llama
entrenamiento. La funcin trainwh presenta de manera repetitiva las entradas P a una red lineal,
usando simulin, y calcula los errores con respecto al vector de salidas deseadas T, y encuentra nuevos
valores para los pesos y elementos de tendencia con learnwh. Este proceso se repite hasta que la
suma del cuadrado de los errores cae bajo una tolerancia de error predeterminada o hasta que se haya
alcanzado el nmero mximo de pocas de entrenamiento. Las instrucciones corrspondientes se
muestran en la figura 3.7.
tp = [disp_freq max_epoch err_goal lr];
[W,b,ep,tr] = trainwh(W,b,P,T,tp),
Fig. 3. 7 Instricciones de MATLAB para el aprendizaje iterativo o entrenamiento.

Los parmetros de entrenamiento tp determinan que tan frecuentemente se despliagan los


resultados (disp_freq), el nmero mximo de pocas deseado (max_epoch), la tolerancia de error
deseada (err_goal) y la razn de aprendizaje (lr). En MATLAB cualquiera de estos parmetros puede
ser ignorado o se le puede asignar el valor NaN. Este valor, que significa Not A Number, es un artificio
de MATLAB para manejar valores nulos. MATLAB tambin acepta que el vector tp no sea incluido
en trainwh y se le asignaran valores predeterminados de fbrica. Si se busca la ayuda para la funcin
trainwh (help trainwh) en la ventana de comandos, se despliegarn, entre otras cosas, los valores
predeterminados. La funcin trainwh regresa los nuevos valores para W y b, pero tambin el nmero
de pocas que se requirieron para la convergencia, ep, y un record de los errores a lo largo del
entrenamiento, tr.
Una vez que la red ha sido entrenada satisfactoriamente y un vector de entrada no perteneciente
al grupo de vectores de entrenamiento es presentado a la red, sta producir un resultado que se

acerque al que producira el vector de entrada ms parecido de el grupo de entrenamiento. Este


comportamiento llamado generalizacin es una de las caractersticas ms poderosas y atractivas de las
redes neuronales.
Si al probar la red entrenada no se obtiene el coportamiento deseado, existen dos
posibilidades. Una es que el problema que se est tratando no sea apto para ser aprendido por una red
lineal. La otra posibilidad es que el entrenamiento haya sido insuficiente. La fincin trainwh puede ser
llamada cuantas veces sea necesario, mientras no se pierda el 'conociemiento' acumulado en ningun
momento. Tambin se puede modificar el nmero de pocas de entrenamiento deseadas segn se
requiera para obtener un resultado aceptable..

Redes Adaptivas.
Ena red lineal adaptiva se muestra en detalle en la figura 3.8 y en diagrama a bloques en la
figura 3.9.

Fig. 3. 8 Red lineal adaptiva.

La funcin adaptwh simula una red lineal adaptiva. Este tipo de redes es entrenada con los
vectores de entrada de uno por uno. El objetivo en este caso es, de forma continua en el tiempo, ajustar
los pesos y elementos de tendencia de tal manera que stos predigan cada vector de salidas deseadas
de la mejor manera posible, segn se van presentando, uno por uno.

10

Las seales de entrada y de salidas deseadas estan representadas por matrices de vectores (es
decir, un conjunto de vectores). Por ejemplo, la i-sima columna de la matriz de entrada P
corresponde a la i-sima muestra de entrada de la red.
adaptwh toma como argumentos de la funcin los pesos y elementos de tendencia iniciales, una
matriz de vectores correspondientes a una seal de entrada P, una matriz de seales de salida deseadas
T y una razn de aprendizaje:
[A,E,W,b] = adaptwh(W,b,P,T,lr);

Fig. 3. 9 Red lineal adaptiva en diagrama de bloques.

adaptwh simula un red lineal adaptiva al ir presentandocada vector de entrada en P en


secuencia a la red (junto con simulin) y luego ajustando los pesos y elementos de tendencia de
acuerdo al error resultante. Una vez que todas las entradas han sido presentadas, la funcin adaptwh
regresa nuevos valores para W y b y adems las salidas de la red A y la seal de error E. Esto
contrasta con trainwh en el sentido de que sta ltima ajusta las variables de la red basada en TODOS
los vectores de entrada y el proceso lo repite iterativamente hasta que se alcanza la tolerancia de error
deseada.
Otro aspecto interesante de esta funcin es que no slo regresa los valores nuevos para los
pesos y los elementos de tendencia (que a los usuarios de la red generalmente no interesan), sino que
tambin regresa la salida de la red A y la salida de error E. Veamos un ejemplo donde la salida de error
en particular es la de inters.

11

EJEMPLO:
Supongamos que la seal T es la salida de un micrfono elctrico que est conformada por la
seal de voz del piloto de un avin y una seal de ruido de las turbinas del avin. Quisieramos obtener
una seal que contenga nicamente la seal de la voz piloto del piloto de avin.
Esto se puede lograr si se tiene una seal de referencia P que sea proporcional a el ruido de las
turbinas del avin. Podemos usar esta seal P como entrada a la red y entrenar la red adaptivamente
para que aprenda la seal T de la voz con ruido. La seal P en este caso no aporta nada con respecto
a la seal de voz del piloto que est contenida en T. La red va a procurar adaptarse a T lo mejor que
pueda pero lo nico que lograr es predecir la parte de T correspondiente a P. Sin embargo si
tomamaos la seal de error E que es el resultado de la seal de voz ruidosa y le restamos la seal que
la red est prediciendo (el ruido) A, el resultado es la voz del piloto. En este caso una red lineal
adaptiva aprendi a cancelar ruido. En general, el mtodo de cancelacin de ruido mediante resta es
mas efectivo que el de filtrado.

Demostraciones
Veremos algunas demostraciones de redes lineales que vienen con el mdulo de redes
neuronales de MATLAB. Las opciones son:
Demolin1. Diseo de una neurona lineal.
Demolin2. Entrenamiento de una neurona lineal.
Demolin3. Entrenamiento de una capa lineal.
Demolin4. Caso sobre-determinado.
Demolin5. Caso bajo-determinado.
Demolin6. Vectores linealmente dependientes.
Demolin7. Razn de aprendizaje demasiado grande.
Demolin8. Capa lineal adaptiva.

12

También podría gustarte