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