730 likes | 878 Views
Redes Neurais. DSC/CEEI/UFCG Professor : Herman M Gomes. Bibliografia. Haykin S. Neural Networks: A Compreensive Foundation. Macmillan College Publishing, 1994. Kovacs Z.L. Redes Neurais: Fundamentos e Aplicações. Edição Acadëmica, 1996.
E N D
Redes Neurais DSC/CEEI/UFCG Professor : Herman M Gomes
Bibliografia • Haykin S. Neural Networks: A Compreensive Foundation. Macmillan College Publishing, 1994. • Kovacs Z.L. Redes Neurais: Fundamentos e Aplicações. Edição Acadëmica, 1996. • McClelland J.L., Rumelhart D.E. Explorations in Parallel Distributed Processing. The MIT Press. 1988. • R. Beale, T. Jackson. Neural Computing: An Introduction. IOP Publishing, 1990. • R. Hetch-Nielsen. “Neurocomputing”. Addison-Wesley Publishing Company,1990. • P. K. Simpson. “Artificial Neural Systems”. Pergamon Press, 1990. • P. D. Wasserman. “Neural Computing: Theory and Pratice”. Van Nostrand Reinhold, 1989. • C. Bishop. Neural Networks for Pattern Recognition.
Introdução • O que é computação?
Funções computáveis e não computáveis • Funções lineares e não lineares
A estrutura do cérebro • aproximadamente 1010neurônios • cada um conectado com cerca de 104outros
Ativação de um neurônio ativo Sinal de Saída inativo Nível de Entrada limiar 0
Medidas de distância entre vetores • Distância de Hamming = • Distância Euclidiana =
Técnicas estatísticas: classificação Bayesiana • Importante técnica analítica que facilita o entendimento da natureza estatística dos dados • Baseia-se na teoria estatística de probabilidades e probabilidades condicionais • Em reconhecimento de padrões, medições são feitas sobre os padrões (componentes do vetor de características) a fim de se obter uma estimativa da probabilidade de um padrão pertencer a uma classe particular. • Mais formalmente, seja Gi (i=1,2,...,n) a lista de possíveis grupos ou classes, define-se a probabilidade de um padrão pertencer a uma classe como sendo P(Gi), onde 0 P(Gi) 1
O uso de probabilidades condicionais permite a inclusão de conhecimento prévio sobre o problema de forma a melhorar a estimativa de um padrão pertencer a uma dada classe • Dados dois eventos X e Y, a probabilidade condicional é definida como sendo a probabilidade do evento Y dada a ocorrência do evento X: P(Y |X) • Em reconhecimento de padrões, o conhecimento prévio que é combinado com a função de probabilidade da classe são as medições de dados obtidas para o padrão, ou seja, o vetor de características X = (x1, x2 , ..., xn ) • Assim, o problema de classificação de padrões pode ser enunciado como: Considerando um conjunto de medições, X, qual é a probabilidade dele pertencer à classe Gi , ou seja P(Gi|X) ?
Regra de Bayes • Decida por x pertencer à classe i se: P(Gi |X) > P(Gj|X) para i=1,2,...,n i j • Como estimar as probabilidades condicionais? • Fazendo suposições sobre os dados de padrões • Descrevendo distribuições desconhecidas através de modelos • Dado que se sabe que o padrão deva pertencer a um dos n grupos, então define-se a probabilidade de se se obter aquele padrão em cada um dos grupos P(X | Gi) • P(Gi |X) = P(X | Gi ) . P(Gi) / ( jP(X | Gj) . P(Gj) )
Outras técnicas estatísticas • EM algorithm: Expectation-Maximisation • Support Vector Machines
x0 w0 x1 w1 y w2 x2 w3 ... x3 wn x4 Perceptrons • Modelando um único neurônio
Aprendizagem do perceptron 1. Inicializar pesos e limiar Definir wi(t), (0 i n) como o peso da entrada i no tempo t e w0 como sendo -, o limiar, e x0=1 Ajustar wi(0) com pequenos valores randômicos 2. Apresentar entradas x0, x1, ..., xn e saída desejada d(t) 3. Calcular a saída do neurônio 4. Adaptar os pesos se correto wi(t+1) = wi(t) se saída=0, mas devia ser 1 wi(t+1) = wi(t)+xi(t) se saída=1, mas devia ser 0 wi(t+1) = wi(t)-xi(t)
Modificações da adaptação dos pesos 4. Adaptar os pesos se correto wi(t+1) = wi(t) se saída=0, mas devia ser 1 wi(t+1) =wi(t)+xi(t) se saída=1, mas devia ser 0 wi(t+1) =wi(t)-xi(t) onde 0 1 controla a taxa de adaptação do peso 4. Adaptar os pesos - regra delta de Widrow-Hoff = d(t) - y(t) wi(t+1) = wi(t) + xi(t) Neurônios com este algoritmo de aprendizagem: ADALINE Uso de entradas bipolares acelera o treinamento, por que?
Limitações dos perceptrons de 1 camada • Foi provado (Rosemblatt) que se for possível classificar linearmente um conjunto de entradas, então uma rede de perceptrons pode aprender a solução • Um perceptron tenta encontrar uma reta que separa as classes de padrões • Porém há situações em que a separação entre as classes precisa ser muito mais complexa do que uma simples reta, por exemplo, o problema do XOR: linearmente inseparável X Y Z 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1
Perceptron de múltiplas camadas • Como resolver o problema de ser incapaz de resolver problemas linearmente inseparáveis com o perceptron? • Uma solução seria usar vários perceptrons, cada qual encarregado de separar várias pequenas seções linearmente separáveis das entradas, e combinar as saídas em outro perceptron que daria o resultado da classificação final
Perceptron de múltiplas camadas • O problema com este arranjo em camadas é que os neurônios não podem aprender usando a aprendizagem do perceptron • Os neurônios da primeira camada recebem as entradas diretamente, mas os da segunda camada não conhecem o estado das entradas reais, apenas o resultado do processamento pela 1a camada • Como o aprendizado de perceptrons corresponde ao reforço de conexões entre entradas ativas e neurônios ativos, seria impossível reforçar as partes corretas da rede, uma vez que as entradas são mascaradas pelas camadas intermediárias
A solução • Usar função de ativação contínua ao invés de binária permite ter-se uma idéia mais realística das entradas, por exemplo, sigmóide ou semi-linear. f(net) = 1 / (1+ e -z . net)
Arquitetura Saída Entrada Escondida
A solução • Algoritmo de aprendizagem: 1. Iniciar pesos e limiar para pequenos valores randômicos 2. Apresentar entrada e saída desejada Xp=x0,x1,...,xn-1, Tp=t0,t1,...,tm-1 3. Calcular as saídas da rede, cada camada produz: e passa os resultados como entradas para a próxima camada. As saídas da última camada são opj 4. Adaptar os pesos
Algoritmo de aprendizagem (backpropagation): 4. Adaptar os pesos, começar na camada de saída e prosseguir de trás para frente wij(t+1) = wij(t) + pj opj Para neurônios de saída: pj = z opj(1 -opj) (tpj - opj) Para neurônios de camadas escondidas pj = z opj(1 -opj) kpk wjk
Algoritmo backpropagation (prova): • Vamos definir a função de erro como sendo proporcional ao quadrado das diferenças entre as saídas reais e desejadas para todos os padres a serem aprendidos: • O objetivo final será minimizar esta função • A ativação de cada unidade j para um padrão p pode ser escrita como:
Algoritmo backpropagation (prova): • A saída do neurônio j é definida como: • Pela regra da cadeia, pode-se escrever a derivada da energia associada ao padrão p com respeito ao peso wij: • Substituindo (2) em (4):
Algoritmo backpropagation (prova): • Substituindo (2) em (4): • uma vez que: • exceto quando k=i, quando a expressão acima é igual a 1.
Algoritmo backpropagation (prova): • A mudança em erro pode ser definida como uma função da mudança nas entradas da rede para um certo neurônio: • Substituindo em (4): • Decrementar o valor da Energia, significa portanto tornar as mudanças de pesos proporcional a
Algoritmo backpropagation (prova): • Agora precisamos saber qual a expressão de para cada um dos neurônios, se soubermos isto poderemos reduzir a energia. • Usando (6) e pela regra da cadeia, podemos escrever: • Considerando o segundo termo acima e usando (3):
Algoritmo backpropagation (prova): • Considerando agora o primeiro termo de (9) e usando (1), podemos derivar Ep com relação a opj : • Portanto: o que é bastante útil para neurônios de saída, mas não para neurônios em camadas intermediárias, uma vez que suas saídas desejadas não são conhecidas
Algoritmo backpropagation (prova): • Assim, se um neurônio não está na camada de saída, pode-se escrever novamente pela regra da cadeia: também usando (2) e (6) e notando que a soma é cancelada uma vez que a derivada parcial não é zero para apenas um valor, como em (5).
Algoritmo backpropagation (prova): • Substituindo (14) em (9), finalmente chaga-se à função que representa a mudança no erro, com respeito aos pesos da rede: • A função acima é proporcional aos erros em neurônios subsequentes, assim o erro deve ser calculado nos neurônios de saída primeiro.
Algoritmo backpropagation (prova): • Usando a função sigmóide como função de ativação, tem-se:
Redes RAM-based e Goal Seeking Neurons (GSN) • Neurônio RAM • Dificuldades para implementar neurônios de McCulloch-Pitts • Primeiro proposto por Aleksander (1967), quando era denominado de SLAM (Stored Logic Adaptive Microcircuit) • As entradas, saídas e pesos são discretos (binários) • Adaptação através da mudança de conteúdos endereçáveis, ao invés dos pesos da conexão • Da mesma forma que em memórias RAM, existem terminais de endereçamento e terminais de dados
Neurônio RAM - características • Em geral, um neurônio RAM possui vários terminais de endereçamento, um terminal de dado de saída e outro de entrada, além de um terminal de controle para indicar o modo de operação • Os modos de operação de um neurônio RAM são: aprendizagem e uso
Neurônio RAM - características • Pode-se imaginar que os pesos das conexões entre neurônios do tipo RAM, seriam as potências de 2, associadas a cada terminal de entrada, para cálculo do endereço acessado • Por outro lado, alguns autores constumam denominar este tipo de neurônio como neurônio sem peso, uma vez que os pesos são fixos, não sendo utilizados durante o processo de adaptação da rede
Neurônio RAM - endereçamento e ativação • Sendo Xi=xi1, xi2,..., xic os terminais de entrada, zi1, zi2,..., zic os pesos escritos na forma de potências de 2 associados a cada entrada, a fórmula para calcular o endereço acessado pela entrada Xi será: • A função de ativação para o neurônio RAM é definida pela equação:
Neurônio PLN • Baseado no neurônio RAM, adicionando a possibilidade de um tratamento probabilístico (PLN=Probabilistic Logic Neuron) • A extensão feita ao neurônio RAM é incluir um terceiro valor lógico (indefinido), além de 0 e 1 • Quando o valor lógico indefinido é endereçado, a saída produzida tem uma certa probabilidade de produzir 1 e uma outra probabilidade (complementar) de produzir 0. • A interpretação deste novo valor lógico pode ser dada como uma condição de desconhecimento, sendo representado pelo símbolo u
Neurônio PLN - ativação • A função de saída do neurônio PLN é a seguinte: • O neurônio PLN requer o dobro da memória requerida pelo neurônio RAM, em função da inclusão do terceiro valor lógico • O papel do valor indefinido no neurônio PLN é fazer com que ele generalize
Neurônio GSN (Goal Seeking Neuron) • O neurônio GSN desenvolvido por Carvalho Filho em 1990 • Assim como o neurônio PLN, o neurônio GSN baseia-se no neurônio RAM • As diferenças entre o neurônio GSN e o neurônio PLN estão nos valores que eles podem propagar, e nos modos de operação • Um neurônio GSN pode armazenar {0,1,u}, e todos estes três valores podem também ser enviados a outros neurônios e recebidos • Dependendo do estado das entradas, pode-se acessar uma única célula ou um conjunto de células
Neurônio GSN - modos de operação • O neurônio busca por objetivos diferentes quando em modos ou estados diferentes. • Há três estados ou modos de operação: • Validação: o neurônio valida a possibilidade de aprender uma saída desejada sem destruir informações aprendidas anteriormente • Aprendizagem: o neurônio seleciona um endereço e armazena a saída desejada • Uso: o neurônio produz a melhor saída com base na aprendizagem
Neurônio GSN - estrutura • Além das estruturas básicas do neurônio RAM, o neurônio GSN possui terminais de entradas desejadas: di1, di2,..., dic, os quais informam qual entrada satisfaz o objetivo procurado • Quando há valores indefinidos presentes nos terminais de entrada, tem-se acesso a um conjunto de endereços possíveis (conjunto endereçável) ao invés de um único endereço
Neurônio GSN - endereçamento • O neurônio GSN exemina o conjunto endereçável para escolher o melhor conteúdo para o objetivo procurado • O endereço fixo para as entradas com valores definidos (0,1) é dado por: • O conjunto endereçável é dado por:
Neurônio GSN - estado de validação • No estado de validação o neurônio procura produzir uma saída indefinida, representando a possibilidade de aprender qualquer saída saída desejada • Caso não seja possível encontrar um valor indefinido, então o neurônio pode produzir e aprender apenas um valor binário