You are on page 1of 10

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

Introduccin a las Redes Neuronales Artificiales

Las redes neuronales artificiales son un conjunto de tcnicas perteneciente al


campo de la inteligencia artificial.
Su estructura consiste en una red formada por nodos (o neuronas) y conexiones,
razn por la cual se asemejan al cerebro de los seres humanos, del cual procede su
nombre.
Las redes neuronales son de aplicacin en diversidad de problemas de
reconocimiento de patrones y de aproximacin de funciones, debido a su
flexibilidad y facilidad de uso.

Funcionamiento red neuronal

Una red neuronal es capaz de detectar relaciones complejas y no lineales entre


variables, a partir de unidades sencillas como las neuronas, al disponer muchas de
estas unidades en paralelo. Las variables se dividen en variables de entrada y de
salida, relacionadas por algn tipo de correlacin o dependencia (no necesariamente
causa-efecto). Tambin es posible que la salida sea la clasificacin de las variables de
entrada en diferentes grupos.
Las neuronas se pueden disponer en diferentes capas. Las redes neuronales ms
sencillas constan de una capa de entrada, una capa de neuronas o capa oculta, y una
capa de salida (Figura 1).

Figura 1 Ejemplo de red neuronal con una capa oculta

El funcionamiento de una neurona consiste en la transformacin de los valores de las


entradas a travs de las conexiones, en una salida. La salida se obtiene a partir de
una funcin de propagacin, una funcin de activacin, y una funcin de transferencia.

La funcin de propagacin ms comn consiste en el sumatorio de todas las


entradas multiplicadas por los pesos de las conexiones, ms un valor de sesgo
o bias.
La funcin de activacin, en caso de que exista, activa o desactiva la salida de
esta neurona.
La funcin de transferencia se aplica al resultado de la funcin de propagacin
y normalmente consiste en una funcin de salida acotada como la sigmoidea
(logsig) [0,1], o la tangente hiperblica (tansig) [-1,1]. Otras funciones de

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

transferencia pueden ser una funcin lineal (purelin) [-, +], base radial

(radbas) [0,1] o una funcin de discriminacin (hardlim) [0,1].

Figura 2 Funciones de transferencia

Tipos de redes neuronales

Los criterios ms importantes para clasificar las redes neuronales son:

Segn el tipo de conexiones:


o Redes de propagacin hacia delante (feed-forward), donde las
conexiones van en un solo sentido desde la capa de entrada hacia la
capa de salida
o Redes recurrentes, donde las conexiones pueden realizar ciclos.
Segn el tipo de aprendizaje
o Aprendizaje supervisado. Los datos (o entradas) tienen una respuesta
conocida (o salida), con la cual se ajusta o entrena la red neuronal.
o Aprendizaje no supervisado o autoorganizado. Los datos son
solamente entradas. Son redes empleadas fundamentalmente para
clasificacin y reconocimiento de patrones.

Estas pginas se centrarn en la aplicacin de redes neuronales de propagacin hacia


adelante, con aprendizaje supervisado, empleadas en la aproximacin de funciones.

Entrenamiento de la red neuronal

Dada una estructura y tamao de la red neuronal, se procede al entrenamiento de la


red.
El entrenamiento o aprendizaje, cuyo objetivo es que la red neuronal sea capaz de
reproducir el comportamiento subyacente en los datos aportados, consiste
bsicamente en la minimizacin de una funcin de coste o error, lo que equivale a
que la salida de la red, se aproxima a la salida en los datos. La funcin de coste ms
comn es la de promedio de errores al cuadrado (MSE).
Para la optimizacin de la red neuronal, se emplean diferentes mtodos de ajuste de
parmetros de la red (pesos de las conexiones y sesgo de las neuronas), a partir de
unos valores o bien aleatorios, o bien predefinido (inicializacin de la red). Algunos
ejemplos de los mtodos de ajuste son los de tipo gradiente o los algoritmos
genticos:

Los mtodos de tipo gradiente calculan la variacin del error al variar cada uno
de los parmetros (a modo de derivada multidimensional), y luego modifican
2

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

