Baixe o app para aproveitar ainda mais
Prévia do material em texto
Matlab - Neural Networw Toolbox Ana L´ıvia Soares Silva de Almeida 27 de maio de 2014 Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox O que e´ a Neural Networw Toolbox? A Neural Network Toolbox fornece func¸o˜es e aplicativos para a modelagem de sistemas na˜o-lineares complexos que na˜o sa˜o facilmente modelados com uma equac¸a˜o de forma fechada. Suporta aprendizado supervisionado com feedforward, base radial e redes dinaˆmicas, ale´m de aprendizado na˜o supervisionado com mapas auto-organiza´veis e camadas competitivos. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox O que e´ a Neural Networw Toolbox? Com ela e´ poss´ıvel projetar, treinar, visualizar e simular redes neurais. Pode ser usada para aplicac¸o˜es tais como montagem de dados, reconhecimento de padro˜es, clustering, a previsa˜o de se´ries temporais e modelagem do sistema dinaˆmico e controle. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Objetivo deste curso O objeto desse curso e´ fazer uma breve panorama da toolbox e apresentar algumas formas de manipular algumas das ferramentas dispon´ıveis. Sera˜o apresentadas funcionalidades para redes do tipo Perceptron Multicamadas (Multilayer Perceptron) e para a rede de base radial (radial basis), iterfaces gra´ficas dispon´ıveis e algumas particularidades em relac¸a˜o a`s verso˜es mais recentes do Matlab uma vez que a versa˜o utilizada para este curso e´ do ano de 2008. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Perceptron Multicamadas Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Passos para implementac¸a˜o da rede: ⇒ coleta e preparac¸a˜o dos dados ⇒ criac¸a˜o da rede ⇒ configurac¸a˜o da rede ⇒ inicializac¸a˜o dos pesos e biases ⇒ treinamento da rede ⇒ validac¸a˜o da rede Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Criac¸a˜o a rede O comando nome da rede = network cria uma rede e suas propriedades Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Definindo as propriedades de Arquitetura As primeiras propriedades que aparecem da rede sa˜o as chamadas propriedades de arquitetura: nu´mero de entradas (Inputs) nu´mero de camdadas (Layers) pesos entre de entradas e entre camadas conexo˜es de sa´ıda e tragets (outputs e targets) Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox nu´mero de inputs e camdas Definimos a quantidade de camadas de entrada que a rede tera´ Atenc¸a˜o: na˜o estamos definindo ainda a quantidade de tipos de entrada (x1, x2,...xn) que a rede tera´ (tamanho do vetor de entradas) nome da rede.numInputs = x Definimos a quantidade de camadas que a rede tera´ nome da rede.numLayers = y Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Bias Definimos agora, as camadas que tera˜o bias associado. Essa atribuic¸a˜o pode ser feita atrave´s do comando: nome da rede.biasConnect(camada) = 1 ou na forma de matriz, atribuido 1 a`s camadas que tiverem bias e 0 a`s que na˜o tiverem. Por exemplo: net.biasConnect(1) = 1 net.biasConnect(1) = 3 ou nome da rede.biasConnect = [1; 0; 1] Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Conexo˜es entre entradas e camadas Agora, vamos conectar as entradas a`s camdadas da rede. De maneira ana´loga aos biases, podemos especificar essas conexo˜es atrave´s do comando nome da rede.inputConnect(i,j) = 1 que representa uma conexa˜o de pesos entre a entrada j e a camada i Essa atrabuic¸a˜o tambe´m pode ser feita atrave´s de uma matriz n X m, onde onde n e´ o nu´mero de entradas e m e´ o nu´mero de camadas as camdadas. Por exemplo: net.inputConnect(1,1) = 1 net.inputConnect(2,1) = 1 net.inputConnect(2,2) = 1 ou net.biasConnect = [1 0; 1 1; 0 0] Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Conexo˜es de outputs e targets Definimos aqui as camadas que possuem sa´ıda (outputs) e a camada que tera´ os targets. Isso pode ser feito atrave´s da matriz 1xn, onde sa˜o as camadas da rede: net.outputConnect = [0 1 1] net.targetConnect = [0 0 1] Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Inputs Agora, definiremos as caracter´ısticas das entradas da rede. Para cada input que criamos, deve ser passado um vetor definindo os valores m´ınimo q ma´ximo de cada tipo pode assumir. Passamos enta˜o, uma matriz 2xm onde m e´ o nu´mero de entradas da rede. nome da rede.inputs{entrada}.range = [x y; x y; ....;x y] Por exemplo: net.inputs{1}.range = [0 10; 0 10] net.inputs{2}.range = [-2 2; -2 2; -2 2; -2 2; -2 2] Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Camadas Quando definimos o nu´mero de camadas da rede, para cada camada algumas propriedades ja´ sa˜o setadas por default. Se for necessa´rio, podemos alterar algumas delas, como por exemplo o tamanho (quantidade de neuroˆnios), a func¸a˜o de transic¸a˜o e a func¸a˜o de inicilizac¸a˜o com os comandos abaixo: nome da rede.layers{camada}.size = x; nome da rede.layers{camada}.transferFcn = 〈’func¸a˜o’〉 nome da rede.layers{camada}.initFcn = 〈’func¸a˜o’〉 Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Camadas As func¸o˜es dispon´ıveis no Matlab para func¸a˜o de transic¸a˜o sa˜o: •tansig (tangente hiperbo´lica) •logsig (sigmo´ide) •purelin (linear) •satlin () A func¸a˜o de inicilizac¸a˜o mais comum e´ ’initnw’ Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Func¸o˜es da rede: inicializac¸a˜o O comando nome da rede.initFcn = ’initnw’; A func¸a˜o initnw inicializa pesos e desvios de uma camada de acordo com o algoritmo de inicializac¸a˜o Nguyen-Widrow. Este algoritmo escolhe valores, a fim de distribuir a regia˜o ativa de cada neuroˆnio na camada de maneira uniforme ao longo do espac¸o de entrada da camada. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Func¸o˜es da rede: performance e treinamento Definimos a performance como erro quadra´tico me´dio (mse) e o treinamento por retropropagac¸a˜o (backpropagation) nome da rede.performFcn = ’mse’; nome da rede.trainFcn = ’...’; Algumas opc¸o˜es para func¸a˜o de treinamento: •trainlm :Levemberg-Marquardt (default) •traingd : gradiente descendente •traingdm : gradiente descendente com momentum •traingda : gradiente descendente adaptativo) •traingdx : gradiente descendente com taxa de aprendizagem varia´vel •trainrp : reslient backpropagation Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Inicializac¸a˜o da rede Inicializamos a rede setando os valores devidos de acordo com as propriedades. Os pesos iniciais tem valor zero. nome da rede = init(nome da rede); Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Treinamento E´ necessa´rio separar o conjunto de dados em dois grupos ba´sicos: uma parte das amostras sera´ usada para o treinamento e outra para a validac¸a˜o. Da parte que sera´ usada como treinamento, temos os valores de entrada (inputs) e os correspondentes resultados esperados (targets). Podemos armazenar os inputs na varia´vel P e os targets na varia´vel T, por exemplo. Dessa forma, podemos chamar a func¸a˜o de treinamento passando a rede criada, P e T como paraˆmetros: [nome da rede,tr] = train(nome da rede,P,T); onde tr e´ uma matriz que conte´m todos as informac¸o˜es a cerca do treinamento da rede Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Parameˆtros de treinamento E´ poss´ıvel definir as condic¸o˜es de parada do treinamento (nome da rede.trainParam.¡condic¸a˜o¿= z;) : •ming rad : magnitudema´ximadogradiente •maxf ail : nu´meroma´ximodevalidac¸o˜es •time : tempo ma´ximo de treinamento •goal: valor m´ınimo de performance •epochs : nu´mero ma´ximo de e´pocas Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Ana´lise de desempenho po´s-treino Pode-se plotar gra´ficos para analisar o desempenho da rede. Os gra´ficos podem ser plotados por linhas no co´digo ou atrave´s da janela que surge quando a rede e´ treinada. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Simulac¸a˜o da rede (validac¸a˜o) Apo´s o treinamento, a parte restante dos dados de entrada que ainda na˜o foi utilizada, e´ passada para a func¸a˜o de simulac¸a˜o. A sa´ıda da rede e´ enta˜o gerada (outputs) e pode ser comparada com os valores esperados para essas amostras. Y = sim(nome da rede, Pt); onde Pt e´ o conjunto de amostras restantes. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Outras formas de criar e manipular RNAs em Matlab Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox nntool Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Nas verso˜es mais recentes... A partir da versa˜o (...) do Matlab, a cla´ssica func¸a˜o newff ficou obsoleta e foi substitu´ıda. Para criac¸a˜o de redes do tipo Perceptron Multicamadas, uma alternativa e´ usar para criar a rede a func¸a˜o feedforwardnet Para esta func¸a˜o, caso na˜o sejam passados paraˆmetros, sera´ aplicado o default: - uma rede com 1 camada escondida composta de 10 neuroˆnios, e uma camada de sa´ıda com apenas 1 neuroˆnio. Ale´m disso, ja´ sa˜o definidos o me´todo de Levemberg-Marquardt para treinamento e as func¸o˜es de ativac¸a˜o tansig e purelin para a camada escondida e para a de sa´ıda respectivamente. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Rede de Base Radial Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Redes de base radial podem ser usadas para aproximar func¸o˜es. A func¸a˜o newrb acrescenta neuroˆnios para a camada escondida de uma rede de base radial ate´ encontrar a meta de erro quadrado me´dio especificado. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox nome da rede = newrb(P,T,goal,spread,MN,DF) onde: P e´ a matriz com os dados de entrada T e´ a matriz com os targets goal e´ o mse (default mse = 0) spread disseminac¸a˜o de func¸o˜es de base radial MN nu´mero ma´ximo de neuroˆnios (default quantidade de amostras na entrada) DF nu´mero de neuroˆnios para adicionar entre ... (default 25) Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox Nas verso˜es mais recentes... E´ poss´ıvel tambe´m alterar essa configurac¸a˜o passando como primeiro argumento para a func¸a˜o o nu´mero de neuroˆnios desejado na camada escondida, e como segundo argumento, o tipo de treinamento. A vantagem de usar a feedforwardnet e´ que na˜o e´ necessa´rio seguir todos esses passos para configurar a rede, e as modificac¸o˜es desejadas (como alterar as func¸o˜es de ativac¸a˜o, por exemplo) podem ser feita apenas acrescentando os comandos apresentados anteriormente para definir as propriedades ao co´digo. Ana L´ıvia Soares Silva de Almeida Matlab - Neural Networw Toolbox
Compartilhar