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 1010 neurônios cada um conectado com cerca de 104 outros Ativação de um neurônio ativo Sinal de Saída inativo Nível de Entrada limiar 0 Aprendizagem em sistemas biológicos 0 Vetores de características e espaços de estados Funções discriminantes Técnicas de classificação: vizinho mais próximo Medidas de distância entre vetores • Distância de Hamming = • Distância Euclidiana = (| x y |) i i 2 n ( xi y ) i i 1 Classificadores lineares • 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 ij • 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) / ( j P(X | Gj) . P(Gj) ) Outras técnicas estatísticas • EM algorithm: Expectation-Maximisation • Support Vector Machines Perceptrons Modelando um único neurônio x0 w0 x1 w1 y x2 w2 w3 x3 ... wn x4 n y f wi x i i 0 Funções de ativação Funções de ativação Funções de ativação Funções de ativação 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 se saída=0, mas devia ser 1 se saída=1, mas devia ser 0 wi(t+1) =n wi(t) wi(t+1) = wi(t)+xi(t) wi(t+1) = wi(t)-xi(t)i i 0 y f wi x 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 1 1 1 0 1 1 1 0 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: n1 y pj f wi xi i 0 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) k pk wjk