todos los parmetros de la red neuronal obteniendo un error menor. Se puede


decir que es una bsqueda en serie de la solucin o mnimo global.
Los mtodos basados en algoritmos genticos, consisten en la generacin de
un determinado nmero de redes o hijos a travs de mutaciones en los
parmetros, evaluando el error de la red para cada uno de ellos. Los hijos con
menor error, tienen mayor probabilidad de convertirse en padres de nuevas
redes, mientras que los hijos con mayor error desaparecen. Se trata de una
bsqueda en paralelo de la solucin.

Ambos mtodos son mtodos iterativos, que se repiten hasta cumplir alguno de los
diferentes criterios de parada. Algunos ejemplos de los criterios de parada son el
nmero de iteraciones, la obtencin de un error mnimo, o un tiempo de ejecucin. En
cualquier caso, generalmente es difcil asegurar que la solucin obtenida no es un
mnimo local.

Sobreaprendizaje

Un posible problema del proceso de entrenamiento, es el sobreaprendizaje o prdida


de generalizacin. Dado un conjunto de datos, es posible que la red neuronal
reproduzca muy bien el comportamiento de dichos datos, pero no el de datos nuevos.
Este problema se acenta en el caso de que los datos tengan ruido o errores.
Otros tipos de aproximaciones de funciones como por ejemplo la interpolacin con
polinomios, tambin pueden aproximar correctamente los datos con los que se realiza
el ajuste, mientras que aproximan de modo errneo datos nuevos no empleados en el
ajuste.

Figura 3 Aproximacin de la funcin seno. Con y sin sobreaprendizaje. Datos con ruido.

Existen diferentes modos de evitar el sobreaprendizaje. El primero de ellos sera


obtener ms datos para el entrenamiento, aunque esto no es siempre posible. Otra
posibilidad es reducir el tamao de la red (menor nmero de parmetros), de modo
que la red neuronal es menos flexible y ms robusta frente al ruido, aunque si se
reduce demasiado, puede que no sea capaz de aprender o aproximar la funcin
objetivo. Dotar a la red neuronal de suficientes parmetros para que sea capaz de
aprender y evitar el sobreaprendizaje, es el principal aspecto a tener en cuenta en el
dimensionamiento de una red neuronal.

Datos de entrenamiento, validacin y test

Para controlar si una red neuronal ha sobreaprendido, se dividen los datos en


diferentes grupos:
3

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

Datos de entrenamiento. Son los datos empleados en el ajuste de los


parmetros de la red neuronal. Han de ser representativos del total de datos,
por lo que normalmente se seleccionan aleatoriamente.
Datos de validacin. Se emplean despus de cada iteracin en el proceso de
entrenamiento, para comprobar si se produce el sobreaprendizaje.
Datos de test. Slo se emplean una vez finalizado el entrenamiento.

La divisin de los datos es normalmente un 80% de datos de entrenamiento, un 10%


de validacin y un 10% de test, aunque la eleccin de dichos porcentajes dependen
del nmero de datos disponible y de su distribucin. Dicha divisin se puede realizar
con algn criterio de modo que los datos de cada grupo sean representativos, o de
modo aleatorio.

Tcnicas para evitar la prdida de generalizacin

Early-stopping
A partir del empleo de la divisin de datos en los grupos mencionados, es posible
aplicar una tcnica de evitar el sobreaprendizaje: early-stopping. Durante el proceso
iterativo de optimizacin de los parmetros de la red, se comparan los errores
obtenidos con los datos de entrenamiento y con los datos de validacin. En el caso
de que durante sucesivas iteraciones, el error con los datos de entrenamientos
disminuya, mientras que el error con los datos de validacin aumente, se detiene el
proceso de ajuste, como un criterio de parada adicional.

Figura 4 Representacin de la evolucin de errores de entrenamiento, validacin y test.


Parada por early-stopping

