RNFF

Post on 18-Feb-2016

214 views 0 download

description

Redes neuronales

Transcript of RNFF

Universidad del ZuliaUniversidad del ZuliaEspecialización en Ingeniería de Control de ProcesosEspecialización en Ingeniería de Control de ProcesosTópicos Avanzados en Identificación de ProcesosTópicos Avanzados en Identificación de Procesos

REDES NEURONALESREDES NEURONALES

Dairy GonzálezDairy GonzálezMaría LorbesMaría Lorbes

Sandra GonzálezSandra González

ACTIVIDAD II

A partir de los datos dados proporcionados, se desea construir una Red Neuronal feedforward (RNFF) y Red Neuronal con función de activación de base radial (RNBNF) que aproximen esta función desconocida. Observe que la red cuenta con dos entradas x, y y una salida z.

PARTE 1load datos.mat

1. FUNCIÓN DESCONOCIDA SIN NORMALIZARmesh(x,y,z);title('Superficie función desconocida')

2. FUNCIÓN DESCONOCIDA NORMALIZADA %Normalizar intervalo [-1,1],min -690 max 200minX=-690;maxX=200;xnor=-1+2*(x-minX)/(maxX-minX);minY=-690;maxY=200;ynor=-1+2*(y-minY)/(maxY-minY);figuremesh(x,y,znor)title('Superficie función desconocida normalizada')

3. GRAFICOS EN EL DOMINIO DE LA FUNCIÓN3.a Entrada 1: Entrenamiento y pruebafigureplot(ENTRADA1_ENT,TARGET1_ENT,'ko')hold onplot(ENTRADA1_PRU,TARGET1_PRU,'ro')title('Entrada 1')legend('ENTRADA1_ENT','ENTRADA1_PRU','location','best')

3.b Entrada 2: Entrenamiento y pruebafigureplot(ENTRADA2_ENT,TARGET2_ENT,'ko')hold onplot(ENTRADA2_PRU,TARGET2_PRU,'ro')title('Entrada 2')legend('ENTRADA2_ENT','ENTRADA2_PRU','location','best')

PARTE 1NORMALIZACION DE LOS DATOS DE ENTRADA

ni=2; %numero de entradas a la redes Entrada 1u_1=ENTRADA1_ENT;u1=u_1';umax1=max(u1);%vector que contiene los valos maximos de uumin1=min(u1);%vector que contiene los valos mainimos de uup_1=ENTRADA1_PRU;up1=up_1';upmax1=max(up1);%vector que contiene los valos maximos de uupmin1=min(up1);%vector que contiene los valos mainimos de uEntrada 2u_2=ENTRADA2_ENT;u2=u_2';umax2=max(u2);%vector q contiene los valos maximos de uumin2=min(u2);%vector q contiene los valos mainimos de uup_2=ENTRADA2_PRU;up2=up_2';upmax2=max(up2);%vector q contiene los valos maximos de uupmin2=min(up2);%vector q contiene los valos mainimos de uN=length(u_1); for k=1:N for j=1:ni %Indice con respecto a la entrada Uo1(j,k)=-1+2*(u_1(j,k)-umin1(j))/(umax1(j)-umin1(j));%Entrada1 Uopru1(j,k)=-1+2*(up_1(j,k)-upmin1(j))/(upmax1(j)-upmin1(j));%Prueba1 Uo2(j,k)=-1+2*(u_2(j,k)-umin2(j))/(umax2(j)-umin2(j));%Entrada2 Uopru2(j,k)=-1+2*(up_2(j,k)-upmin2(j))/(upmax2(j)-upmin2(j));%Prueba2 endend

nntool-Levenbertg Macquart

Red_1_5 (nh=5)

Red_1_20 (nh=20)Red 1-RNFF

Red_1_40 (nh=40)

Red_2_5 (nh=5)

Red 2-RNFFRed_2_20 (nh=20)

Red_2_40 (nh=40)

Algoritmo OS-ELM %Porcentajes de datos So=0.10; N=length(u);No=round(N*So);

