1 GUIA DE LABORATÓRIO RN 01 Assunto: Neurônio Binário - Perceptron Objetivo: Apresentar o funcionamento de uma rede neural binária do tipo Perceptron, bem como sua implementação no MatLab PERCEPTRON a = hardlim (w*p + b) Passos para criar, inicializar, simular e treinar uma rede usando o MatLab. 1. Criar a rede com a função NNT2P; 2. Inicializar a rede com a função INIT; 3. Treinar a rede usando um dos seguintes métodos: a. Passo a passo i. Simular o perceptron com a função SIM; ii. Calcular o erro; iii. Calcular os ajustes de peso e polarização com a função LEARNP; b. Treinar a rede com um conjunto de entradas e saídas usando a função TRAIN; 4. Usar a rede para calcular a saída para um determinado conjunto de entradas com a função SIM. Função NNT2P rede = nnt2p(pr,w,b,tf,lf)
2 NNT2P(PR,W,B,TF,LF) utiliza estes argumentos, PR - matriz Rx2 de valores min e max para R entradas. W - Matriz SxR de pesos. B - Sx1 vetor de polarização TF Função de ativação, default = 'hardlim'. LF Função de aprendizado, default = 'learnp'. e retorna um perceptron. A função de ativação TF pode ser HARDLIM ou HARDLIMS. A função de aprendizado LF pode ser LEARNP ou LEARNPN. Uma vez que a rede seja atualizada ela pode ser simulada, inicializada, adaptada ou treinada com adapted, or trained with SIM, INIT, ADAPT, e TRAIN. Função SIM: Simula uma rede neural. [Y,Pf,Af,E,perf] = sim(rede,p,pi,ai,t) [Y,Pf,Af,E,perf] = sim(rede,{q TS},Pi,Ai,T) [Y,Pf,Af,E,perf] = sim(rede,q,pi,ai,t) SIM simula redes neurais. [Y,Pf,Af,E,perf] = SIM(rede,P,Pi,Ai,T) usa, rede - Estrutura da rede neural com parâmetros. P - Entradas para a rede. Pi - Condições iniciais de atrasos nas entradas, default = zeros. Ai - Condições de atrasos iniciais na camada, default = zeros. T - Valor desejado para a saída da rede, default = zeros. e retorna: Y - Saídas calculadas. Pf - Condições finais de atraso para as entradas. Af - Condições finais de atraso para a camada. E - Erro da rede. perf Desempenho da rede. Note que os argumentos Pi, Ai, Pf, e Af são opcionais e precisam apenas serem utilizados em redes que tem atrasos nas entradas ou nas camadas. Exemplos Aqui NEWP é usada para criar um perceptron com duas entradas (com faixa de [0 1]), num único neurônio.
3 net = newp([0 1;0 1],1); Aqui o perceptron é simulado usando apenas 2 entradas, um conjunto de 3 vetores de 2 entradas, e uma sequência de 3 vetores. p1 = [.2;.9]; a1 = sim(net,p1) p2 = [.2.5.1;.9.3.7]; a2 = sim(net,p2) p3 = {[.2;.9] [.5;.3] [.1;.7]}; a3 = sim(net,p3) FUNÇÃO INIT Inicializa uma rede neural. rede = init(rede) INIT(rede) retorna uma rede neural REDE com valores de pesos e polarização atualizados de acordo com a função de inicialização da rede, indicada por NET.initFcn, e os valores dos parâmetros, indicados por NET.initParam. Exemplos, Aqui um perceptron é criado com 2-entradas (com faixa de 0 a 1, e -2 a 2) e 1 neurônio. Uma vez que ele é criado podemos mostrar os pesos e polarização do neurônio. net = newp([0 1;-2 2],1); O treinamento do perceptron altera seus pesos e polarização. P = [0 1 0 1; 0 0 1 1]; T = [0 0 0 1]; net = train(net,p,t); INIT reinicializa os valores de pesos e polarização. net = init(net); Os pesos e polarizações são zeros outra vez, os quais eram os valores iniciais usados pelo perceptron (veja NEWP).
4 FUNÇÃO LEARNP Calcula as variações nos pesos e polarizações de um conjunto de entradas P e o erro e ( e = t-a ), onde t é a saída objetivada e a a saída obtida com os pesos atuais) Regra de treinamento do Perceptron Erro = Saída objetivada - saída calculada pelo perceptron W atual = W anterior + W b atual = b anterior + b; Se Erro = 0, então W = 0; b = 0; Se Erro =1, então W = p; Se Erro = -1, então W = - p; Em resumo: W = Erro * p; Exemplo: LEARNP A = sim ( rede, P ) E = T-A, [dw, db] = learnp (P, E) w = w + dw b = b + db Regra de aprendizado do Perceptron. [DW,DB] = LEARNP(P,E) P - RxQ matriz dos vetores de entrada. E - SxQ matriz dos vetores de erro. Retorna: DW - matriz de alterações para os pesos. DB - vetor de alterações para a polarização (opcional). [DW,DB] = LEARNP(P,A,T) A - RxQ matriz dos vetores de saída. T - SxQ matriz dos vetores de saídas objetivadas.
5 Retorna alterações para pesos e polarizações. FUNÇÃO TRAIN Se sim e learnp são repetidamente usadas parta apresentar entradas a um PERCEPTRON, e para mudar os pesos a polarizações do PERCEPTRON de acordo com o erro, pode-se achar uma solução para o problema A função Train implementa este loop de treinamento Exemplo Tp = [disp. freq. max epoch] [ W, b, lp, tr ]= train (rede, P, T, tp ) TRAIN Treina uma camada de um perceptron usando a regra do perceptron. Exercícios: [rede, TR,Y,E] = TRAIN(rede,P,T,TP) rede estrutura do perceptron P - RxQ matriz dos vetores de entrada. T - SxQ matriz dos vetores objetivados de saída. TP - Parâmetros para treinamento (opcional). Retorna: Rede perceptron com novos pesos e polarização TR - Registros do treinamento: erros num vetor linha. Y Saída do Perceptron; E Erro do Perceptron. 1) Rodar e observar o funcionamento exemplos apresentados neste texto. 2) Treinar um PERCEPTRON para executar a mesma função de uma porta ou A B S P=[ 0 0 1 1 0 0 0 0 1 0 1 ] 0 1 1 1 0 1 T = [ 0 1 1 1 ] 1 1 1