Regularizacin
Otras tcnicas para evitar el sobreaprendizaje consisten en la aplicacin del principio
de parsimonia o navaja de Ockham, por el cual a igualdad de condiciones, la
explicacin ms simple es la correcta. La regularizacin consiste en agregar el
sumatorio ponderado de los pesos de la red a la funcin de coste, de modo que para
un mismo error similar de dos redes neuronales, aquella que tiene valores de los
pesos menores es mejor.

MSEreg MSE 1 MSW


MSE

1 N
1 N
2
2
ei t i ai

N i1
N i1

2
1 n
MSW w j
n j1

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

donde es el factor de ponderacin, N es el nmero de datos, ei es el error para cada


dato, calculado como la diferencia entre valor objetivo (target) ti y el valor calculado por
la red neuronal ai, n es el nmero de parmetros de la red y wj son los valores de los
pesos y bias de la red neuronal.
Redes podadas
Las redes podadas (pruned neural network) son otra tcnica, segn la cual, mediante
la desconexin o eliminacin de neuronas (reduccin del nmero de parmetros), se
consiguen redes neuronales ms simples, empleando una funcin de coste que tiene
en cuenta el nmero total de parmetros de la red. Un posible tipo de funcin de coste
a emplear en las redes neuronales podadas, que tiene en cuenta el nmero de
parmetros de la red, es el PSE (Predicted Squared Error):

2N

PSE MSE 1

Nn

Con las redes neuronales podadas, es posible desconectar neuronas (simplificacin


de la red) o desconectar entradas (variables redundantes o poco relevantes).

Figura 5 Ejemplo de red neuronal podada

Tamao de la red neuronal

El dimensionamiento de una red neuronal feed-forward con una capa oculta para la
aproximacin de una funcin, consiste en la eleccin del nmero de neuronas de la
capa oculta. Un posible criterio es el de dimensionar la red en funcin del nmero de
datos disponibles, de modo que el nmero de parmetros de la red sea una fraccin
del total de datos disponibles. Si los datos disponibles se encuentran distribuidos
uniformemente, se puede tomar, por ejemplo, un tamao de red tal que el nmero de
datos sea de aproximadamente diez veces el nmero de parmetros de la red
neuronal (grados de libertad de la red).
1
0.9
0.8
0.7

MSE

0.6
0.5
0.4
0.3
0.2
0.1
0

N Neuronas

Figura 6.Ejemplo de nmero de neuronas y error de una red neuronal

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

Estandarizacin de los datos

El proceso de entrenamiento de la red neuronal se realiza de manera mcho ms


rpida si se estandarizan las entradas y salidas de la red, de modo que todas ellas
se expresan es rangos similares (a modo de cambio de escala). En teora no es
necesaria esta transformacin, pero debido a que los valores de los pesos de una red
neuronal se inicializan de manera aleatoria con unos valores pequeos, el
entrenamiento funciona mejor con entradas y salidas estandarizadas.
Se puede estandarizar forzando los datos a que se encuentren en un rango
determinado, como por ejemplo, escalando todos los datos de una determinada
variable al rango [-1, 1] (variable uniformemente distribuida); o tambin de modo
similar, haciendo que los datos se encuentren centrados en 0 con una desviacin
tpica de 1 (como una variable de distribucin normal).
Si alguna de las variables tiene otro tipo de distribucin, es conveniente la
linearizacin de dicha variable. Por ejemplo, si una variable X tiene distribucin
exponencial, el funcionamiento de la red neuronal ser mucho mejor si se transforma
X, empleando como variable Y = LN(X), que empleando X directamente. A pesar de
ello, las redes neuronales son capaces de aproximar cualquier tipo de funcin, sea
cual sea la distribucin de variables de entrada y salida, si se dispone de suficiente
nmero de datos y de una red con suficientes parmetros (nmero de neuronas).

Simulacin

Una vez entrenada una red neuronal, se puede comprobar el funcionamiento de la


