














Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Aula 8 - Redes Neurais Artificiais
Tipologia: Notas de aula
1 / 22
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Redes Neurais Artificiais são técnicas computacionais que apresentam um modelo matemático inspirado na estrutura neural de organismos inteligentes e que adquirem conhecimento através da experiência. Uma grande rede neural artificial pode ter centenas ou milhares de unidades de processamento; já o cérebro de um mamífero pode ter muitos bilhões de neurônios. O sistema nervoso é formado por um conjunto extremamente complexo de células, os neurônios. Eles têm um papel essencial na determinação do funcionamento e comportamento do corpo humano e do raciocínio. Os neurônios são formados pelos dendritos, que são um conjunto de terminais de entrada, pelo corpo central, e pelos axônios que são longos terminais de saída.
Constituíntes da célula neuronal
Os neurônios se comunicam através de sinapses. Sinapse é a região onde dois neurônios entram em contato e através da qual os impulsos nervosos são transmitidos entre eles. Os impulsos recebidos por um neurônio A, em um determinado momento, são processados, e atingindo um dado limiar de ação, o neurônio A dispara, produzindo uma substância neurotransmissora que flui do corpo celular para o axônio, que pode estar conectado a um dendrito de um outro neurônio B. Em média, cada neurônio forma entre mil e dez mil sinapses. O cérebro humano possui cerca de 10 E11 neurônios, e o número de sinapses é de mais de 10 E14, possibilitando a formação de redes muito complexa.
Qualquer histórico sobre Redes Neurais Artificiais deve começar pelas três publicações iniciais, desenvolvidas por: McCulloch e Pitts (1943), Hebb (1949), e Rosemblatt (1958). Estas publicações introduziram o primeiro modelo de redes neurais
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Organização em camadas.
Usualmente as camadas são classificadas em três grupos:
Uma rede neural é especificada, principalmente pela sua topologia, pelas características dos nós e pelas regras de treinamento. A seguir, serão analisados os processos de aprendizado.
A propriedade mais importante das redes neurais é a habilidade de aprender de seu ambiente e com isso melhorar seu desempenho. Isso é feito através de um processo iterativo de ajustes aplicado a seus pesos, o treinamento. O aprendizado ocorre quando a rede neural atinge uma solução generalizada para uma classe de problemas.
Um fator importante é a maneira pela qual uma rede neural se relaciona com o ambiente, abaixo apresentam-se as maneiras possíveis para esses relacionamento:
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
O treinamento supervisionado do modelo de rede Perceptron, consiste em ajustar os pesos e os thresholds de suas unidades para que a classificação desejada seja obtida. Quando um padrão é inicialmente apresentado à rede, ela produz uma saída. Após medir a distância entre a resposta atual e a desejada, são realizados os ajustes apropriados nos pesos das conexões de modo a reduzir esta distância. Este procedimento é conhecido como Regra Delta.
Regra Delta
Deste modo, temos o seguinte esquema de treinamento.
4.1. Atualizar pesos: Wnovo := W anterior + neta E X
Onde:
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Como resultado, padrões de entrada com estruturas similares, fornecidos do mundo externo, que levem a saídas diferentes não são possíveis de serem mapeados por redes sem representações internas, isto é, sem camadas intermediárias. Um exemplo clássico deste caso é a função ou-exclusivo (XOR). Minsky e Papert analisaram matematicamente o Perceptron e demostraram que redes de uma camada não são capazes de solucionar problemas que não sejam linearmente separáveis. Como não acreditavam na possibilidade de se construir um método de treinamento para redes com mais de uma camada, eles concluíram que as redes neurais seriam sempre suscetíveis a essa limitação. Contudo, o desenvolvimento do algoritmo de treinamento backpropagation, por Rumelhart, Hinton e Williams em 1986, mostrou que é possível treinar eficientemente redes com camadas intermediárias, resultando no modelo de Redes Neurais Artificiais mais utilizado atualmente, as redes Perceptron Multi-Camadas (MLP), treinadas com o algoritmo backpropagation. Nessas redes, cada camada tem uma função específica. A camada de saída recebe os estímulos da camada intermediária e constrói o padrão que será a resposta. As camadas intermediárias funcionam como extratoras de características, seus pesos são uma codificação de características apresentadas nos padrões de entrada e permitem que a rede crie sua própria representação, mais rica e complexa, do problema.
Durante o treinamento com o algoritmo backpropagation, a rede opera em uma sequência de dois passos. Primeiro, um padrão é apresentado à camada de entrada da rede. O resultado obtido flui através da rede, camada por camada, até que a resposta seja produzida pela camada de saída. No segundo passo, a saída obtida é comparada à saída desejada para esse padrão particular. Se esta não estiver correta, o erro é calculado. O erro é propagado a partir da camada de saída até a camada de entrada, e os pesos das conexões das unidades das camadas internas vão sendo modificados conforme o erro é retropropagado.
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Esquema de Treinamento Backpropagation
As redes que utilizam backpropagation trabalham com uma variação da regra delta, apropriada para redes multi-camadas: a regra delta generalizada. A regra delta padrão essencialmente implementa um gradiente descendente no quadrado da soma do erro para funções de ativação lineares. Redes sem camadas intermediárias, podem resolver problemas onde a superfície de erro tem a forma de um parabolóide com apenas um mínimo. Entretanto, a superfície do erro pode não ser tão simples, como a ilustrada na figura abaixo, e suas derivadas mais difíceis de serem calculadas. Nestes casos devem ser utilizadas redes com camadas intermediárias. Ainda assim, as redes ficam sujeitas aos problemas de mínimos locais.
Exemplo de superfície de erro.
A regra delta generalizada funciona quando são utilizadas na rede unidades com uma função de ativação semi-linear, que é uma função diferenciável e não decrescente. Uma função de ativação amplamente utilizada, é a função sigmoid. A taxa de aprendizado é uma constante de proporcionalidade no intervalo [0,1], pois este procedimento de aprendizado requer apenas que a mudança no peso seja proporcional à neta. Entretanto, o verdadeiro gradiente descendente requer que sejam tomados passos infinitesimais. Assim quanto maior for essa constante, maior será a mudança nos pesos, aumentando a velocidade do aprendizado, o que pode levar à uma oscilação do modelo na superfície de erro. O ideal seria utilizar a maior taxa de aprendizado possível que não levasse à uma oscilação, resultando em um aprendizado mais rápido. O treinamento das redes MLP com backpropagation pode demandar muitos passos no conjunto de treinamento, resultando um tempo de treinamento considerávelmente longo. Se for encontrado um mínimo local, o erro para o conjunto de treinamento pára de diminuir e estaciona em um valor maior que o aceitável. Uma maneira de aumentar a taxa de aprendizado sem levar à oscilação é modificar a regra delta generalizada para incluir o termo momentum, uma constante que determina o efeito das mudanças passadas dos pesos na direção atual do movimento no espaço de pesos. Desta forma, o termo momentum leva em consideração o efeito de mudanças anteriores de pesos na direção do movimento atual no espaço de pesos. O termo momentum torna-se útil em espaços de erro que contenham longas gargantas, com curvas acentuadas ou vales com descidas suaves, como o apresentado na figura acima.
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
YD=[-1 1 1 -1]; %Saída desejada (target) Y=[1 -1 -1 1]; %Parâmetro utilizado no treinamento
W1=[0.1 0.1 0.1]; W2=[0.1 0.1 0.1 0.1];
ETA=0.5; %Taxa de aprendizado
EPOCH=1; %Definição da variável marcadora de épocas ERRO=0; %Definição da variável erro
texto['Treinando época numero:']; %Apenas mostra esta fase na tela %durante treinamento
while (Y(1)>=0) | (Y(2)<=0) | (Y(3)<=0) | (Y(4)>=0) %Critério de parada
H=W1*XD'; %Valores de entrada sendo multiplicados pelos pesos
U1=XD(:,1); %Valores que serao passados para a ultima camada U2=tanh(H); U3=XD(:,2); U4=XD(:,3); U=[U1 U2' U3 U4];
V=W2*U'; %Vetor de entrada da ultima camada
Y=tanh(V); %Aplicação da tangente hiperbólica no vetor
DELTA22=(YD-Y); %Calculo dos deltas e pesos da segunda camada Dx1Dy=1-Y.^2; %para a próxima época DELTA2=DELTA22.Dx1Dy; W2=W2+ETADELTA22*U;
Dx2Dy=1-U2.^2; %Calculo dos deltas e pesos da camada oculta DELTA11=DELTA22W2(2).Dx2Dy; %para a próxima época DELTA1=ETADELTA11XD; W1=W1+DELTA1;
ERRO=(YD-Y); %Calculo do erro simples e erro quadrático para ERROQUADRATICO=(ERRO.^2); %ser analisado em um gráfico de saída ERROQUADRATICO=sum(ERROQUADRATICO); ERROEPOCH(EPOCH)=ERROQUADRATICO; QEPOCAS(EPOCH)=EPOCH;
texto EPOCH=EPOCH+ end
%Apresentação dos resultados obtidos
W W ERRO EPOCH Y
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
plot(QEPOCAS,ERROEPOCH) xlabel('Épocas') ylabel('Somatória do ERRO Quadrático') title('ERRO da função Xor') grid
pause close(figure(1))
Para eta=0.
W1 =
0.7490 0.7490 0.
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Y =
-0.0336 0.2801 0.2801 -0.
Para eta=0.
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
Para eta=0.
W1 =
2.7562 2.7562 2.
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
7.1 – Considere a função y(x)=x^3+1 definida sobre o intervalo x ∈ [-1, 1] e representada na figura abaixo. Usando uma linguagem de programação executável, implemente um aproximador com três camadas de neurônios. Assumindo que todos possuem função de ativação g(h)=tanh(h) e que o neurônio na saída tem um ganho adicional de 3, ou seja para este, g(h)=3*tanh(h). Como tabela de treinamento, utilize os valores calculados da função y(x) em, por exemplo, 21 pontos simetricamente distribuídos sobre o intervalo x ∈ [-1, 1].
% Projeto 2 - Exercício 7.1 do Capitulo 7 do livro do Prof. Kovacs % "Redes neurais Artificiais - Fundamentos e Aplicações"
X Y
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
%Este projeto implementa um aproximador de funções, neste caso a função %Y(X)=X^3+1, através de uma Rede Neural Artificial de 3 camadas de neurônios %assumindo que todos os neurônios possuem função tangente hiperbólica de %ativação e que o ultimo neurônio apresenta uma saída com ganho 3.
%****************** Definição das Variáveis *****************************
max=21; %Variáveis de apoio peso=3;
XD=linspace(-1,1,max); %Definição da variável X, eh uma XD=[XD;ones(1,max)*-1]; %variável linearmente espacada em 21 pontos
YD=XD(1,:).^3+1; %Definição de Y, onde Y(X)=X^3+ YD=YD';
W11=rand(1,2); %Definição dos pesos das 3 camadas da rede W12=rand(1,2); %Aqui, utilizou-se a função randomica rand
W13=rand(1,2);
W21=rand(1,4); W22=rand(1,4); W23=rand(1,4);
W31=rand(1,4);
ETA=0.2; %Fator de aprendizado
BETA1=0.5; %Valores beta que multiplicam a tanh BETA2=0.8; BETA3=0.1; EPOCH=1; %Variável que define o numero de épocas
EPOCHMAX=6000; %Quantidade máxima de épocas para o treinamento ERRO=1; %Variável erro ERROMINIMO=0.001; %Erro minimo esperado
%****************** Corpo do Programa - Treinamento da Rede *************
while ERRO>ERROMINIMO | EPOCH<EPOCHMAX %Como critério de parada adotou-%se o erro minimo e %o numero maximo de épocas
H11=W11*XD; %O corpo do programa assemelha-se com o exercicio
U11=tanh(BETA1H11); %numero 5.1 e 5.2, porem com a diferenca que %aquelas mesmas etapas tem que ser repetidas três vezes H12=W12XD; U12=tanh(BETA1*H12);
H13=W13XD; U13=tanh(BETA1H13);
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
DELTA=DELTA21W21(3)+DELTA22W22(3)+DELTA23W23(3); DELTA1113=DELTA.Dx3Dy; DELTA113=ETADELTA1113XD';
%************** Calculo dos pesos reajustados ********************
W31=W31+DELTA311; W21=W21+DELTA221; W22=W22+DELTA222; W23=W23+DELTA223; W11=W11+DELTA111; W12=W12+DELTA112; W13=W13+DELTA113;
%************* Calculo do erro quadrático para analise dos %resultados ********
ERRO=(YD'-Y);
ERROQUADRATICO=(ERRO.^2); ERROQUADRATICO=sum(ERROQUADRATICO); ERROEPOCH(EPOCH)=ERROQUADRATICO; QEPOCAS(EPOCH)=EPOCH;
EPOCH=EPOCH+ end
%****************** Apresentação de graficos para melhor visualizacao dos %resultados *******
figure(1) plot(QEPOCAS,ERROEPOCH) xlabel('Épocas') ylabel('Somatória do ERRO Quadrático') title('ERRO da função Xor') grid
figure(2) plot(XD,YD,'r') hold on plot(XD,Y,'b') xlabel('Valor da variável independente X') ylabel('Y = 3 * tanh(X)') title('GRAFICO DO APROXIMADOR DA FUNCAO TANH(X)') text(-0.4,1.9,'Red = Real / Blue = Aproximador') grid
EPOCH =
6000
Engenharia Elétrica - Ênfase em Computação - Profª Mariana
W31 =
3.7655 2.6974 -1.9728 -2.
W21 =
1.1749 0.9308 3.2170 1.
W22 =
1.7677 1.5634 -0.0071 -2.
W23 =
-1.6735 -0.8877 0.1173 1.
W11 =
2.5120 -1.
W12 =
1.9413 -0.
W13 =
2.3660 2.
ERRO =
Columns 1 through 7
0.0178 0.0351 0.0223 0.0079 0.0039 0.0090 0.
Columns 8 through 14
0.0218 0.0211 0.0151 0.0060 -0.0028 -0.0078 -0.
Columns 15 through 21
0.0032 0.0183 0.0323 0.0342 0.0183 0.0040 0.