Vous êtes sur la page 1sur 17

REDES NEURONALES.

RUBEN ELISEO VAZQUEZ PEREZ.

Dr. ESTEBAN TLELO CUAUTLE.

INSTITUTO NACIONAL DE ASTROFISICA OPTICA Y


ELECTRONOCIA.

VERANO DE INVESTIGACIÓN CIENTÍFICA 2016.

JUNIO 2016 – AGOSTO 2016.


En la primera semana del verano de investigación científica, se dio inicio con el taller
de redes neuronales, las redes neuronales son otra forma de emular ciertas
características propias de los humanos, como la capacidad de memorizar y asociar
hechos.

La siguiente imagen muestra las partes de una neurona biológica, En el soma se


suman las entradas de todas las dentritas; si estas entradas sobrepasan un cierto
umbral, entonces se transmitirá un pulso a lo largo del axón, en caso contrario no
transmitirá.

Imagen 1. Neurona biológica.

Todos los procesos del cuerpo humano se relacionan en alguna u otra forma con
la (in)actividad de estas neuronas. Las mismas son un componente relativamente
simple del ser humano, pero cuando millares de ellas se concentran en forma
conjunta se hacen muy poderosas.
Una red neuronal artificial la podemos definir como una nueva forma de
computación, inspirada en modelos biológicos los cuales procesan información por
medio de su estado dinámico como respuesta a entradas externas, también como
un modelo matemático compuesto por un gran número de elementos procesales
organizados en niveles.

Las RNA son redes interconectadas masivamente en paralelo de elementos simples


y con organización jerárquica, las cuales intentan interactuar con los objetos del
mundo real del mismo modo que lo hace el sistema nervioso biológico.

Imagen 2. Arquitectura de una neurona artificial.

Las redes neuronales tienen como propósito intercambiar datos o información, se


utilizan para reconocer patrones incluyendo imágenes, manuscritos y secuencias
de tiempo, tienen la capacidad de aprender y mejorar su funcionamiento.
A continuación se presenta el esquema de una red neuronal.

Imagen 3.- Esquema de una red neuronal.

Los datos ingresan en la capa de entrada, posteriormente pasan a la capa oculta,


cabe mencionar que la capa oculta puede estar constituida por varias capas,
después de pasar por la capa oculta pasa a la etapa final, la capa de salida.

En la capa de entrada toma los datos como uno solo y a esto se lo conoce como
entrada global, la función de entrada se puede describir de la siguiente manera.
La función de activación, es una función de entrada global menos el umbral, las
funciones de activación más utilizadas son:

 función lineal, y=x

Imagen 4.- grafica de función lineal.

 Función logística,

Imagen 5.- Grafica de función logística.


 Función tangente hiperbólica.

Imagen 6.- Grafica de función tangente hiperbólica.

 Función escalón.

Imagen 7.- grafica de función de escalón.


Para poder practicar en el tema de redes neuronales utilizamos el software llamado
Matlab, la cual es una plataforma optimizada para resolver problemas de ingeniería
y científicos, el lenguaje de Matlab está basado en matrices, es la forma natural del
mundo para expresar las matemáticas computacionales.

El siguiente testo muestra el código del programa desarrollado para la red neuronal.

close all, clear all, clc, format compact

%% Variable a predecir "x", "y" o "z"

Datos=load('x_normalizada_03761_h.mat');

variable=Datos.x_normalizada; %Variable que llama los datos de la funci�n


a predecir

%% Normalización de los datos

N = 3000; % number of samples

Nu= 1650; % number of learning samples

Var2=variable;

y=Var2(1:N);

plot(y, 'm-')

grid on, hold on

plot(y(1:Nu),'b')

plot(y,'+k','markersize',2)
legend('validation data','training data','sampling markers','location','southwest')

xlabel('time (steps)')

ylabel('y')

%ylim([-1 1])

set(gcf,'position',[1 60 600 200])

% prepare training data

yt = con2seq(y(1:Nu)');

net.layers{1}.transFcn='purelin'

% prepare validation data

%net.trainParam.epochs=10;

yv = con2seq(y(Nu+1:end)');

hiddenSizes = [2 5 2 6 3];

net = timedelaynet([1:8],5);

[P,Pi,Ai,T] = preparets(net,yt,yt);

net = train(net,P,T,Pi);

[Xs,Xi,Ai,Ts] = preparets(net,yv,yv);

yp=net(Xs, Xi)

error=gsubtract(yp,Ts);

rmse=sqrt(mse(error));
figure(1)

plot(Nu+9:N,cell2mat(yp),'r')

plot(Nu+9:N,cell2mat(error), 'g' )

legend('validation data','training data','sampling markers',...

'prediction','error','location','southwest')

W=net.Lw;

B=net.B;

Los resultados de entrenamiento de la neurona son los siguientes:

Imagen 8.- Evolución de la neurona .


Imagen 9.- Datos de la red neuronal.
Imagen 10. – Estado de entrenamiento.

Imagen 11.- Actuación.


Imagen 12.- Histograma de error.

Para esta neurona se utilizó el algoritmo de entrenamiento trainlm “Levenberg-


Marquardt”, es un algoritmo rápido sin embargo esto método es menos eficiente
para RNA con miles de pesos. Requieren más memoria y más tiempo de
computación.
Los datos de entrenamiento de las 9 neuronas después de 10 entrenamientos son
los siguientes:

NEURONA 1
0.8
0.6
0.4
0.2
0
-0.2 1 2 3 4 5 6 7 8 9 10

-0.4
-0.6
-0.8
-1
-1.2
-1.4

NEURONA 2.
1

0.5

0
1 2 3 4 5 6 7 8 9 10

-0.5

-1

-1.5
NEURONA 3.
1

0.5

0
1 2 3 4 5 6 7 8 9 10
-0.5

-1

-1.5

-2

-2.5

NEURONA 4.
1

0.5

0
1 2 3 4 5 6 7 8 9 10
-0.5

-1

-1.5

-2
NEURONA 5.
2

1.5

0.5

0
1 2 3 4 5 6 7 8 9 10
-0.5

-1

-1.5

-2

NEURONA 6
2

1.5

0.5

0
1 2 3 4 5 6 7 8 9 10
-0.5

-1

-1.5

-2

-2.5
NEURONA 7
1

0.5

0
1 2 3 4 5 6 7 8 9 10

-0.5

-1

-1.5

NEURONA 8
1

0.5

0
1 2 3 4 5 6 7 8 9 10

-0.5

-1

-1.5
NEURONA 9.
0.8

0.6

0.4

0.2

0
1 2 3 4 5 6 7 8 9 10
-0.2

-0.4

-0.6

Para concluir se determinó que el algoritmo que daba mejor resultado es el


Levenberg-Marquardt, ya que entrena de mejor manera a la neurona y en menor
tiempo.