misma, aportando datos de entrada y obteniendo datos de salida. Este proceso se
llama simulacin, ya que los datos de entrada pueden ser datos empleados en el
entrenamiento, o datos nuevos de los cuales se desea tener una prediccin.
Un primer paso consiste en la comparacin de los datos de salida (o targets)
empleados en el entrenamiento, con los datos simulados por la red neuronal. Esta
comparacin se llama validacin cruzada, y permite representar grficamente la
bondad del ajuste de la red neuronal. Si el ajuste fuera perfecto, la representacin de
dichos valores se situara sobre la recta y = x.
La validacin cruzada se puede realizar para los datos de entrenamiento, validacin,
test o todos los datos, de modo que se puede comprobar si se ha producido
sobreaprendizaje o no.

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

Figura 7.Validacin cruzada de datos de entrenamiento, validacin, test y total de datos.

Si en lugar de emplear datos existentes, se aplica la red neuronal a datos nuevos, se


dispone de un laboratorio virtual con el que predecir el comportamiento del proceso
aprendido por la red neuronal.
Una aplicacin interesante en la ingeniera, consiste en la obtencin de curvas de
diseo o dimensionamiento mediante la representacin grfica de la salida de la red,
fijando todas las variables de entrada menos una, de modo que se puede observar de
manera sencilla la influencia de cada una de las entradas sobre la salida.
Rebase calculado para diferentes cotas de coronacin
Q(l/s/m)
100.00

Cc=14.5
Cc=15.0

10.00

Cc=15.5
Cc=16.0
Cc=16.5

1.00
5

9 Hs(m)

Figura 8 Curvas de diseo. Rebase en funcin de la cota de coronacin

Medida del error de una red neuronal

El error de una red neuronal tendr las mismas unidades que los valores de la salida
de la red. Un modo de adimensionalizar el error, consiste en emplear el error
cuadrtico medio relativo (RMSE) como error.

1 N
1 N
2
2
MSE ei t i ai
N i1
N i1
MSE
MSE
RMSE
2
N
2
1
t
ti t

N i1
7

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

Ventajas y desventajas de las redes neuronales

Ventajas
1. Robustez frente al ruido en datos de entrada y salida
2. Independencia entre complejidad del problema y dimensionamiento de la red
3. Rapidez de ajuste y simulacin
4. Laboratorio virtual, curvas de diseo o dimensionamiento
Desventajas
1. Mnimos locales
2. Sobreaprendizaje o prdida de generalizacin
3. Criterios de dimensionamiento de la red neuronal arbitrarios
4. Comportamiento de caja negra
5. La inicializacin aleatoria de los pesos y bias, y la divisin aleatoria de datos en
entrenamiento, validacin y test, dan lugar a soluciones diferentes (relacionado
con los mnimos locales)
6. No permiten la extrapolacin

Referencias

http://www.mathworks.com/access/helpdesk/help/pdf_doc/nnet/nnet.pdf
MATLAB Neural Network Toolbox

Wikipedia: http://es.wikipedia.org/wiki/Red_neuronal_artificial

Ejemplo de aplicacin de redes neuronales. Psicotsi: http://www.psicotsi.com

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

Redes Neuronales Artificiales con MATLAB 2010


% Ejemplo de aproximacion de funciones mediante
%
"Neural Network Toolbox" de "Matlab 2010a"
% --------------------------------------------%
Miguel Figueres Moreno
%
Sistemas Inteligentes En Ingeniera Civil
% ---------------------------------------------