%Normalización de los datos de entrada, salida._ % de vali y ent.for k=1:N if k<=No for j=1:ni Uo(j,k)=-1+2*(u(j,k)-umin(j))/(umax(j)-umin(j)); end for j=1:no Yo(j,k)=-1+2*(y(j,k)-ymin(j))/(ymax(j)-ymin(j)); eval(['Yo',num2str(j) '=Yo(j,:);']); end else %Vectores para aprendizaje secuencial for j=1:ni Ua(j,k)=-1+2*(u(j,k)-umin(j))/(umax(j)-umin(j)); end for j=1:no Ya(j,k)=-1+2*(y(j,k)-ymin(j))/(ymax(j)-ymin(j)); eval(['Ya',num2str(j) '=Ya(j,:);']); end endend for k=1:N %Vectores de validación for j=1:ni Upru(j,k)=-1+2*(up(j,k)-upmin(j))/(upmax(j)-upmin(j)); end for j=1:no Ypru(j,k)=-1+2*(yp(j,k)-ypmin(j))/(ypmax(j)-ypmin(j)); eval(['Yp',num2str(j) '=Ypru(j,:);']); endend

NORMALIZACION DE LA DATA Y FRACCIONAMIENTO

function [V,P,W]=initnet_oselm(X,T,nh,act_fun)%activation function of the hidden units%hyperbolic tangent: act_fun=0%rbf: act_fun=1

sizeinput=size(X);ni=sizeinput(1,1);chunk=sizeinput(1,2);stdpar1=sqrt(1);stdpar2=sqrt(1); if act_fun==0 V=stdpar1*randn(ni+1,nh); Xmod=[ones(1,chunk);X]; H=(tanh(V'*Xmod))';else C=stdpar1*randn(ni,nh); D=stdpar2*randn(1,nh); V=[C;D]; for i=1:chunk for j=1:nh H(i,j)=exp(-(norm(X(:,i)-C(:,j))^2)/(2*D(j)^2)); end endend size(H)H=[ones(chunk,1) H];P=pinv(H'*H);W=P*H'*T';

%Parametrosniter=30; %Numeros de iteracionescont=5; %contadornh=5; % numero de unidades en la capa ocultaslambda=0.95;%valor inicial de lambdanent=n*no+n*ni; %numero de entradasact_fun=0; %función de activación de las unidades ocultas %Inicializacion de las redes ninit=1;%numero de datos para inicializar for k=1:no Y=eval(['Yo',num2str(k)]); [V,P,W]=initnet_oselm(Uo(:,1:ninit),Yo(:,1:ninit),nh,act_fun); eval(['V',num2str(k) '=V;']);%pesos entre capa entrada y oculta eval(['W',num2str(k) '(:,1)=W;']);%pesos entre capa oculta y salida eval(['P',num2str(k) '=1e0*eye(nh+1,nh+1);']);%matriz inicial de la redend

Algoritmo OS-ELM

INICIALIZACION

E=[];Wa=[];j=1;jj=1; %cuenta iteraciones% Aprendizaje secuencialwhile jj<=niter & j<=5for k=ninit+1:length(Ua) for kk=1:no % Entrenamiento PP=eval(['P',num2str(kk)]); [PP,W(:,kk),epsilon(kk,k-1),lambda]=trainnet_extls_oselm(Ua(:,k-1),Ya(kk,k-1),V,W(:,kk),PP,nh,act_fun,lambda); eval(['P',num2str(kk) '=PP;']); Ww1(:,jj)=W(:,kk); % Validación [Yphat,Hphat]=simnet_oselm(Up,V,W,act_fun); eval(['Yphat',num2str(kk) '=Yphat;']); end end e1=(Yp-Yphat).^2; %Calculo del error cuadrático medio e=sum(e1)/N; E=[E e]; if jj>1 if e>=E(jj-1); if j==5 E(jj-5:jj); W=Ww1(:,jj-5); end j=j+1; else j=1; end end jj=jj+1;endW

Algoritmo OS-ELM

RNFF Nh=5 V.I:10 V.A.S=90

# de iteraciones

RNFF Nh=20 V.I:10 V.A.S=90

# de iteraciones

RNFF Nh=40 V.I:10 V.A.S=90

# de iteraciones

RNFF Nh=5 V.I:30 V.A.S=70

# de iteraciones

RNFF Nh=20 V.I:30 V.A.S=70

# de iteraciones

RNFF Nh=40 V.I:30 V.A.S=70

23 # iteración

RNBR Nh=5 V.I:10 V.A.S=90

# de iteraciones

RNBR Nh=20 V.I:10 V.A.S=90

# de iteraciones

RNBR Nh=40 V.I:10 V.A.S=90

# de iteraciones

RNBR Nh=5 V.I:30 V.A.S=70

6 # iteración

RNBR Nh=20 V.I:30 V.A.S=70

6 # iteración

RNBR Nh=40 V.I:30 V.A.S=70

# de iteraciones

CONCLUSIONESCONCLUSIONES

GRACIASGRACIAS