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
Aprendizagem em sistemas biológicos
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 =
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 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) / ( j P(X | Gj) . P(Gj) )
Outras técnicas estatísticas EM algorithm: Expectation-Maximisation Support Vector Machines
Perceptrons Modelando um único neurônio ... y w0 w1 w2 w3 wn x0 x1
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 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 1 1 1 0 1 1 1 0 1 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) k pk wjk