Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nome do Aluno: Rubrica Curso: Engenharia Elétrica Disciplina: Inteligência Computacional Data: / / Professor Nome do Professor: Dr. Nilton Alves Maia 1) Comandos do MatLab para a criação, treinamento e utilização de ADLINE’s e MADALINE’s. Para os comandos abaixo faremos a seguinte notação: N – número de variáveis de entrada do ADALINE (X1, X2, ..., XN). M – número de ADALINE’s na rede. 1.1) newlin - esta função cria um ADALINE. Abaixo estão algumas formas de uso: Seja R uma matriz Nx2, onde número de linhas desta matriz é igual a quantidade de variáveis de entrada do ADALINE, e cada linha de índice i indica na 1ª coluna o valor mínimo que a variável i pode assumir, enquanto que a 2ª coluna indica o valor máximo. a) net = newlin(R,1) – utilizada desta forma, newlin irá retornar uma rede com um ADALINE que recebe N entradas. A função de ativação do ADALINE é sempre o produto interno entre as variáveis de entrada e o vetor de pesos. O vetor de pesos é guardado no campo net.IW{1,1}, sendo que o peso independente () é guardado em net.b{1}. O vetor de pesos net.IW{1,1} é um vetor linha com o número de colunas igual a N (número de variáveis), o campo net.b{1} é um escalar. A função de propagação é a função linear f(x) = x, ou seja, que no MatLab a saída do ADALINE é a própria função de ativação. b) net = newlin(R,M) – utilizada desta maneira, a função newlin irá criar uma rede de uma camada com M neurônios (MADALINE). Neste caso o campo net.IW{1,1} não é mais um vetor e sim uma matriz com dimensão MxN, aonde cada linha é o vetor de pesos de um neurônio. O campo net.b{1} é um vetor de dimensão Mx1, guardando o bias de cada um dos M neurônios. c) net = newlin(R,M, [0], LR) –A função newlin pode receber 4 parâmetros, contudo o significado do 3º parâmetro está fora do escopo do curso então ignore-o. O 4º parâmetro é a taxa de aprendizado que será utilizada durante o treinamento. Para usarmos o 4º parâmetro é necessário passar o 3º, portanto passe o valor default [0]. 1.2) sim – Após a criação do (M)ADALINE, podemos utilizá-lo através desta função. A forma mais simples de se usar é a seguinte, resp = sim(net,P);. Onde: net – é a estrutura que contém o (M)ADALINE criado pela função newlin. P – é uma matriz de dimensão NxK, onde cada coluna da matriz corresponde a um vetor de entrada e K corresponde ao número de padrões de entrada. resp – é a saída dos neurônios do (M)ADALINE contido em net para cada entrada contida em P. Sendo assim, resp será uma matriz do tipo MxK, aonde cada coluna de índice i corresponde à saída de cada neurônio para a entrada contida na coluna de índice i da matriz P. Por isso o número de colunas de resp é igual ao de P. O funcionamento é análogo ao do Perceptron. A função sim retorna a função de ativação de cada neurônio. que é equivalente a, resp = [net.b{1} net.IW{1,1}] * [ones(1,size(P,2));P] ;. 1.3) train – Esta função treina o (M)ADALINE para executar uma determinada tarefa. Apesar de poder ser chamada de maneiras diferentes, a forma mais simples é, netTreinada = train(net,P,T). onde net e P são definidos como nos itens anteriores e T é uma matriz MxK aonde cada coluna contém a saída desejada para a entrada contida na mesma coluna na matriz P. A função train retorna a nova rede treinada. O treinamento é um processo iterativo e contém alguns parâmetros, como taxa de aprendizado, número máximo de iterações e erro mínimo desejado. O número máximo de iterações pode ser configurado no próprio net através do campo net.trainParam. epochs (número de épocas), basta modificarmos este campo para o valor máximo de iterações desejado. O erro mínimo desejado pode ser modificado no campo net.trainParam.goal, o valor deste campo é o valor máximo que o erro quadrático pode assumir. A taxa de aprendizado pode ser configurada no momento de criação do (M)ADALINE, como visto no comando newlin. 2) O que é o Adaline? Explique o seu funcionamento em relação ao perceptron. 3) Como é feito o ajuste dos pesos no Adaline? Explique o processo e comente a função de ajuste. 4) Seja os padrões de entrada (P) e respectivos valores desejados (t) a serem classificados: O código em Matlab a seguir implementa um Adaline para realizar esta classificação. Analise o código e depois teste-o. P = [2 1 -2 -1;2 -2 2 1]; T = [0 1 0 1]; net = newlin(P,T); net.trainParam.epochs = 10; net = train(net,P,T); weights = net.iw{1,1} bias = net.b(1) y = sim(net, P) erro = T - sim(net,P) A rede deve ser testada varias vezes utilizando k = 10, 50, 100 e 200 ciclos. Calcule os erros obtidos para cada valor de k. Para qual número de ciclos são obtidos os melhores resultados? Justifique a sua resposta. 5) O código em Matlab a seguir implementa novamente o Adaline para realizar a mesma classificação do exercício anterior. Teste novamente o código. P = [2 1 -2 -1;2 -2 2 1]; T = [0 1 0 1]; net = newlin(P,T); net.trainParam.epochs = 10; net.trainParam.goal= 0.1; net = train(net,P,T); weights = net.iw{1,1} bias = net.b(1) y = sim(net, P) erro = T - sim(net,P) A rede deve ser testada varias vezes utilizando k = 10, 50, 100 e 200 ciclos. Para cada valor de k utilize metas de erro iguais a 0.1 ,0.01 e 0.001. Calcule os erros obtidos para cada valor de k e meta de erro. Para qual número de ciclos X metas de erros são obtidos os melhores resultados? Justifique a sua resposta. 6) Uma cidade é cortada por um rio que provoca inundações sistemáticas. Diante desta situação é necessário implementar um sistema de previsão e alerta que possa fornecer os níveis previstos para um ponto de controle na cidade com antecedência de 12 horas. Desenvolver uma rede Adaline (com função de ativação linear) para realizar a previsão do nível de água no posto de controle do rio que corta uma cidade. Considerar como entrada os níveis nos três postos de medição definidos e como saída o nível de água dentro da cidade 12 horas depois. As seis medições de nível de água que serão utilizadas para o treinamento do Adaline são apresentadas a seguir: Exemplos Posto1(m) Posto 2(m) Posto 3(m) Posto cidade (m) 1 0,3 0,1 0,1 0,19 2 0,03 0,02 0 0,11 3 1 1 1 0,6 4 0,4 0,15 1 0,31 5 0,9 0,8 0,8 0,52 6 0,5 0,5 0,9 0,39 a) Qual a arquitetura do Adaline para resolver este problema? c) Qual a previsão do nível a ser atingido na cidade quando os postos 1, 2 e 3 indicarem respectivamente d) Treine a rede Adaline estabelecendo um número máximo de ciclos igual a 12. Calcule os erros obtidos. O número de ciclos foi suficiente paratreinar a rede? e) Após o treinamento realizar a previsão do nível a ser atingido na cidade quando os postos 1, 2 e 3 indicarem respectivamente 0,70 m, 0,60m e 0,85m. Utilize os pesos determinados no fim do 12º ciclo. f) Treine a rede Adaline estabelecendo um número máximo de ciclos igual a 150. Calcule os erros obtidos. O número de ciclos foi suficiente para treinar a rede? g) Após o treinamento realizar a previsão do nível a ser atingido na cidade quando os postos 1, 2 e 3 indicarem respectivamente 0,70 m, 0,60m e 0,85m. Utilize os pesos determinados no fim do 150º ciclo. 7) Treine um neurônio Adaline de forma que este aprenda a função ) abaixo. A rede deve ser treinada varias vezes utilizando k = 10, 50, 100 e 200 ciclos. Calcule os erros obtidos para cada valor de K. Para qual número de ciclos são obtidos os melhores resultados? Justifique a sua resposta. Exemplos x1 x2 y 1 0,2 0,3 0,13 2 0,1 0,4 0,17 3 0,4 0,3 0,25 4 0,11 0,9 0,822 5 0,84 0,6 0,1065 6 0,1 0,2 0,05 7 0,6 0,2 0,4 8 0,2 0,2 0,08 9 0,7 0,8 1,13 10 0,1 0 0,01
Compartilhar