%
Generacion de los datos de la red
% --------------------------------------------% Numero de datos
clear; clc;
N = 1000;
% Variables
x = rand(1,N)*4-2; % x:[-2 2]
y = rand(1,N)*4;
% y:[ 0 4]
r = randn(1,N)*0.01; % Ruido de desv.tip. 0.01
% Funcion a aproximar
a=2; b=1; c=3; d=0;
z = a*x.^2+b*y+c+r; %Para incluir ruido
f = [num2str(a) '*x.^2+' num2str(b) '*y+' num2str(c)];
% Preparacion de los datos para la red neuronal
% --------------------------------------------ptotal = [x; y];
ttotal = [z];
N = size(ptotal,2);
% Porcentajes en los que dividimos los datos (Han de sumar 1 y no pueden ser 0)
prob_entr = 0.8;
prob_vali = 0.1;
prob_test = 0.1;
N_entr = floor(N*prob_entr);
N_vali = floor(N*prob_vali);
N_test = N - N_entr - N_vali;
% Separacion de los datos en entrenamiento, validacion y test
entr_P = []; entr_T = []; vali_P = []; vali_T = []; test_P = []; test_T = [];
VPerm=randperm(N);
entr_P=ptotal(:,VPerm(1:N_entr));
entr_T=ttotal(:,VPerm(1:N_entr));
vali_P=ptotal(:,VPerm(N_entr+1:N_entr+N_vali));
vali_T=ttotal(:,VPerm(N_entr+1:N_entr+N_vali));
test_P=ptotal(:,VPerm(N_entr+N_vali+1:N));
test_T=ttotal(:,VPerm(N_entr+N_vali+1:N));
% Estandarizacion
% --------------------------------------------[pstd, coefp] = mapstd(entr_P);
[tstd, coeft] = mapstd(entr_T);
valistd.P = mapstd('apply',vali_P,coefp);
valistd.T = mapstd('apply',vali_T,coeft);
teststd.P = mapstd('apply',test_P,coefp);
teststd.T = mapstd('apply',test_T,coeft);
% Creacion de la red
% --------------------------------------------nocultas=3;
nentrada = size(ptotal,1);
nsalida = size(ttotal,1);
net =
newff(pstd,tstd,[nocultas,nsalida],{'tansig','purelin'},'trainlm','learngdm','mse');
net.trainParam.show=100;
net.trainParam.goal=10^(-8);
net.trainParam.epochs=100;
net.trainParam.min_grad=10^(-6);
% Inicializacion de la red
% --------------------------------------------net = init(net);
% Entrenamiento de la red y calculo del PSE
% --------------------------------------------[net,tr,Y,E] = train(net,pstd,tstd,[],[],valistd,teststd);

Sistemas Inteligentes En Ingeniera Civil

Miguel Figueres Moreno

NPar =
size(net.IW{1,1},1)*size(net.IW{1,1},2)+size(net.b{1,1},1)+size(net.b{2,1},1)+size(net.L
W{2,1},1)*size(net.LW{2,1},2);
NPar2 = nentrada*nocultas+nocultas+nocultas*nsalida+nsalida;
astd = sim(net,pstd);
MSE = mean((astd-tstd).^2)
RMSE = MSE/var(tstd)
PSE(nocultas) = MSE*(1+2*NPar/(N-NPar));
% Validacion cruzada
% --------------------------------------------an = sim(net,mapstd('apply',ptotal,coefp));
a = mapstd('reverse',an,coeft);
postreg(a,ttotal);
% Matrices de pesos y sesgo (entradas y salidas estandarizadas)
% ------------------------------------------------------------net.IW{1,1}
net.b{1,1}
net.LW{2,1}
net.b{2,1}
% Representacion grafica de f
% --------------------------------------------figure('Name',['Funcion a aproximar -> f=' f]); hold on;
ezsurf(f,[-4,4,-4,4]); view(3); hold on;
% Representacion sobre la superficie de los datos empleados
% ---------------------------------------------------------plot3(entr_P(1,:),entr_P(2,:),mapstd('reverse',sim(net,mapstd('apply',entr_P,coefp)),coe
ft),'.r');
plot3(vali_P(1,:),vali_P(2,:),mapstd('reverse',sim(net,mapstd('apply',vali_P,coefp)),coe
ft),'.b');
plot3(test_P(1,:),test_P(2,:),mapstd('reverse',sim(net,mapstd('apply',test_P,coefp)),coe
ft),'.g');
% Representacion sobre la superficie de datos fuera de rango
% ---------------------------------------------------------x2 = rand(1,N)*10-5;
% x2:[-5 5]
y2 = rand(1,N)*10-5;
% y2:[-5 5]
plot3(x2,y2,mapstd('reverse',sim(net,mapstd('apply',[x2;y2],coefp)),coeft),'.k');

10

You might also like